From 1d8e8b7b749e62a937a325734d6e15e15d23e9ae Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 17 Jul 2018 13:09:28 -0400 Subject: [PATCH 001/289] Initial partial edit --- spec/cimi_context.txt | 274 --------------------------- spec/cimi_statement.txt | 399 ++++++++++++++++++++++++++++++++-------- spec/cimi_topic.txt | 66 ------- 3 files changed, 320 insertions(+), 419 deletions(-) diff --git a/spec/cimi_context.txt b/spec/cimi_context.txt index 84112103..8aa10508 100644 --- a/spec/cimi_context.txt +++ b/spec/cimi_context.txt @@ -5,201 +5,6 @@ Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, CodeSystem: MTH = http://ncimeta.nci.nih.gov // -Element: StatementContext -Based on: NonIndependent -Concept: TBD -Description: "Compositional and reusable grouping of clinical statement attributes that provides the context for the topic of a clinical statement. -The StatementContext class aligns with the SNOMED CT Situations with Explicit Context (SWEC) Concept Model. The StatementContext provides the expressivity required to specify that an act was performed or not performed or that a finding was asserted to be present or absent for the given subject of information. It also often holds provenance information relevant to the context of the clinical statement. It is important to note that by default the context applies to the conjunction of the attribute specified in the statement. For instance, if a clinical statement has a topic describing a rash on left arm and a context of 'absent', then the statement states that the subject of interest did not have a rash on the left arm but might have had one on the right arm." -1..1 ContextCode -0..1 Encounter // clinical statements are often associated with specific encounters - - Element: ContextCode - Concept: TBD - Description: "A code representing the ontological status of the statement, e.g., whether it exists, does not exist, is planned, etc. - Attribute aligns with the SNOMED CT Situation with Explicit Context (SWEC) Concept Model context attributes: 'Finding context (attribute)' (SCTID: 408729009) and 'Procedure context (attribute)' (SCTID: 408730004). The range allowed for this attribute shall be consistent with the SNOMED CT concept model specification for SWEC." - Value: CodeableConcept - -Element: ActionContext -Based on: StatementContext -Description: "The ontological status of the intervention, e.g., performed/not performed, requested/not requested." -0..* Reason - - Element: Reason - Concept: MTH#C0566251 - Description: "The justification for an action or non-action, conclusion, opinion, etc." - Value: string or CodeableConcept or ref(ClinicalStatement) - -Element: PerformedContext -Based on: ActionContext -Concept: TBD -Description: "ActionContext indicating actual performance or execution of a healthcare-related action, e.g., 3rd dose of Hepatitis B vaccine administered on Dec 4th 2012, appendectomy performed today." -1..1 OccurrenceTimeOrPeriod // when the action took place -0..* Participant -1..1 Status should be from http://hl7.org/fhir/ValueSet/event-status -0..1 Method -0..* RelatedRequest -//0..1 EnactsPlan -//0..1 FulfillsOrder -0..1 ref(Facility) -0..1 Outcome // e.g., AdverseEvent - - Element: Participant - Concept: MTH#C1550369 - Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." - Value: ref(EntityOrRole) - 0..1 ParticipationType // role - 0..1 ParticipationPeriod - 0..1 OnBehalfOf - - Element: ParticipationType - Concept: MTH#C1553854 - Description: "The role played by the participant engaged in the action, for example, as the attending physician, surgical assistant, etc." - Value: CodeableConcept from FHIR/v3-ParticipationType - - Element: ParticipationPeriod - Concept: TBD - Description: "The point in time or span of time the participant is involved." - Value: TimePeriod - - Element: Method - Concept: TBD - Description: "The technique used to carry out an action, for example, the specific imaging technical or assessment vehicle." - Value: CodeableConcept // TODO: limit to a procedure code - - Element: RelatedRequest - Concept: TBD - Description: "The proposal, order, or plan that is partly or wholly fulfilled by the performance of this act." - Value: ref(ActionRequestedStatement) - - /* - Element: EnactsPlan - Concept: TBD - Description: "The plan that is partly or wholly enacted by the performance of this act." - Value: ref(ActionRequestedStatement) - - Element: FulfillsOrder - Concept: TBD - Description: "The order that is partly or wholly enacted by the performance of this act." - Value: ref() - */ - Element: Outcome - Concept: TBD - Description: "The result of performing an action or behavior, for example, an adverse reaction or new finding." - Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/procedure-outcome - 0..* ref(ClinicalStatement) - - -Element: NotPerformedContext -Based on: ActionContext -Concept: TBD -Description: "A record that a clinical act was not performed at a certain time or during a stated period of time, particularly when there might be an expectation of performing such an act, for example, if a vaccination is not given because of parental objection. Do not use this context if the act was initiated or started but aborted or cancelled." -0..1 RelatedRequest -1..1 NonOccurrenceTimeOrPeriod - - -Element: RequestedContext -Concept: MTH#C1705178 -Based on: ActionContext -Description: "An order for something to take place." -1..1 Status should be from http://hl7.org/fhir/ValueSet/request-status -1..1 RequestIntent -0..1 ExpectedPerformanceTime -0..1 ExpectedPerformerType -0..1 ExpectedPerformer -0..1 ExpectedMethod -0..1 PriorityRank should be from http://hl7.org/fhir/ValueSet/request-priority -0..1 PerformerInstructions -0..1 PatientInstructions -0..1 CommunicationMethod - - Element: RequestIntent - Concept: TBD - Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." - Value: code from http://hl7.org/fhir/ValueSet/request-intent - - Element: ExpectedPerformanceTime - Concept: TBD - Description: "When an action should be done. If the action is a series or recurs (e.g. daily blood sugar testing in the morning) then a Timing can be used to describe the periodicity." - Value: dateTime or date or TimePeriod or Timing - - Element: ExpectedPerformerType - Concept: TBD - Description: "What type of party should carry out the testing." - Value: CodeableConcept // what ValueSet?? - - Element: ExpectedPerformer - Concept: TBD - Description: "Who should carry out the tests. For example, the patient or caregiver." - Value: ref(Entity) or ref(Organization) - - Element: ExpectedMethod - Concept: TBD - Description: "The method that should be used to carry out the action." - Value: ref(Method) - - Element: PerformerInstructions - Concept: TBD - Description: "Information for the performer of the test, if needed." - Value: string - - Element: PatientInstructions - Concept: TBD - Description: "Information for the patient, such as, where to get the test, how to prepare for the test, etc." - Value: string - - Element: CommunicationMethod - Concept: TBD - Description: "This is the method the provider used to communicate. Examples include: Written, Telephoned, Verbal, Electronically Entered, Policy, Service Correction, Duplicate, etc. 'Code indicating the origin of the prescription.' - NCPDP Telecommunication (Field 419-DJ, Data Dictionary 201104). Possible values include: Written; Telephone; Electronic; Facsimile; Pharmacy; Not Known." - Value: CodeableConcept - -Element: RequestedAgainstContext -Concept: TBD -Based on: ActionContext -Description: "Represents a recommendation or order from a practitioner or clinical decision support system to NOT perform an act." - - -Element: FindingContext -Based on: StatementContext -Concept: SCT#410514004 -Description: "The base class for representing the ontological status of a finding, e.g., present, absent, goal, risk, expectation, etc. This class aligns with the SNOMED Situation with Explicit Context." - - -Element: AssertionContext -Based on: FindingContext -Concept: TBD -Description: "The parent class of contexts that can associate with AssertionTopic and its subclasses." - -Element: PresenceContext -Based on: AssertionContext -Concept: SCT#410515003 -Description: "PresenceContext indicates that the finding in question exists or is present to some level of certainty. -For example, if the finding involves a myocardial infarction, the presence context implies that cardiac arrest has (or may have) taken place. Note that the name Presence is used rather than Present to prevent confusion with the temporal meaning of present." - ContextCode from PresenceContextVS -1..1 VerificationStatus -0..1 Onset -0..1 Abatement -0..1 Certainty - - Element: VerificationStatus - Concept: TBD - Description: "Whether an assessment has been confirmed by testing or observation. - CIMI Alignment: This attribute corresponds to FindingContext.status, but has been defined to align with FHIR. In AllergyIntolerance, the type is code." - Value: CodeableConcept - - Element: Onset - Concept: LNC#85585-8 - Description: "The beginning or first appearance of a mental or physical disorder." - Value: dateTime or Age or TimePeriod or Range or string - - Element: Abatement - Concept: LNC#88878-4 - Description: "The end, remission or resolution." - Value: dateTime or Age or boolean or TimePeriod or Range or string - - Element: Certainty - Concept: TBD - Description: "The degree of confidence in a conclusion or assertion." - Value: CodeableConcept Element: ConditionPresenceContext Based on: PresenceContext @@ -247,88 +52,9 @@ Description: "The context for a condition that is known, suspected, or possibly Concept: TBD Description: "The full staging information" Value: ref(Observation) - - Element: RecordedContext - Based on: FindingContext - Concept: TBD - Description: "Context for recording a finding, used to indicate an evaluation has been made." - ContextCode is SCT#424975005 "Record Entity" - 0..1 Interpretation - 1..1 FindingStatus - 0..1 RelevantTime // ClinicallyRelevantTime isn't a good name when it comes to employment and other life history events - - Element: Interpretation - Concept: MTH#C0420833 - Description: "A clinical interpretation of a finding (applies to both assertions and observation)." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/observation-interpretation if covered - - Element: FindingStatus - Concept: TBD - Description: "Indicates whether the finding is preliminary, amended, final, etc." - Value: code from http://hl7.org/fhir/ValueSet/observation-status - - Element: RelevantTime - Concept: TBD - Description: "The time or time period that the finding addresses. - The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." - Value: dateTime or TimePeriod - - Element: ObservationContext - Based on: RecordedContext - Concept: TBD - Description: "Context for recording an evaluation result, used to indicate an evaluation has been made." - 0..1 ResultValue - 0..1 ExceptionValue from ExceptionValueVS if covered - 0..1 DeltaFlag - 0..1 Issued - 0..* Observer - - Element: ResultValue - Concept: TBD - Description: "The finding itself, such as the blood pressure value recorded." - Value: (Quantity or CodeableConcept or string or boolean or Range or Ratio or time or dateTime or TimePeriod) - - Element: ExceptionValue - Concept: TBD - Description: "Reason that a value associated with a test or other finding is missing." - Value: CodeableConcept - - Element: DeltaFlag - Concept: MTH#C1705241 - Description: "Indicator of significant change (delta) from the last or previous measurement." - Value: CodeableConcept from DeltaFlagVS - - Element: Issued - Description: "The date and time this observation was made available to providers, typically after the results have been reviewed and verified." - Value: instant - - Element: Observer - Description: "The person or organization who observed or informed the reporter about the characteristic, potentially the clinician, the patient, or a related person." - Value: ref(Practitioner) or ref(Organization) or ref(Patient) or ref(RelatedPerson) - Element: AbsenceContext - Based on: AssertionContext - Concept: TBD - Description: "Indicates the finding in question is either known absent (ruled out), not suspected, or unknown." - ContextCode from AbsenceContextVS - - Element: AtRiskContext - Based on: FindingContext - Concept: SCT#410519009 - Description: "At risk indicates the finding should be interpreted as a future possibility or expectation." - ContextCode from AtRiskContextVS - Element: ExpectationContext - Based on: FindingContext - Concept: SCT#410517006 - Description: "A context indicating the finding is an expectation, prognosis, or likely outcome." - ContextCode from ExpectationContextVS - Element: GoalContext - Based on: FindingContext - Concept: SCT#410518001 - Description: "A hypothetical or future finding that represents an objective or goal." - ContextCode from GoalContextVS /* TBD Element: DefinitionalContext diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 3945f214..48b90340 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -15,116 +15,242 @@ Based on: InformationEntry Concept: TBD Description: "A special type of information entry consisting of a topic and a context. The ClinicalStatement class provides the core pattern for more specific clinical statement classes, such as a statement that a finding has been found in a patient or that a procedure has been proposed by a clinical decision support system. The ClinicalStatement pattern defines the core attributes common to most clinical statements and specifies a composition pattern that encourage model component reuse and better alignment with the SNOMED CT Concept Model. A clinical statement is composed of the StatementTopic class (grouping of attributes for capturing information about a procedure or a clinical finding) and the StatementContext class (grouping of attributes providing the context for the statement topic such as whether a procedure was performed, requested, not performed or whether a finding is suspected present or absent in the patient). At the archetype level, the topic and context components are coordinated to form the clinical statement. For instance, the composition of the ProcedureTopic with the NotPerformed context indicates that the given procedure was not performed." -1..1 StatementTopic -1..1 StatementContext +0..1 Encounter // clinical statements are often associated with specific encounters //---------- Actions -------------- Abstract Element: ActionStatement Based on: ClinicalStatement Description: "Abstract class representing any type of action, independent of context." - StatementTopic is type ActionTopic +0..* Reason + + Element: Reason + Concept: MTH#C0566251 + Description: "The justification for an action or non-action, conclusion, opinion, etc." + Value: string or CodeableConcept or ref(ClinicalStatement) Abstract Element: ActionPerformedStatement Based on: ActionStatement Description: "Abstract class representing performance of any type of action." - StatementContext is type PerformedContext +1..1 OccurrenceTimeOrPeriod // when the action took place +0..* Participant +1..1 Status should be from http://hl7.org/fhir/ValueSet/event-status +0..1 Method +0..* RelatedRequest +//0..1 EnactsPlan +//0..1 FulfillsOrder +0..1 ref(Facility) +0..1 Outcome // e.g., AdverseEvent + + Element: Participant + Concept: MTH#C1550369 + Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." + Value: ref(EntityOrRole) + 0..1 ParticipationType // role + 0..1 ParticipationPeriod + 0..1 OnBehalfOf + + Element: ParticipationType + Concept: MTH#C1553854 + Description: "The role played by the participant engaged in the action, for example, as the attending physician, surgical assistant, etc." + Value: CodeableConcept from FHIR/v3-ParticipationType + + Element: ParticipationPeriod + Concept: TBD + Description: "The point in time or span of time the participant is involved." + Value: TimePeriod + + Element: Method + Concept: TBD + Description: "The technique used to carry out an action, for example, the specific imaging technical or assessment vehicle." + Value: CodeableConcept // TODO: limit to a procedure code + + Element: RelatedRequest + Concept: TBD + Description: "The proposal, order, or plan that is partly or wholly fulfilled by the performance of this act." + Value: ref(ActionRequestedStatement) + + /* + Element: EnactsPlan + Concept: TBD + Description: "The plan that is partly or wholly enacted by the performance of this act." + Value: ref(ActionRequestedStatement) + + Element: FulfillsOrder + Concept: TBD + Description: "The order that is partly or wholly enacted by the performance of this act." + Value: ref() + */ + Element: Outcome + Concept: TBD + Description: "The result of performing an action or behavior, for example, an adverse reaction or new finding." + Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/procedure-outcome + 0..* ref(ClinicalStatement) + Abstract Element: ActionRequestedStatement Based on: ActionStatement Description: "Abstract class representing a request for any type of action." - StatementContext is type RequestedContext +1..1 Status should be from http://hl7.org/fhir/ValueSet/request-status +1..1 RequestIntent +0..1 ExpectedPerformanceTime +0..1 ExpectedPerformerType +0..1 ExpectedPerformer +0..1 ExpectedMethod +0..1 PriorityRank should be from http://hl7.org/fhir/ValueSet/request-priority +0..1 PerformerInstructions +0..1 PatientInstructions +0..1 CommunicationMethod + + Element: RequestIntent + Concept: TBD + Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." + Value: code from http://hl7.org/fhir/ValueSet/request-intent + + Element: ExpectedPerformanceTime + Concept: TBD + Description: "When an action should be done. If the action is a series or recurs (e.g. daily blood sugar testing in the morning) then a Timing can be used to describe the periodicity." + Value: dateTime or date or TimePeriod or Timing + + Element: ExpectedPerformerType + Concept: TBD + Description: "What type of party should carry out the testing." + Value: CodeableConcept // what ValueSet?? + + Element: ExpectedPerformer + Concept: TBD + Description: "Who should carry out the tests. For example, the patient or caregiver." + Value: ref(Entity) or ref(Organization) + + Element: ExpectedMethod + Concept: TBD + Description: "The method that should be used to carry out the action." + Value: ref(Method) + + Element: PerformerInstructions + Concept: TBD + Description: "Information for the performer of the test, if needed." + Value: string + + Element: PatientInstructions + Concept: TBD + Description: "Information for the patient, such as, where to get the test, how to prepare for the test, etc." + Value: string + + Element: CommunicationMethod + Concept: TBD + Description: "This is the method the provider used to communicate. Examples include: Written, Telephoned, Verbal, Electronically Entered, Policy, Service Correction, Duplicate, etc. 'Code indicating the origin of the prescription.' - NCPDP Telecommunication (Field 419-DJ, Data Dictionary 201104). Possible values include: Written; Telephone; Electronic; Facsimile; Pharmacy; Not Known." + Value: CodeableConcept + Abstract Element: ActionNotPerformedStatement Based on: ActionStatement Description: "Abstract class representing non-performance of any type of action." - StatementContext is type NotPerformedContext +0..1 RelatedRequest +1..1 NonOccurrenceTimeOrPeriod Abstract Element: ActionRequestedAgainstStatement Based on: ActionStatement Description: "Abstract class representing a request to not perform any type of action." - StatementContext is type RequestedAgainstContext //-------------Findings------------ Abstract Element: FindingStatement Based on: ClinicalStatement Description: "Any clinical statement representing a finding." - StatementTopic is type FindingTopic - -/* -[Entry]ShrId -[Entry]EntryId -[Entry]PersonOfRecord -[Entry]Version -[Entry]EntryType -[Entry]CreationTime -[Entry]LastUpdated -[Entry]Narrative -[Entry]Language -[Entry]SecurityLabel -[Entry]Tag -[Entry]DerivedFrom -[InformationEntry]SubjectOfInformation -[InformationEntry]SourceOfInformation -[InformationEntry]Annotation -[InformationEntry]RecordStatus -[InformationEntry]Recorded (who-when) -[InformationEntry]Signed (who-when) -[InformationEntry]Cosigned (who-when) -[InformationEntry]Verified (who-when) -FindingTopic.FindingMethod -FindingTopic.Details -*/ + EntryElement: Observation // TODO: be consistent, or stop using the word "Statement" in class names Based on: FindingStatement Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." - StatementTopic is type ObservationTopic - StatementContext is type ObservationContext SubjectOfInformation value is type ref(Patient) // FHIR to align with US Core Result SourceOfInformation value is type AnyPersonOrOrganization // mapped to performer (who made the observation) -/* - Here's a list of all the attributes of Observation. - To keep things straight, always consider the constraints on each element in this order: - // ClinicalStatement - SubjectOfInformation - SourceOfInformation - Annotation - RecordStatus - Recorded - Signed // aka Author - Cosigned - Verified - // Topic - ObservationTopic.TopicCode - ObservationTopic.FindingMethod - ObservationTopic.Details - ObservationTopic.Category from http://hl7.org/fhir/ValueSet/observation-category if covered - ObservationTopic.AnatomicalLocation // TODO: Change from element to code to align with FHIR?? - ObservationTopic.Focus - ObservationTopic.ref(Device) - ObservationTopic.ref(Specimen) - ObservationTopic.Precondition - ObservationTopic.ReferenceRange - ObservationTopic.EvaluationComponent - ObservationTopic.PanelMembers - ObservationTopic.EvaluationComponent.Value - ObservationTopic.EvaluationComponent.ExceptionValue - ObservationTopic.EvaluationComponent.Interpretation - ObservationTopic.EvaluationComponent.ReferenceRange - // Context - ObservationContext.ContextCode is SCT#424975005 "Record Entity" - ObservationContext.Interpretation - ObservationContext.FindingStatus - ObservationContext.RelevantTime - ObservationContext.Encounter - ObservationContext.ResultValue - ObservationContext.ExceptionValue - ObservationContext.DeltaFlag -*/ +0..1 ResultValue +0..1 ExceptionValue from ExceptionValueVS if covered +0..1 DeltaFlag +0..1 Issued +0..* Observer +1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered +0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? +0..1 Focus +0..1 ref(Device) +0..1 ref(Specimen) +0..* Precondition +0..* ReferenceRange // applies to a quantitative measurement only +0..* EvaluationComponent +0..1 PanelMembers + + Element: Focus + Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. For example, the finding could deal with a condition, a behavior, a wound, or tumor. These are entities that are implied by clinical statements (see cimi.entity.MaterializedAssertion)" + Value: CodeableConcept or Identifier or ref(EntityOrRole) + + Element: EvaluationComponent + Description: "A simplified, non-separable evaluation consisting of a finding code (represented by the Concept), value (or exception value), reference range, and interpretation. The subject of the evaluation component is the same as in the parent evaluation." + Value: (Quantity or CodeableConcept or string or Range or Ratio or Media or time or dateTime or TimePeriod or IntegerQuantity) + 0..1 ExceptionValue from ExceptionValueVS if covered + 0..1 Interpretation + 0..* ReferenceRange + + Element: CodedEvaluationComponent + Based on: EvaluationComponent + Description: "An evaluation component whose value is a code (concept)." + Value: CodeableConcept + 0..0 ReferenceRange + + Element: PanelMembers + Concept: TBD + Description: "PanelMembers represent the elements of a group of a related but independent evaluations. + Examples are the measurements that compose a complete blood count (CBC), or the elements of a pathology report. Each member is an independent evaluation, but the grouping reflects a composite lab order, shared specimen, or a single report author. Typically the Category and Reason are not given for individual findings that are part of the panel, but rather given at the level of the panel itself." + 0..* ref(Observation) + + Element: Precondition + Concept: TBD + Description: "A description of the conditions or context of an observation, for example, under sedation, fasting or post-exercise. Body position and body site are also qualifiers, but handled separately. A qualifier cannot modify the measurement type; for example, a fasting blood sugar is still a blood sugar. " + Value: CodeableConcept or ref(Observation) + + Element: ReferenceRange + Concept: MTH#C0883335 + Description: "The usual or acceptable range for a test result." + Value: Range // TODO: align this with FHIR + 0..1 Type from http://hl7.org/fhir/ValueSet/referencerange-meaning if covered + 0..1 ApplicableSubpopulation + 0..1 ApplicableAgeRange + + Element: ApplicableSubpopulation + Concept: MTH#C0039309 "Target Population" + Description: "Codes to indicate the target population this reference range applies to. For example, a reference range may be based on the normal population or a particular sex or race." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/referencerange-appliesto if covered + + Element: ApplicableAgeRange + Concept: TBD + Description: "The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so." // FHIR: how exactly does one indicate a neonatal or prenatal age? + Value: Range + + Element: ResultValue + Concept: TBD + Description: "The finding itself, such as the blood pressure value recorded." + Value: (Quantity or CodeableConcept or string or boolean or Range or Ratio or time or dateTime or TimePeriod) + + Element: ExceptionValue + Concept: TBD + Description: "Reason that a value associated with a test or other finding is missing." + Value: CodeableConcept + + Element: DeltaFlag + Concept: MTH#C1705241 + Description: "Indicator of significant change (delta) from the last or previous measurement." + Value: CodeableConcept from DeltaFlagVS + + Element: Issued + Description: "The date and time this observation was made available to providers, typically after the results have been reviewed and verified." + Value: instant + + Element: Observer + Description: "The person or organization who observed or informed the reporter about the characteristic, potentially the clinician, the patient, or a related person." + Value: ref(Practitioner) or ref(Organization) or ref(Patient) or ref(RelatedPerson) + // Non-Laboratory Results @@ -204,12 +330,39 @@ Description: "A clinical statement that asserts presence or absence." Abstract Element: AssertionPresenceStatement // AssertPresence Based on: AssertionStatement Description: "Statement that a finding is present." - StatementContext is type PresenceContext + ContextCode from PresenceContextVS +1..1 VerificationStatus +0..1 Onset +0..1 Abatement +0..1 Certainty + + Element: VerificationStatus + Concept: TBD + Description: "Whether an assessment has been confirmed by testing or observation. + CIMI Alignment: This attribute corresponds to FindingContext.status, but has been defined to align with FHIR. In AllergyIntolerance, the type is code." + Value: CodeableConcept + + Element: Onset + Concept: LNC#85585-8 + Description: "The beginning or first appearance of a mental or physical disorder." + Value: dateTime or Age or TimePeriod or Range or string + + Element: Abatement + Concept: LNC#88878-4 + Description: "The end, remission or resolution." + Value: dateTime or Age or boolean or TimePeriod or Range or string + + Element: Certainty + Concept: TBD + Description: "The degree of confidence in a conclusion or assertion." + Value: CodeableConcept + + Abstract Element: AssertionAbsenceStatement // AssertAbsence Based on: AssertionStatement Description: "Statement that a finding is absent." - StatementContext is type AbsenceContext + ContextCode from AbsenceContextVS EntryElement: ConditionPresenceStatement Based on: AssertionPresenceStatement @@ -217,8 +370,52 @@ Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson StatementTopic is type ConditionTopic - StatementContext is type ConditionPresenceContext SubjectOfInformation value is type ref(Patient) +1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical +0..1 WhenClinicallyRecognized +0..1 Preexisting +0..1 Severity from http://hl7.org/fhir/ValueSet/condition-severity +0..1 Criticality from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality +0..1 Stage + + Element: ClinicalStatus + Concept: TBD + Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." + Value: code + + Element: WhenClinicallyRecognized + Concept: TBD + Description: "The time at which a condition or condition was first identified in a healthcare context." + Value: date + + Element: Preexisting + Concept: LNC#89251-3 "Condition present on admission" + Description: "If the problem or condition existed before the current episode of care." + Value: CodeableConcept from YesNoUnknownVS + + Element: Severity + Concept: MTH#C0392364 + Description: "Degree of harshness or extent of a symptom, disorder, or condition." + Value: CodeableConcept + + Element: Criticality + Concept: MTH#C3858539 "Criticality" + Description: "The potential clinical harm associated with a condition. When the worst case result is assessed to have a life-threatening or organ system threatening potential, it is considered to be of high criticality." + Value: code + + Element: Stage + Concept: MTH#C0699749 + Description: "The relative advancement in the course of a disease. The value is the summary stage or stage group. StageDetail optionally contains the full staging information." + Value: CodeableConcept + 0..1 StageDetail + + Element: StageDetail + Concept: TBD + Description: "The full staging information" + Value: ref(Observation) + + + EntryElement: ConditionAbsenceStatement Based on: AssertionAbsenceStatement @@ -230,5 +427,49 @@ EntryElement: ClinicalNote Based on: FindingStatement Concept: MTH#C0747978 "Progress Note" Description: "An entry concerning a patient where the result is a narrative text. Can be related to a specific Focus, such as a condition; and evidence and interpretation from FindingTopic." - StatementContext is type RecordedContext -1..1 StatementTopic.Details // TODO: change to "description" to synch with CIMI \ No newline at end of file + ContextCode is SCT#424975005 "Record Entity" +1..1 Details // TODO: change to "description" to synch with CIMI +0..1 Interpretation +1..1 FindingStatus +0..1 RelevantTime // ClinicallyRelevantTime isn't a good name when it comes to employment and other life history events + + Element: Interpretation + Concept: MTH#C0420833 + Description: "A clinical interpretation of a finding (applies to both assertions and observation)." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/observation-interpretation if covered + + Element: FindingStatus + Concept: TBD + Description: "Indicates whether the finding is preliminary, amended, final, etc." + Value: code from http://hl7.org/fhir/ValueSet/observation-status + + Element: RelevantTime + Concept: TBD + Description: "The time or time period that the finding addresses. + The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." + Value: dateTime or TimePeriod + + +Element: AbsenceStatement +Based on: AssertionStatement +Concept: TBD +Description: "Indicates the finding in question is either known absent (ruled out), not suspected, or unknown." + + +Element: AtRiskStatement +Based on: FindingStatement +Concept: SCT#410519009 +Description: "At risk indicates the finding should be interpreted as a future possibility or expectation." + ContextCode from AtRiskContextVS + +Element: ExpectationStatement +Based on: FindingStatement +Concept: SCT#410517006 +Description: "A context indicating the finding is an expectation, prognosis, or likely outcome." + ContextCode from ExpectationContextVS + +Element: GoalStatement +Based on: FindingStatement +Concept: SCT#410518001 +Description: "A hypothetical or future finding that represents an objective or goal." + ContextCode from GoalContextVS \ No newline at end of file diff --git a/spec/cimi_topic.txt b/spec/cimi_topic.txt index a1e7260c..0402edd2 100644 --- a/spec/cimi_topic.txt +++ b/spec/cimi_topic.txt @@ -39,68 +39,6 @@ The subject of a finding can be the entire patient, or an entity such as a locat Value: CodeableConcept should be from http://loinc.org -Element: ObservationTopic -// All attributes of observation are defined at this level. Any subclass uses subtractive methods to define relevant attributes -Based on: FindingTopic -Concept: MTH#C1554188 -Description: "The base class, independent of context for evaluations (measurements, tests, or questions). The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered -0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? -0..1 Focus -0..1 ref(Device) -0..1 ref(Specimen) -0..* Precondition -0..* ReferenceRange // applies to a quantitative measurement only -0..* EvaluationComponent -0..1 PanelMembers - - - Element: Focus - Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. For example, the finding could deal with a condition, a behavior, a wound, or tumor. These are entities that are implied by clinical statements (see cimi.entity.MaterializedAssertion)" - Value: CodeableConcept or Identifier or ref(EntityOrRole) - - Element: EvaluationComponent - Description: "A simplified, non-separable evaluation consisting of a finding code (represented by the Concept), value (or exception value), reference range, and interpretation. The subject of the evaluation component is the same as in the parent evaluation." - Value: (Quantity or CodeableConcept or string or Range or Ratio or Media or time or dateTime or TimePeriod or IntegerQuantity) - 0..1 ExceptionValue from ExceptionValueVS if covered - 0..1 Interpretation - 0..* ReferenceRange - - Element: CodedEvaluationComponent - Based on: EvaluationComponent - Description: "An evaluation component whose value is a code (concept)." - Value: CodeableConcept - 0..0 ReferenceRange - - Element: PanelMembers - Concept: TBD - Description: "PanelMembers represent the elements of a group of a related but independent evaluations. - Examples are the measurements that compose a complete blood count (CBC), or the elements of a pathology report. Each member is an independent evaluation, but the grouping reflects a composite lab order, shared specimen, or a single report author. Typically the Category and Reason are not given for individual findings that are part of the panel, but rather given at the level of the panel itself." - 0..* ref(Observation) - - Element: Precondition - Concept: TBD - Description: "A description of the conditions or context of an observation, for example, under sedation, fasting or post-exercise. Body position and body site are also qualifiers, but handled separately. A qualifier cannot modify the measurement type; for example, a fasting blood sugar is still a blood sugar. " - Value: CodeableConcept or ref(Observation) - - Element: ReferenceRange - Concept: MTH#C0883335 - Description: "The usual or acceptable range for a test result." - Value: Range // TODO: align this with FHIR - 0..1 Type from http://hl7.org/fhir/ValueSet/referencerange-meaning if covered - 0..1 ApplicableSubpopulation - 0..1 ApplicableAgeRange - - Element: ApplicableSubpopulation - Concept: MTH#C0039309 "Target Population" - Description: "Codes to indicate the target population this reference range applies to. For example, a reference range may be based on the normal population or a particular sex or race." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/referencerange-appliesto if covered - - Element: ApplicableAgeRange - Concept: TBD - Description: "The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so." // FHIR: how exactly does one indicate a neonatal or prenatal age? - Value: Range - Element: LaboratoryObservationTopic Based on: ObservationTopic Description: "The topic composition for laboratory observations. A specimen is required, anatomical location is excluded (since the specimen indicates the collection body site). Also includes a diagnostic service (indicating the type of laboratory), not present in general observations." @@ -115,10 +53,6 @@ Description: "The topic composition for laboratory observations. A specimen is r Value: CodeableConcept from DiagnosticServiceVS if covered -Element: AssertionTopic -Based on: FindingTopic -Description: "The base topic for conditions, allergies, adverse events, etc. These are things that are asserted to exist or not. The Value is interpreted in the context of the class; for an AdverseSensitivityToSubstance, the value is the substance, for a Condition, the Value represents the type of condition found." - Element: ConditionTopic Based on: AssertionTopic Description: "A condition, independent of context. 'Condition' is interpreted broadly to include disorder, abnormality, problem, injury, complaint, functionality, concern, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble, independent of context. From 500e5328fe664048b60f279003f694c26924ac88 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 17 Jul 2018 19:00:22 -0400 Subject: [PATCH 002/289] Getting rid of context --- shr_behavior.txt | 289 ---------------------------------- shr_behavior_map.txt | 14 -- shr_behavior_vs.txt | 101 ------------ shr_careplan.txt | 101 ------------ shr_careplan_map.txt | 41 ----- shr_careplan_vs.txt | 20 --- shr_environment.txt | 276 -------------------------------- shr_environment_map.txt | 4 - shr_environment_vs.txt | 106 ------------- shr_familyhistory.txt | 18 --- shr_familyhistory_map.txt | 3 - shr_lifehistory.txt | 37 ----- shr_lifehistory_map.txt | 3 - shr_lifehistory_vs.txt | 82 ---------- shr_sexualhealth.txt | 222 -------------------------- shr_sexualhealth_map.txt | 3 - shr_sexualhealth_vs.txt | 135 ---------------- shr_vital.txt | 127 --------------- shr_vital_map.txt | 43 ----- shr_vital_vs.txt | 125 --------------- spec/cimi_adverse.txt | 5 +- spec/cimi_allergy.txt | 39 ++--- spec/cimi_allergy_map.txt | 22 +-- spec/cimi_context.txt | 66 -------- spec/cimi_context_vs.txt | 86 ---------- spec/cimi_core.txt | 4 +- spec/cimi_encounter.txt | 14 +- spec/cimi_encounter_map.txt | 22 +-- spec/cimi_entity.txt | 2 +- spec/cimi_entity_map.txt | 8 +- spec/cimi_medication.txt | 25 ++- spec/cimi_medication_map.txt | 22 +-- spec/cimi_procedure.txt | 46 ++---- spec/cimi_procedure_map.txt | 54 +++---- spec/cimi_statement.txt | 25 +-- spec/cimi_statement_map.txt | 81 +++++----- spec/cimi_statement_vs.txt | 85 +++++++++- spec/cimi_topic.txt | 10 +- spec/ig-cimi-config.json | 2 +- spec/shr_condition.txt | 6 +- spec/shr_core.txt | 11 -- spec/shr_immunization.txt | 35 ++-- spec/shr_immunization_map.txt | 28 ++-- spec/shr_occupation.txt | 78 ++++----- spec/shr_oncology.txt | 62 ++++---- spec/shr_research.txt | 2 +- spec/shr_wound.txt | 37 ++--- 47 files changed, 380 insertions(+), 2247 deletions(-) delete mode 100644 shr_behavior.txt delete mode 100644 shr_behavior_map.txt delete mode 100644 shr_behavior_vs.txt delete mode 100644 shr_careplan.txt delete mode 100644 shr_careplan_map.txt delete mode 100644 shr_careplan_vs.txt delete mode 100644 shr_environment.txt delete mode 100644 shr_environment_map.txt delete mode 100644 shr_environment_vs.txt delete mode 100644 shr_familyhistory.txt delete mode 100644 shr_familyhistory_map.txt delete mode 100644 shr_lifehistory.txt delete mode 100644 shr_lifehistory_map.txt delete mode 100644 shr_lifehistory_vs.txt delete mode 100644 shr_sexualhealth.txt delete mode 100644 shr_sexualhealth_map.txt delete mode 100644 shr_sexualhealth_vs.txt delete mode 100644 shr_vital.txt delete mode 100644 shr_vital_map.txt delete mode 100644 shr_vital_vs.txt delete mode 100644 spec/cimi_context.txt delete mode 100644 spec/cimi_context_vs.txt diff --git a/shr_behavior.txt b/shr_behavior.txt deleted file mode 100644 index 43eeb6e0..00000000 --- a/shr_behavior.txt +++ /dev/null @@ -1,289 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: shr.behavior -Description: "The SHR Behavior domain contains data definitions related to how the person of record acts, feels, or responds to situations." -Uses: shr.core, shr.base, cimi.core, cimi.context, cimi.topic, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition - - -CodeSystem: LNC = http://loinc.org -CodeSystem: SCT = http://snomed.info/sct -CodeSystem: MTH = http://ncimeta.nci.nih.gov -CodeSystem: UCUM = http://unitsofmeasure.org - - -Element: BehavioralTopic -Concept: MTH#C0004927 -Based on: AssertionTopic -Description: "Topic for observable responses, actions, or activities of the subject, independent of context. Can be used to assert or deny behaviors." - TopicCode should be from BehaviorFindingVS - Category is LNC#54511-1 "Behavior" - - -EntryElement: BehaviorAbsent -Based on: ClinicalStatement -Concept: TBD -Description: "A statement about a response, action, or activity not demonstrated by the subject." - StatementTopic is type BehaviorTopic - StatementContext is type AbsenceContext - -EntryElement: BehaviorPresent -Based on: ClinicalStatement -Concept: MTH#C0004927 -Description: "A statement about observable responses, actions, or activities of the subject." - StatementTopic is type BehaviorTopic - StatementContext is type PresenceContext - - -EntryElement: SubstanceUsePresent -Based on: ConditionPresent // MedicationUse -Concept: MTH#C024251 -Description: "Assertion concerning the past or current use of a substance (alcohol, recreational drugs, illegal drugs, or abuse of prescription medication) that could negatively impact the subject's health." - TopicCode should be from SubstanceAbuseVS -Status - CodeableConcept from SubstanceOfAbuseVS 312417001 -0..1 FrequencyOfUse -0..1 ExposureRoute -0..1 ExposureMethod -0..* ExposureAmount - - Element: FrequencyOfUse - Based on: EvaluationComponent - Concept: MTH#C0556346 - Description: "A description of the frequency of substance use." - Value: CodeableConcept could be from SemiquantitativeFrequencyVS - - - - -EntryElement: IntravenousDrugUse -Based on: SubstanceUsePresent -Concept: MTH#C0242566 -Description: "Records whether the subject injects recreational drugs." -1..1 ExposureRoute is MTH#C1522726 "Intravenous route" -1..1 ExposureMethod is MTH#C0021494 "Intravenous Injection" - - -EntryElement: NicotineUse -Based on: SubstanceUse -Concept: LNC#11367-0 -Description: "The subject's current or past use of nicotine." - Value is MTH#C2363943 "Nicotine" -//1..1 EvaluationComponent.ExposureRoute from TBD "NicotineRouteVS" -//1..1 EvaluationComponent.ExposureMethod from TBD "NicotineExposureMethodVS" e.g. first hand, second hand, smoked, vaped, chewed - - -// It is not clear how to handle ONC smoking status except as a simple observation. It should really be aligned with SubstanceUsed with the details recorded in attributes." -EntryElement: ONCSmokingStatus -Based on: BehaviorPresent -Concept: LNC#72166-2 -Description: "Records the extent of the subject's use of tobacco." -Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-observation-ccdasmokingstatus - TopicCode is LNC#72166-2 -1..1 Subject // cardinality constraint - -// How can we indicate that a subject used to be an alcoholic, but is now sober? -EntryElement: AlcoholUse -Based on: SubstanceUse -Concept: MTH#C0001948 -Description: "The subject's current or past use of alcohol." - Value is SCT#398624005 "alcohol" - EvaluationMethod from AlcoholUseScreeningToolVS - PanelMembers.EvaluationTopic -includes 0..1 AlcoholBingeFrequency - - Element: AlcoholBingeFrequency - Based on: QuestionAnswerRecorded - Concept: MTH#C0556346 - Description: "How often have you had 6 or more Units if female, or 8 or more if male, on a single occasion in the last year?." - Value: CodeableConcept from SemiquantitativeFrequencyVS - - -EntryElement: SubstanceAbuseTreatment -Concept: TBD -Based on: ProcedurePerformed -Description: "The treatment program used to address a substance abuse problem." - TopicCode from SubstanceAbuseTreatmentTypeVS - -//-------------------------- - -EntryElement: ReligionInformation -Concept: -Based on: ComponentOnlyNonLaboratoryObservation - ObservationTopic.EvaluationComponent -includes 0..* ReligiousAffiliation -includes 0..1 DegreeOfReligiousObservance -includes 0..* ReligiousRestriction -includes 0..1 ReligiousCongregation - - Element: ReligiousAffiliation - Based on: CodedEvaluationComponent - Concept: SCT#160538000 - Description: "The affiliation of the person with a recognized religious group." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/v3-ReligiousAffiliation - - Element: DegreeOfReligiousObservance - Based on: CodedEvaluationComponent - Concept: SCT#160553008 - Description: "The extent to which the religious practice is actively followed." - Value: CodeableConcept from ReligiousObservanceLevelVS - - Element: ReligiousRestriction - Concept: TBD - Based on: CodedEvaluationComponent - Description: "Any restriction on that derives from religion and may impact medical treatment, other than dietary (handled elsewhere)." - Value: CodeableConcept from ReligiousRestrictionVS - - Element: ReligiousCongregation - Concept: TBD - Based on: EvaluationComponent - Description: "A group of place of religious practice." - Value: string - -//------------------------ - -EntryElement: Nutrition -Based on: Observation -Concept: -Description: "Quality of nutrition." -Value: CodeableConcept from PerformanceGradingScaleVS - ObservationTopic.EvaluationComponent -includes 0..* DietFollowed -includes 0..1 HasSufficientFood -includes 0..1 DietNutritionConcern - - -EntryElement: DietFollowed -Concept: TBD -Based on: QuestionAnswerRecorded -Description: "A type of nutritional plan followed by the subject." -Value: CodeableConcept from DietFollowedVS if covered - Category is LNC#54511-1 "Behavior" - -EntryElement: HasSufficientFood -Based on: QuestionAnswerRecorded -Concept: TBD -Description: "Frequency that the person of record unable to obtain food to stay hunger." -Value: CodeableConcept from QualitativeFrequencyVS - Category is LNC#54511-1 "Behavior" - -EntryElement: DietNutritionConcern -Based on: QuestionAnswerRecorded -Concept: TBD -Description: "An anxiety or worry about the diet or nutritional intake of the subject." -Value: CodeableConcept from DietNutritionConcernVS - Category is LNC#54511-1 "Behavior" - -EntryElement: SleepQuality -Based on: Observation -Concept: LNC#28323-4 -Description: "Quality of sleep." -Value: CodeableConcept from PerformanceGradingScaleVS - ObservationTopic.EvaluationComponent -includes 0..* SleepQualityCause -includes 0..1 TroubleFallingAsleep -includes 0..1 TroubleStayingAsleep -includes 0..1 WakeFeelingRested -includes 0..1 HoursSleepPerNight - - EntryElement: SleepQualityCause - Based on: CodedEvaluationComponent - Concept: TBD - Description: "Reason for poor sleep quality." - Value: CodeableConcept from SleepQualityCauseVS - - EntryElement: TroubleFallingAsleep - Based on: CodedEvaluationComponent - Concept: TBD - Description: "How often the subject has trouble falling asleep." - Value: CodeableConcept from QualitativeFrequencyVS - - - EntryElement: TroubleStayingAsleep - Based on: CodedEvaluationComponent - Concept: TBD - Description: "How often the subject has trouble staying asleep." - Value: CodeableConcept from QualitativeFrequencyVS - - EntryElement: WakeFeelingRested - Based on: CodedEvaluationComponent - Concept: TBD - Description: "How often the subject feels rested when they wake up." - Value: CodeableConcept from QualitativeFrequencyVS - - EntryElement: HoursSleepPerNight - Based on: EvaluationComponent - Concept: LNC#65968-0 - Description: "Typical hours spent sleeping per night." - Value: Quantity with units UCUM#hr - - - - -EntryElement: PhysicalActivityPanel -Based on: Observation -Concept: TBD -Description: "Questions related to physical activity." -0..0 Value - Category is LNC#54511-1 "Behavior" - PanelMembers.EvaluationTopic -includes 0..1 PhysicalActivityLevel -includes 0..1 ExerciseHoursPerWeek -includes 0..* PhysicalActivityLimitation - - -EntryElement: PhysicalActivityLevel -Based on: QuestionAnswerRecorded -Concept: LNC#28323-4 -Description: "The amount of exercise or other physical activity compared to others of the same age. See BMC Medical Research Methodology 2012 12:20 1471-2288." -Value: CodeableConcept from QualitativeValueScaleVS - Category is LNC#54511-1 "Behavior" - -EntryElement: ExerciseHoursPerWeek -Based on: QuestionAnswerRecorded -Concept: TBD -Description: "Hours of moderate or vigorous activity per week." -Value: IntegerQuantity // TODO: potentially change to ratio with Units hours per one week - Category is LNC#54511-1 "Behavior" - -EntryElement: PhysicalActivityLimitation -Concept: TBD -Based on: QuestionAnswerRecorded -Description: "Anything that limits physical activity, including health factors, logistical, monetary, or social restrictions." -Value: CodeableConcept from PhysicalActivityLimitationVS - Category is LNC#54511-1 "Behavior" - - -EntryElement: ViolentRiskToOthers -Concept: TBD -Based on: BehaviorPresent -Description: "Risk or danger posed by the focal subject to others." -Value: CodeableConcept from QualitativeValueScaleVS - -EntryElement: ViolentRiskToSelf -Concept: TBD -Based on: BehaviorPresent -Description: "Risk or danger posed by the focal subject to his or herself." -Value: CodeableConcept from QualitativeValueScaleVS - -/* -EntryElement: Mood -Concept: TBD -Description: "" -Value: CodeableConcept - - - - Element: ReasonForBehavior - Based on: EvaluationComponent - Concept: TBD - Description: "Why the behavior has taken or is taking place." - Value: CodeableConcept - - Element: ReadinessToChange - Based on: EvaluationComponent - Concept: TBD - Description: "How motivated the subject is to change the behavior, if the behavior is ongoing, and change would be beneficial." - Value: CodeableConcept from QualitativeLikelihoodVS - - - -*/ \ No newline at end of file diff --git a/shr_behavior_map.txt b/shr_behavior_map.txt deleted file mode 100644 index 99accdb8..00000000 --- a/shr_behavior_map.txt +++ /dev/null @@ -1,14 +0,0 @@ -Grammar: Map 5.1 -Namespace: shr.behavior -Target: FHIR_STU_3 - - -ONCSmokingStatus maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus: - - -Religion maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: - Value maps to http://hl7.org/fhir/StructureDefinition/patient-religion - -ReligiousCongregation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: - Value maps to http://hl7.org/fhir/StructureDefinition/patient-congregation - diff --git a/shr_behavior_vs.txt b/shr_behavior_vs.txt deleted file mode 100644 index 9b0338e2..00000000 --- a/shr_behavior_vs.txt +++ /dev/null @@ -1,101 +0,0 @@ -Grammar: ValueSet 5.0 -Namespace: shr.behavior - -ValueSet: BehaviorFindingVS -Includes codes descending from SCT#844005 "Behavior finding (finding)" - - -ValueSet: ReligiousObservanceLevelVS -Includes codes descending from SCT#365579004 "Finding of religious observance level (finding)" - -ValueSet: ReligiousRestrictionVS -Description: "Includes religious restrictions that could impact care, other than dietary restrictions (handled elsewhere)." -#same_sex "Must have a medical provider of the same sex as the subject" -#no_transfusion "Cannot receive blood products" -#no_treatment "Cannot receive medical treatment" - -ValueSet: SubstanceOfAbuseVS -Includes codes descending from SCT#312417001 "substance of abuse" - - -ValueSet: SubstanceAbuseTreatmentTypeVS -#day_treatment "Day Treatment Services" -#inpatient "Inpatient/Hospital" -#inpatient_detox "Hospital Inpatient Detoxification Services" -#ambulatory "Outpatient services" -#ambulatory_detox "Ambulatory Detoxification Services" -#outreach "Outreach Services" -#intensive_outpatient "Intensive Outpatient Services" -#methadone_treatment "Methadone Treatment Services" -#residental_rehab "Residential/Rehabilitation Services" -#after_care "After Care Services" -#recovery_support "Recovery Support Services" - -ValueSet: AlcoholUseScreeningToolVS -#audit "AUDIT" -#audit_c "AUDIT-C" -#crafft "CRAFFT" - -ValueSet: DietFollowedVS -#vegetarian "Vegetarian diet" -#paleo "Paleo diet" -#kosher "Kosher diet" -#halal "Halal diet" -#gluten_free "Gluten free diet" -#low_salt "Low salt diet" -// TO DO: complete this value set - -ValueSet: DietNutritionConcernVS -#sugar "Too much sugar" -#snacks "Frequent snacking" -#caffeine "Too much caffeine" -#cholesterol "Too much cholesterol" -#overeating "Eating too much" -#undereating "Eating too little" -#unhealthy_diet "Eating an unhealthy diet" -#chewing "Problem chewing" -#swallowing "Problem swallowing" -#high_appetite "Increased appetite" -#low_appetite "Decreased appetite" -#taste "Problem with food taste" -#constipation "Constipation" -#diarrhea "Diarrhea" -#abdominal_pain "Abdominal pain" -#gas "Flatulence" -#binging "Binge eating" -#purging "Purging" - -ValueSet: SleepQualityCauseVS -#sleep_location "Where you sleep (e.g. noisy or uncomfortable environment)" -#shift "Shift work" -#partner_snoring "Partner snoring" -#partner "Disturbed by partner snoring or moving" -#no_time "Not enough time to sleep enough" -#breathing "Trouble breathing, snoring, waking up gasping for breath" -#worries "Thoughts and worries, anxiety" -#nightmares "Disturbing dreams" -#restless_legs "Restless legs" -#pain "Pain" -#not_sleepy "Not sleepy at the appropriate time" - -ValueSet: PhysicalActivityLimitationVS -#conditions "Medical Problems or Conditions" -#disability "Disability" -#frail "Frailty" -#pain "Pain or injury" -#unaffordable "Too expensive" -#no_time "Not enough time" -#lack_knowledge "Not sure how" -#unmotivated "Low motivation" -#no_partner "Does not have partner" -#no_place "No place to exercise" -#worried "Worried about starting exercise program" -#embarrassed "Too self-conscious" - - - - - - - - diff --git a/shr_careplan.txt b/shr_careplan.txt deleted file mode 100644 index 83fb04ed..00000000 --- a/shr_careplan.txt +++ /dev/null @@ -1,101 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: shr.careplan - -Uses: shr.core, shr.base, shr.finding, shr.action, shr.entity, shr.condition - -EntryElement: CareTeam -Based on: Entity // very similar to organization (could be info item) -Concept: TBD -Description: "Planned participants in the coordination and delivery of care for a patient or group." -0..* Participant -//0..* Participant.ParticipationType from HealthcareRoleVS /* or CodeableConcept from http://hl7.org/fhir/ValueSet/c80-practice-codes - - - -EntryElement: Goal // Target (Future) Health State -Based on: Entity -Concept: MTH#C0018017 -Description: "A broad statement about what should be accomplished for or by a patient or other subject. It represents the intended long-term outcome toward which an individual or a group aspires, and toward which, effort is directed, in the form of activities." -1..1 Subject -0..1 Title -1..1 Details -0..* Reason // Entities do not have reasons, they just ARE. This can't be correct. -0..* Category from http://hl7.org/fhir/ValueSet/goal-category if covered -0..1 ExpectedPerformanceTime -0..1 OccurrenceTimeOrPeriod -1..1 Status from http://hl7.org/fhir/ValueSet/goal-status -0..* Annotation -0..* PlannedActivities -0..* ActualActivities -0..* Goal // subgoals, which may be objectives - -Element: PlannedActivities -Concept: TBD -Description: "Activites planned for this goal" -Value: ref(ActionTopic) // restict to Actions with planned context - -Element: ActualActivities -Concept: TBD -Description: "Activites carried out for this goal" -Value: ref(ActionTopic) // restict to Actions with performed context - - -Element: Objective -Based on: Goal -Concept: TBD -Description: "Describes the of an expected or desired achievement that is well-defined, specific, measurable, and derived from one or more goals. The context is inherited from the context of the parent goal, i.e., if the goal is #proposed, then the objective is also #proposed" -0..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered -1..1 ResultTargeted -0..* ResultAchieved -0..* RelatedFinding - - Element: ResultTargeted - Concept: TBD - Description: "The desired value or status to be achieved." - Value: CodeableConcept or Range or Quantity - - Element: ResultAchieved - Concept: TBD - Description: "The actual value or status achieved." - Value: CodeableConcept or Range or Quantity - - -EntryElement: CarePlan -Concept: MTH#C0178916 -Description: "Describes how one or more practitioners intend to deliver care for a particular patient, group or community for a period of time, possibly limited to care for a specific condition or set of conditions." -0..1 Title -0..1 Details -1..1 Status from http://hl7.org/fhir/ValueSet/care-plan-status -0..* Category from http://hl7.org/fhir/ValueSet/care-plan-category if covered -0..* Goal - - - -/* - -EntryElement: GoalPursuitTopic -Based on: ActionTopic -Concept: MTH#C0018017 -Description: "Attaches an action context with respect to a goal: proposed, performed, not performed, etc." -1..1 HealthGoal - - In FHIR, these are represented in a status attribute. - -EntryElement: GoalPursuitPerformed -Based on: GoalPursuitTopic -1..1 PerformedContext - -EntryElement: GoalPursuitNotPerformed -Based on: GoalPursuitTopic -1..1 NotPerformedContext - -EntryElement: GoalPursuitRequested -Based on: GoalPursuitTopic -1..1 RequestedContext - - -EntryElement: GoalProposedAgainst -Based on: GoalPursuitTopic -1..1 RequestedAgainstContext - -*/ \ No newline at end of file diff --git a/shr_careplan_map.txt b/shr_careplan_map.txt deleted file mode 100644 index 681e1bb1..00000000 --- a/shr_careplan_map.txt +++ /dev/null @@ -1,41 +0,0 @@ -Grammar: Map 5.1 -Namespace: shr.careplan -Target: FHIR_STU_3 - -/* - -CareTeam maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam: - Participant.Entity maps to participant.member - Participant.ParticipationType maps to participant.role - Participant.ParticipationPeriod maps to participant.period - -Goal maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal: -// Includes attributes inherited from ActionContext and Entry - Subject maps to subject - _Entry.Informant maps to expressedBy - Status maps to status - Category maps to category - //Reason[Content] maps to addresses - //ExpectedPerformanceTime[TimePeriod].TimePeriodEnd[date] maps to target.due[x].date - OccurrenceTimeOrPeriod[date] maps to start[x].date - //OccurrenceTimeOrPeriod[TimePeriod].TimePeriodStart[date] maps to start[x].date - Annotation maps to note - - - -Objective maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal: - ResultTargeted[Quantity] maps to target.detail[x].Quantity - ResultTargeted[Range] maps to target.detail[x].Range - ResultTargeted[CodeableConcept] maps to target.detail[x].CodeableConcept - ResultAchieved[CodeableConcept] maps to outcomeCode - // TODO FHIR should align its outcome types to target.detail types (you can the target as a quantity, but outcome can only be a Codeable Concept) - RelatedFinding maps to outcomeReference -*/ -/* -CarePlan maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan: - // constrain intent to #plan -- it's a care PLAN, for Pete's sake - constrain replaces to 0..0 - constrain basedOn to 0..0 - constrain partOf to 0..0 // There's no need for nested care plans. The patient can have several plans for different purposes, just like several medications, but they don't have to be grouped under a master care plan - constrain supportingInfo to 0..0 -*/ \ No newline at end of file diff --git a/shr_careplan_vs.txt b/shr_careplan_vs.txt deleted file mode 100644 index c8d48bc1..00000000 --- a/shr_careplan_vs.txt +++ /dev/null @@ -1,20 +0,0 @@ -Grammar: ValueSet 5.0 -Namespace: shr.careplan - -/*NOT USED: -ValueSet: ActionStatusVS -Description: "Value indicating whether an activity is currently being acted upon, represents future intentions or is now a historical record. From HL7 V3 Reference Information Model." -#proposed_against "An intervention to avoid, something NOT to do." -#proposed "Suggested or possible intervention, not necessarily accepted by patient or provider." -#rejected "A course of action that has been rejected." -#accepted "Accepted and pending, scheduled, or waiting to start" -#active "In process, being acted on" -#cancelled "Stopped before execution begins" -#suspended "Stopped temporarily, suspended." -#aborted "Stopped after execution began" -#completed "Finished" -#nullified "Overridden or otherwise not executable, e.g., entered in error" -#obsolete "Old plan, no longer relevant" -#unknown "Status is unknown" -*/ - diff --git a/shr_environment.txt b/shr_environment.txt deleted file mode 100644 index e526f682..00000000 --- a/shr_environment.txt +++ /dev/null @@ -1,276 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: shr.environment -Description: "The SHR Environment domain contains definitions related to surroundings experienced by the person of record, including both the physical and sociological environments." -Uses: shr.core, shr.base, shr.finding, shr.action, shr.entity, shr.allergy, shr.medication, shr.procedure - -CodeSystem: CURRENCY = urn:iso:std:iso:4217 - -//------------ Household Information -------------------------- - -EntryElement: FinancialSituationPanel -Concept: LNC#83335-0 -Based on: QuestionAnswerRecorded -Description: "Measures of the ability of the subject to obtain and pay for the necessities of life." -0..0 Value - TopicCode is LNC#83335-0 - PanelMembers.EvaluationTopic -includes 0..1 AnnualIncome -includes 0..* IncomeSource -includes 0..1 IncomeStability -includes 0..1 CanAffordFood -includes 0..1 CanAffordHousing -includes 0..1 CanAffordClothing -includes 0..1 CanAffordUtilities -includes 0..1 CanAffordTransportation -includes 0..1 CanAffordMedication -includes 0..1 CanAffordDentalCare -includes 0..1 CanAffordChildCare -includes 0..* NonCashBenefit - - EntryElement: AnnualIncome - Concept: MTH#C0557163 - Based on: QuestionAnswerRecorded - Description: "The amount of earnings made by a family unit in one year, estimated or self-reported." - Value: Quantity with units CURRENCY#USD - TopicCode is MTH#C0557163 - - EntryElement: IncomeSource - Concept: MTH#C0557162 - Based on: QuestionAnswerRecorded - Description: "Where the household income comes from." - Value: CodeableConcept from IncomeSourceVS - TopicCode is MTH#C0557162 - - EntryElement: IncomeStability - Concept: MTH#C1820459 - Based on: QuestionAnswerRecorded - Description: "Whether the subject regards his or her source of income as dependable." - Value: CodeableConcept from ResourceStabilityVS - TopicCode is MTH#C1820459 - - EntryElement: CanAffordFood - Concept: TBD - Based on: QuestionAnswerRecorded - Description: "How often can the subject afford food?" - Value: CodeableConcept from QualitativeFrequencyVS - TopicCode is TBD#TBD - - EntryElement: CanAffordHousing - Concept: TBD - Based on: QuestionAnswerRecorded - Description: "How often can the subject afford housing?" - Value: CodeableConcept from QualitativeFrequencyVS - TopicCode is TBD#TBD - - EntryElement: CanAffordClothing - Concept: TBD - Based on: QuestionAnswerRecorded - Description: "How often can the subject afford clothing?" - Value: CodeableConcept from QualitativeFrequencyVS - TopicCode is TBD#TBD - - EntryElement: CanAffordUtilities - Concept: TBD - Based on: QuestionAnswerRecorded - Description: "How often can the subject afford utilities?" - Value: CodeableConcept from QualitativeFrequencyVS - TopicCode is TBD#TBD - - EntryElement: CanAffordTransportation - Concept: TBD - Based on: QuestionAnswerRecorded - Description: "How often can the subject afford transportation?" - Value: CodeableConcept from QualitativeFrequencyVS - TopicCode is TBD#TBD - - EntryElement: CanAffordMedication - Concept: TBD - Based on: QuestionAnswerRecorded - Description: "How often can the subject afford medications?" - Value: CodeableConcept from QualitativeFrequencyVS - TopicCode is TBD#TBD - - EntryElement: CanAffordDentalCare - Concept: TBD - Based on: QuestionAnswerRecorded - Description: "How often can the subject afford dental care?" - Value: CodeableConcept from QualitativeFrequencyVS - TopicCode is TBD#TBD - - EntryElement: CanAffordChildCare - Concept: TBD - Based on: QuestionAnswerRecorded - Description: "How often can the subject afford child care?" - Value: CodeableConcept from QualitativeFrequencyVS - TopicCode is TBD#TBD - - EntryElement: NonCashBenefit - Concept: TBD - Based on: QuestionAnswerRecorded - Description: "Government benefits received by the focal subject, other than cash benefits." - Value: CodeableConcept from NonCashBenefitVS - TopicCode is TBD#TBD - -EntryElement: HouseholdSituationPanel -Concept: TBD -Based on: QuestionAnswerRecorded -Description: "Information about the makeup of the household of the subject." -0..0 Value - TopicCode is TBD#TBD - PanelMembers.EvaluationTopic -includes 0..1 HouseholdSize -includes 0..* Coinhabitant -includes 0..1 NumberOfDependents - - EntryElement: HouseholdSize - Concept: MTH#C0000768 - Based on: QuestionAnswerRecorded - Description: "The number of people living together with mutual financial dependency. Besides the subject, the household size may include spouse or partner, dependent children including adopted and foster children, dependent parents, dependent siblings and other relatives, but not roommates, ex-spouses, non-dependent children, and unborn children. If the subject lives alone, the household size is 1." - Value: Quantity with units UCUM#1 // should be positiveInt but FHIR Observations don't support integers - TopicCode is MTH#C0000768 - - - EntryElement: Coinhabitant - Based on: QuestionAnswerRecorded - Concept: TBD - Description: "A person living with the subject." - Value: CodeableConcept from CoinhabitantVS - TopicCode is TBD#TBD - - EntryElement: NumberOfDependents - Concept: MTH#C0557509 - Based on: QuestionAnswerRecorded - Description: "The number of dependents supported by the subject." - Value: Quantity with units UCUM#1 - TopicCode is MTH#C0557509 - - - -//------------- Exposures --------------------- - -EntryElement: ExposureToAgentTopic -Based on: EvaluationTopic // might extend ConditionTopic, but we need EvaluationComponents -Concept: MTH#C0332157 -Description: "Base class (independent of context) for documenting exposure to various agents (substance, disease vector, blood products, farm animals or pets, recreational drugs, sexual transmitted diseases, foods, toxins, pathogens, noise, radiation, pollutants, or prenatal exposures to teratogens, etc). Can be used to deny such exposures via context." -Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/substance-code - TopicCode is MTH#C0332157 - - -EntryElement: ExposureToAgent -Based on: EvaluationTopic // might extend ConditionTopic, but we need EvaluationComponents -Concept: MTH#C0332157 -Description: "Exposure to various agents (substance, disease vector, blood products, farm animals or pets, recreational drugs, sexual transmitted diseases, foods, toxins, pathogens, noise, radiation, pollutants, or prenatal exposures to teratogens, etc). Can be used to deny such exposures via context." -1..1 PresenceContext - EvaluationComponent -includes 0..* ExposureSourceOrVector -includes 0..* ExposureAmount -includes 0..* ExposureReason -includes 0..* ExposureMethod -includes 0..* ExposureRoute - - Element: ExposureSourceOrVector - Based on: EvaluationComponent - Concept: MTH#C0012656 - Description: "Where the substance originated. Vectors include animals (e.g., tick, mosquito, cats, livestock) capable of transmitting an infectious agent among vertebrates. Sources could include food, contaminated drinking water, air, radon gas in the home, etc." - Value: CodeableConcept from TBD "ExposureSourceOrVectorVS" - - Element: ExposureAmount - Based on: EvaluationComponent - Concept: TBD - Description: "The amount of substance used or exposed to in a given period of time (e.g., 10 cigarettes per day). Can also be used to record total lifetime exposure (e.g., 80 REMS/lifetime)." - Value: Ratio - - Element: ExposureMethod - Based on: EvaluationComponent - Concept: TBD - Description: "How the exposure occurred, e.g. cutaneous contact, injection, ingestion, sexual contact, inhalation." - Value: CodeableConcept from TBD "ExposureMethodVS" - - Element: ExposureReason - Based on: EvaluationComponent - Concept: TBD - Description: "Why the exposure occurred." - Value: CodeableConcept from ExposureReasonVS - - // This is redundant with RouteIntoBody, but that isn't an EvaluationComponent - Element: ExposureRoute - Based on: EvaluationComponent - Concept: MTH#C0013153 - Description: "The way a substance enters an organism after contact, particularly, the route of drug administration." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/route-codes - - - - - -EntryElement: AnimalExposure -Concept: MTH#C0238646 -Based on: ExposureToAgent -Description: "The type of animals or pets the subject is exposed to." -Value: CodeableConcept from CommonAnimalVS if covered - TopicCode is MTH#C0238646 - - - -EntryElement: SocialEnvironment -Based on: QuestionAnswerRecorded -Concept: TBD -Description: "Factors affecting the health of the subject in their daily living environment." -0..0 Value - TopicCode is TBD#TBD - PanelMembers.EvaluationTopic -includes 0..1 TransportationAvailability -includes 0..1 HousingSecurity -includes 0..1 PhysicalSafety -includes 0..1 EmotionalSafety -includes 0..1 DomesticViolence -includes 0..* HomeEnvironmentRisk - - EntryElement: TransportationAvailability - Based on: QuestionAnswerRecorded - Concept: TBD - Description: "Whether the subject has reliable transportation to bring him or her to medical appointments and to get medications." - Value: CodeableConcept from QualitativeFrequencyVS - TopicCode is TBD#TBD - - EntryElement: HousingSecurity - Based on: QuestionAnswerRecorded - Concept: TBD - Description: "Whether the subject is at-risk of losing their housing or in a stable housing situation." - Value: CodeableConcept from ResourceStabilityVS - TopicCode is TBD#TBD - - EntryElement: PhysicalSafety - Based on: QuestionAnswerRecorded - Concept: TBD - Description: "How often the subject feels physically safe in the subject's home environment." - Value: CodeableConcept from QualitativeFrequencyVS - TopicCode is TBD#TBD - - EntryElement: EmotionalSafety - Based on: QuestionAnswerRecorded - Concept: TBD - Description: "Whether the subject feels physically safe in the subject's home environment." - Value: CodeableConcept from QualitativeFrequencyVS - TopicCode is TBD#TBD - - EntryElement: DomesticViolence - Based on: QuestionAnswerRecorded - Concept: MTH#C0206073 - Description: "Whether the subject experiences domestic violence." - Value: CodeableConcept from QualitativeFrequencyVS - TopicCode is TBD#TBD - - EntryElement: HomeEnvironmentRisk - Based on: QuestionAnswerRecorded - Concept: TBD - Description: "A risk experienced in the home environment." - Value: CodeableConcept from HomeEnvironmentRiskVS - TopicCode is TBD#TBD - - -/* -EntryElement: Depression -EntryElement: Anxiety -EntryElement: JusticeInvolvement -*/ \ No newline at end of file diff --git a/shr_environment_map.txt b/shr_environment_map.txt deleted file mode 100644 index 8ba43bf4..00000000 --- a/shr_environment_map.txt +++ /dev/null @@ -1,4 +0,0 @@ -Grammar: Map 5.1 -Namespace: shr.environment -Target: FHIR_STU_3 - diff --git a/shr_environment_vs.txt b/shr_environment_vs.txt deleted file mode 100644 index 365c531b..00000000 --- a/shr_environment_vs.txt +++ /dev/null @@ -1,106 +0,0 @@ -Grammar: ValueSet 5.0 -Namespace: shr.environment - -ValueSet: ExposureReasonVS -Description: "The reason that an exposure occurred." -#voluntary "The subject voluntarily subjects him or herself to the exposure, for example, smoking or using a drug recreationally." -#addiction "The subject is addicted to the substance." -#self_prescribed "The subject takes a non-prescription substance to address health issues or for prevention, e.g. herbal remedy for depression." -#occupational "Exposure in a workplace setting." -#home "Exposure in home setting." -#passive "The exposure occurred or occurs involuntarily, e.g., exposure to second-hand smoke." -#accidental "The exposure as a result of an accident." - - -ValueSet: ResourceStabilityVS -#stable "Not at risk or minimal risk of losing the resource (or a significant portion of the resource)" -#at_risk "Some risk of losing the resource (or a significant portion of the resource)" -#imminent_risk "Imminent risk of loss of the resource (or a significant portion of the resource)" -#recent_loss "Recent loss of the resource (or a significant portion of the resource)" - -ValueSet: IncomeSourceVS -#earned "Earned Income (i.e., employment income)" -#unemployment "Unemployment Insurance" -#ssi "Supplemental Security Income (SSI)" -#ssdi "Social Security Disability Income (SSDI)" -#disability_va "Veteran’s disability payment" -#disability_private "Private disability insurance" -#disability_workers "Worker’s compensation" -#tanf "Temporary Assistance for Needy Families (TANF) or similar local program" -#ga "General Assistance (GA) or similar local program" -#ss "Retirement income from Social Security" -#savings "Savings" -#pension_va "Veteran’s pension" -#child_support "Child support" -#alimony "Alimony or other spousal support" - -ValueSet: NonCashBenefitVS -#snap "Supplemental Nutrition Assistance Program (SNAP) (Previously known as Food Stamps)" -#medicaid "MEDICAID health insurance program or local equivalent" -#schip "State Children’s Health Insurance Program or local equivalent" -#wic "Special Supplemental Nutrition Program for Women, Infants, and Children (WIC)" -#vams "Veteran’s Administration (VA) Medical Services" -#tanf "Temporary Assistance for Needy Families (TANF) or similar local program" -#tanf_transport "Temporary Assistance for Needy Families (TANF) transportation services" -#tanf_other "Temporary Assistance for Needy Families (TANF) other services" -#section8 "Section 8, public housing, or other ongoing rental assistance" -#temp_rental "Temporary Rental Assistance" - -ValueSet: CommonAnimalVS -#dog "dog" -#cat "cat" -#bird "bird" -#fish "fish" -#reptile "reptile" -#rodent "rodent" -#primate "monkey or ape" -#livestock "livestock" -#chicken "chicken" - -ValueSet: CoinhabitantVS -#partner "Spouse or partner" -#parents_birth "Birth parents" -#parents_adoptive "Adoptive parents" -#foster "Foster family" -#child "Child or children" -#relatives "other relatives" -#non_relatives "non-relatives" - -ValueSet: HomeEnvironmentRiskVS -#guns "Guns in household" -#more_guns "Guns in neighborhood" -#smoke_detectors "No Smoke Detectors" -#radiation "Radon or other radiation source" -#swimming_pool "Swimming Pool" -#lead "Lead in soil, paint or water" -#well "Well water" -#mold "Mold" -#noise "Excessive noise" -#no_connection "No internet" -#no_electricity "Unreliable electricity supply" -#air_quality "Poor air quality" -#water_quality "Poor drinking water quality" -#crime "Neighborhood crime" -#traffic "Neighborhood traffic" -#unwalkable "Neighborhood unwalkable" -#insects "Insect infestation" -#rodents "Rodent infestation" -#asbestos "Asbestos" -#disrepair "Home in disrepair" -#clutter "Clutter or hoarding" -#fire_hazard "No fire escape or other fire hazard" -#stairs "Steps hard to navigate" -#bathroom "Bathroom facilities hard to utilize, e.g., on another floor or lacking accomodations" -#crowding "Overcrowded" -#isolated "Too far away from things" -#transportation "Hard to access transportation resources" -#radiation "Radiation" -#asbestos "Asbestos" -#pesticides "Pesticides" -#motorcycle "Ride motorcycle" -#contact_sports "Play contact sports" -#seat_belt "Does not wear seat belts" -#sun_exposure "Spends excessive time in the sun" -#tanning "Uses tanning bed" - - diff --git a/shr_familyhistory.txt b/shr_familyhistory.txt deleted file mode 100644 index a93df998..00000000 --- a/shr_familyhistory.txt +++ /dev/null @@ -1,18 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: shr.familyhistory -Description: "The SHR Family History domain contains definitions related to the life, health, and genetics of persons related to the person of record." -Uses: shr.core, shr.base, shr.finding, shr.action, shr.entity, shr.condition - -/* -EntryElement: FamilyMemberCondition -Based on: Condition -Description: "A condition of a person related to the person of record." - Subject value is type ref(RelatedPerson) // can't use Subject because FHIR (and US Core) only allow the subject to be a patient or group - - -EntryElement: FamilyMemberConditionAbsent -Based on: ConditionAbsent -Description: "A condition of a person related to the person of record." - Subject value is type ref(RelatedPerson) -*/ - diff --git a/shr_familyhistory_map.txt b/shr_familyhistory_map.txt deleted file mode 100644 index ddf5c273..00000000 --- a/shr_familyhistory_map.txt +++ /dev/null @@ -1,3 +0,0 @@ -Grammar: Map 5.0 -Namespace: shr.familyhistory -Target: FHIR_STU_3 diff --git a/shr_lifehistory.txt b/shr_lifehistory.txt deleted file mode 100644 index f224ccb3..00000000 --- a/shr_lifehistory.txt +++ /dev/null @@ -1,37 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: shr.lifehistory -Description: "The SHR Lifehistory domain contains definitions related to the course of events in the life of the person of record that might impact health, health risks, or future treatment." -Uses: shr.core, shr.base, shr.finding, shr.action, shr.entity, shr.environment, shr.condition - -CodeSystem: UCUM = http://unitsofmeasure.org - -EntryElement: PrenatalExposure -Based on: ExposureToAgent // brings the temporal context into the picture -Concept: MTH#C0871747 -Description: "Fetal contact with a dangerous substance via the mother." -Value: CodeableConcept from TeratogenVS - TopicCode is MTH#C0871747 -0..1 GestationalTemporalContext - -EntryElement: CongenitalAbnormality -Concept: MTH#C0000768 -Based on: Condition -Description: "Any abnormality, genetic, anatomical, biochemical, evident at birth or during the neonatal period. Includes malformations, deformations, and chromosomal abnormalities." -Value: CodeableConcept from CongenitalAbnormalitiesVS - -EntryElement: EducationalAttainment -Concept: MTH#C0013658 -Based on: QuestionAnswerRecorded -Description: "Educational attainment or level of education of individuals." -Value: CodeableConcept from EducationalAttainmentVS - TopicCode is LNC#63504-5 - - -EntryElement: Travel -Concept: MTH#C0040802 -Based on: QuestionAnswerRecorded -Description: "Trip to a foreign country or an area, particularly when a health risk is involved." -Value: string // TODO - this generates a warning (it should not) - bug reported - I want to have the value be a Location, but that won't map to FHIR - TopicCode is MTH#C0040802 - - diff --git a/shr_lifehistory_map.txt b/shr_lifehistory_map.txt deleted file mode 100644 index 4fcd1352..00000000 --- a/shr_lifehistory_map.txt +++ /dev/null @@ -1,3 +0,0 @@ -Grammar: Map 5.1 -Namespace: shr.lifehistory -Target: FHIR_STU_3 diff --git a/shr_lifehistory_vs.txt b/shr_lifehistory_vs.txt deleted file mode 100644 index ed8db794..00000000 --- a/shr_lifehistory_vs.txt +++ /dev/null @@ -1,82 +0,0 @@ -Grammar: ValueSet 5.0 -Namespace: shr.lifehistory - -ValueSet: EducationalAttainmentVS -#no_formal "No schooling completed, or ages 0-4" -#elementary "Elementary (grades 1-8)" -#high_school_some "High school (grades 9-12, no degree)" -#high_school_grad "High school graduate (or equivalent)" -#college "Some college (1-4 years, no degree)" -#assoc "Associate’s degree (including vocational, occupational or academic degrees)" -#bachelor "Bachelor’s degree (BA, BS, AB, etc)" -#master "Master’s degree (MA, MS, MENG, MSW, etc)" -#prof "Professional school degree (MD, DDC, JD, etc)" -#doc "Doctorate degree (PhD, EdD, etc)" - -ValueSet: TeratogenVS -//DISEASES -#chlamydia "Chlamydia" -#pneumonia "Pneumonia" -#gonorrhea "Gonorrhea" -#rubella "Rubella (German Measles)" -#herpes "Herpes" -#scarlet "Scarlet Fever" -#hiv "HIV" -#syphilis "Syphilis" -#mumps "Mumps" -#toxoplasmosis "Toxoplasmosis" -#tuberculosis "Tuberculosis" -#influenza "Influenza" -//DRUGS -#accutane "Accutane" -#hexachlorophene "Hexachlorophene" -#alcohol "Alcohol" -#iodides "Iodides" -#amphetamines "Amphetamines" -#lithium "Lithium" -#antibiotics "Antibiotics" -#lsd "LSD" -#anti-cancer "Anti-cancer drugs" -#opiates "Opiates" -#anticoagulant "Anticoagulant drugs" -#quinine "Quinine" -#aspirin "Aspirin" -#sedatives "Sedatives" -#barbiturates "Barbiturates" -#smallpox "Smallpox vaccination" -#caffeine "Caffeine" -#thalidomide "Thalidomide" -#nicotine "Nicotine" -#tranquilizers "Tranquilizers" -#cocaine "Cocaine" -#vitamins "Vitamins in excess" -#des "Diethylstilbestrol (DES)" -#marijuana "Marijuana " -//ENVIRONMENTAL FACTORS -#cadmium "Cadmium" -#mercury "Mercury" -#cat "Cat feces" -#nickel "Nickel" -#fumes "Fumes from paints, solvents, glues, dry-cleaning fluids" -#pesticides "Pesticides" -#insecticides "Insecticides" -#herbicides "Herbicides" -#manganese "Manganese" -#radiation "Radiation (X-rays, Video Display Terminals)" -#hair "Hair dyes" -#polychlorinated "Polychlorinated Biphenyls (PCBs)" -#lead "Lead" -//NONINFECTIOUS MATERNAL CONDITIONS -#alcoholism "Alcoholism" -#chemical "Chemical dependency" -#phenylketonuria "Phenylketonuria" -#rh "Rh + factor" -#anemia "Anemia" -#stress "Stress" -#diabetes "Diabetes Mellitus" - -ValueSet: CongenitalAbnormalitiesVS -Includes codes descending from SCT#66091009 "Congenital Disease" // ICD10 Q00-Q99 - - - diff --git a/shr_sexualhealth.txt b/shr_sexualhealth.txt deleted file mode 100644 index 56f6ecee..00000000 --- a/shr_sexualhealth.txt +++ /dev/null @@ -1,222 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: shr.sexualhealth -Description: "The SHR Sex domain contains definitions related to the sexual health and behavior of the person of record." -Uses: shr.core, shr.base, shr.finding, shr.action, shr.entity, shr.medication - -CodeSystem: LNC = http://loinc.org -CodeSystem: MTH = http://ncimeta.nci.nih.gov -CodeSystem: UCUM = http://unitsofmeasure.org -// - -EntryElement: PregnancyIntention -Concept: TBD -Based on: QuestionAnswerRecorded -Description: "Whether the subject or his/her partner has a plan or desire to either become pregnant or have a child in the next year/near future." -Value: CodeableConcept from YesNoUnknownVS - TopicCode is LNC#64631-5 - -EntryElement: SexualIdentity -Concept: TBD -Based on: QuestionAnswerRecorded -Description: "Information on gender identity and sexual orientation." - TopicCode is TBD#TBD - PanelMembers.EvaluationTopic -includes 0..1 GenderIdentity -includes 0..1 SexualOrientation - - EntryElement: GenderIdentity - Concept: MTH#C0017249 - Based on: QuestionAnswerRecorded - Description: "Subjective personal perception of one's own gender, which can be male, female, a blend of both, or neither." - Value: CodeableConcept from GenderIdentityVS - TopicCode is MTH#C0017249 - - EntryElement: SexualOrientation - Concept: MTH#C0205949 - Based on: QuestionAnswerRecorded - Description: "An inherent and enduring emotional, romantic or sexual attraction to other people." - Value: CodeableConcept from SexualOrientationVS - TopicCode is MTH#C0205949 - - -EntryElement: SexualBehavior -Concept: MTH#C1314687 -Based on: QuestionAnswerRecorded -Description: "Experience with sexual intercourse." -0..0 Value - TopicCode is MTH#C1314687 - PanelMembers.EvaluationTopic -includes 1..* SexualActivity -includes 0..1 NumberOfSexualPartnersPastYear -includes 0..* IntercourseDifficulty - - EntryElement: SexualActivity - Concept: MTH#C0241028 - Based on: QuestionAnswerRecorded - Description: "Characterization of the sexual activity of the subject." - Value: CodeableConcept from SexualActivityVS - 1..1 TopicCode is TBD#TBD - - EntryElement: NumberOfSexualPartnersPastYear - Concept: MTH#C0556468 - Based on: QuestionAnswerRecorded - Description: "Number of sexual partners in past year." - Value: Quantity with units UCUM#1 // can use > or < modifiers - - EntryElement: IntercourseDifficulty - Concept: TBD - Based on: QuestionAnswerRecorded - Description: "Condition affecting sexual intercourse." - Value: CodeableConcept from IntercourseDifficultyVS - - -EntryElement: ContraceptivesUsed -Concept: TBD -Description: "How frequently the subject and partner uses contraceptives, and if so, what contraceptive methods used." -Based on: QuestionAnswerRecorded -Value: CodeableConcept from QualitativeFrequencyVS - PanelMembers.EvaluationTopic -includes 0..* ContraceptiveMethodUsed - -EntryElement: ContraceptiveMethodUsed -Based on: QuestionAnswerRecorded -Concept: MTH#C0700589 -Description: "A method contraception used (or not) by the subject." -Value: CodeableConcept from ContraceptiveMethodVS - TopicCode is MTH#C0700589 - EvaluationComponent -includes 0..1 ContraceptiveMethodFrequency -includes 0..* ContraceptiveMethodReason -includes 0..* ContraceptiveNotUsedReason - - Element: ContraceptiveMethodFrequency - Based on: EvaluationComponent - Concept: TBD - Description: "How often the contraceptive method is used by the subject." - Value: CodeableConcept from QualitativeFrequencyVS - - Element: ContraceptiveMethodReason - Based on: EvaluationComponent - Concept: TBD - Description: "Reason for using a particular contraceptive." - Value: CodeableConcept from ContraceptiveMethodReasonVS - - Element: ContraceptiveNotUsedReason - Concept: TBD - Based on: EvaluationComponent - Description: "If not using a method of contraception, why." - Value: CodeableConcept from ContraceptiveNotUsedReasonVS - - -Abstract Element: ContraceptiveTopic -Based on: MedicationTopic -Concept: TBD -Description: "A contraceptive for a patient, independent of context of being recommended, used, or not used." -Value: CodeableConcept from ContraceptiveMethodVS - - -EntryElement: ContraceptiveMethodRequested -Based on: ContraceptiveTopic -Concept: TBD -Description: "The contraceptive method(s) proposed, recommended or prescribed by a provider, after counseling and assessment." -1..1 RequestedContext - RequestedContext.Reason from ContraceptiveMethodReasonVS -/*1..1 Dispensed // Not sure about this - - Element: Dispensed - Concept: TBD - Description: "Whether an item, such as a medication or device, was given to a subject." - Value: CodeableConcept from YesNoUnknownVS -*/ -EntryElement: ContraceptiveMethodRequestedAgainst -Concept: TBD -Based on: ContraceptiveTopic -Description: "The contraceptive method(s) recommended or prescribed by a provider, after counseling and assessment." -Value: CodeableConcept from ContraceptiveMethodVS -1..1 RequestedAgainstContext - RequestedAgainstContext.Reason from ContraceptiveNotUsedReasonVS - - -EntryElement: PregnancyHistory -Concept: MTH#C0032967 -Based on: QuestionAnswerRecorded -Description: "Information about current and past pregnancies." -0..0 Value - TopicCode is LNC#10163-4 - PanelMembers.EvaluationTopic -includes 0..1 CurrentPregnancyStatus -includes 0..1 NumberOfPreviousPregnancies -includes 0..1 NumberOfLivingChildren - - EntryElement: CurrentPregnancyStatus - Concept: MTH#C0552579 - Based on: QuestionAnswerRecorded - Description: "Whether or not the subject is currently pregnant." - Value: CodeableConcept from YesNoUnknownVS - TopicCode is LNC#82810-3 - - EntryElement: NumberOfPreviousPregnancies - Concept: MTH#C0422807 - Based on: QuestionAnswerRecorded - Description: "Number of previous pregnancies." - TopicCode is LNC#75201-4 - - EntryElement: NumberOfLivingChildren - Concept: MTH#C2229975 - Based on: QuestionAnswerRecorded - Description: "Number of living children." - TopicCode is LNC#11638-4 - - -EntryElement: HIVScreeningTestPerformed -Based on: LaboratoryProcedurePerformed -Concept: TBD -Description: "The performance of a HIV Screening Test. Results will be in an accompanying observation." -1..1 TopicCode from HIVScreeningTestCodeVS // potentially useful value set is LNC#75622-1 "HIV 1 and 2 tests - Meaningful Use set" - -EntryElement: HIVSupplementalTestPerformed -Based on: LaboratoryProcedurePerformed -Concept: TBD -Description: "The performance of supplement HIV test, following up an initial screening. Results are in the form of an observation." -1..1 TopicCode from HIVSupplementalTestCodeVS - -EntryElement: HIVScreeningTestRequested -Based on: LaboratoryProcedureRequested -Concept: TBD -Description: "A request for a rapid HIV screening test." -1..1 TopicCode from HIVScreeningTestCodeVS - -EntryElement: HIVSupplementalTestRequested -Based on: LaboratoryProcedureRequested -Concept: TBD -Description: "A request for a confirmatory or additional test for HIV infection." -1..1 TopicCode from HIVSupplementalTestCodeVS - - -/* - -Postmenopausal Status: -□ Prior bilateral oophorectomy -□ Age ≥ 60 years -□ Age < 60 years and no menses for ≥ 1 year with FSH and estradiol levels within postmenopause range - - - - -EntryElement: PreviousPregnancyDetails -Concept: TBD -Description: "The details of a previous pregnancy." -1..1 PregnancyOrdinal -1..1 PregnancyOutcome -DeliveryDate -GestationalAge -DurationOfLabor -BirthWeight -GenderOfBaby -TypeOfDelivery -AnesthesiaType -PlaceOfDelivery -DurationOfBreastFeeding -Complications CodeableConcept from CommonPregnancyComplicationVS -Comorbidities -*/ \ No newline at end of file diff --git a/shr_sexualhealth_map.txt b/shr_sexualhealth_map.txt deleted file mode 100644 index 1578c115..00000000 --- a/shr_sexualhealth_map.txt +++ /dev/null @@ -1,3 +0,0 @@ -Grammar: Map 5.1 -Namespace: shr.sex -Target: FHIR_STU_3 diff --git a/shr_sexualhealth_vs.txt b/shr_sexualhealth_vs.txt deleted file mode 100644 index 6b8bb39a..00000000 --- a/shr_sexualhealth_vs.txt +++ /dev/null @@ -1,135 +0,0 @@ -Grammar: ValueSet 5.0 -Namespace: shr.sexualhealth - -CodeSystem: MTH = http://ncimeta.nci.nih.gov -CodeSystem: LNC = http://loinc.org -CodeSystem: SCT = http://snomed.info/sct - -ValueSet: GenderIdentityVS -#male_gender "Identifies as male, exclusively, usually, or primarily" -#female_gender "Identifies as female, exclusively, usually, or primarily " -#agender "Does not identify with any gender" -#bigender "Identifies with both male and female genders, either simultaneously, or changing fluidly over time" -#unsure_gender "Uncertain or searching for gender identity" -#trans_female "Male (at birth) who identifies as a female" -#trans_male "Female (at birth) who identifies as a male" - - -ValueSet: SexualOrientationVS -Includes codes descending from SCT#365956009 - - -ValueSet: CommonPregnancyComplicationVS -MTH#C0011570 "Mental depression" -MTH#C0221074 "Postpartum depression" -MTH#C0032914 "Pre-eclampsia (hypertension occuring during pregnancy)" -MTH#C0149871 "Deep Vein Thrombosis" -MTH#C0002871 "Anemia" -MTH#C0240713 "Perineal Tearing" -MTH#C0079924 "Oligohydramnios" -MTH#C0085207 "Gestational Diabetes" -MTH#C0032987 "Ectopic Pregnancy" -MTH#C0151526 "Preterm Birth" -MTH#C0000786 "Miscarriage (spontaneous abortion)" -MTH#C0032046 "Placenta Previa" -MTH#C2937358 "Cerebral hemorrhage" -MTH#C0020450 "Hyperemesis gravidarum" - -ValueSet: ContraceptiveMethodVS -#no_contraceptive "Not using contraceptive" -#implant "Implanted long-term contraceptive" -#iud "Intrauterine device or system" -#sterilized_female "Female sterilization, e.g., tubal ligation" -#sterilized_male "Male sterilization, e.g., vasectomy" -#injectable "Injectable contraceptive" -#lam "Lactational amenorrhea method" -#oral "Oral contraceptive" -#patch "Contraceptive patch" -#ring "Vaginal ring" -#condom_male "Male condom" -#condom_female "Female condom" -#fam "Fertility awareness method aka natural family planning aka rhythm method" -#withdrawal "Withdrawal method aka coitus interruptus" -#spermicide "Use of spermicide." -#sponge "Contraceptive sponge" -#partner "Rely on partner to provide." -#emergency "Emergency contraceptive, the 'morning after' pill." - -ValueSet: ContraceptiveMethodReasonVS -#control "Gives subject control the use of contraceptive." -#safer_sex "Method of contraceptive provides safer sex." -#convenient "Easy to use." -#long_term "Provides long term protection." -#available "Easily available, affordable." - -ValueSet: ContraceptiveNotUsedReasonVS -#abstinent "Abstains from sexual intercourse." -#new "Newly sexually active, has not yet sought birth control." -#seeking "Seeking to become pregnant or accepting of the prospect of pregnancy." -#sterility "Either partner is sterile (other than being sterilized for contraceptive purposes, which counts as a method of contraception)." -#same_sex "Partner of same sex." -#pregnant "Partner is pregnant." -#not_at_risk "Not at risk of unintended pregnancy, for example, post-menopausal." -#decline "Declines to use any method of birth control." -#unavailable "Difficulty obtaining contraceptive, for reasons of cost or access." -#inconvenient "Using contraceptive is inconvenient." - -ValueSet: SexualActivityVS -MTH#C0425726 "Never been sexually active" -MTH#C0425725 "Currently not sexually active" -MTH#C0036899 "Sexually abstinent" -MTH#C4272228 "Sexually active, heterosexual activity" -MTH#C2046970 "Sexually active, homosexual activity" -MTH#C2135319 "Sexually active in mutually monogamous relationship" -MTH#C2135645 "Sexually active with prostitutes" -MTH#C2220418 "Sexually active as a prostitute" -MTH#C2229925 "Sexually active with lack of responsibility" -MTH#C2220257 "Sexually active with frequent new partners" -MTH#C2220419 "Sexually active with persons at risk for HIV-related disease" -MTH#C2229924 "Sexually active and practicing safe(r) sex" -MTH#C2133544 "Sexually active and trying to become pregnant" - -ValueSet: IntercourseDifficultyVS -MTH#C1384606 "Dyspareunia (difficult or painful intercourse)" -MTH#C2219920 "Lack of sensation felt during sexual intercourse" -MTH#C0011124 "Decreased libido" -MTH#C2220018 "Aversion to sexual intercourse" -MTH#C0425739 "Vaginal dryness on intercourse" -MTH#C0156406 "Postcoital bleeding" -MTH#C0278103 "Fear of intercourse" -MTH#C0425732 "Sexual intercourse difficult" -MTH#C0455842 "Problem getting an erection" -MTH#C0858253 "Inability to maintain erection" -MTH#C0033038 "Premature ejaculation" -MTH#C0425761 "Failure of orgasm" - -ValueSet: HIVScreeningTestCodeVS -//TBD - -ValueSet: HIVScreeningTestResultVS // from FPAR2 ACOG, combines LL3021-4, LL2017-3, LL1996-9, LL2038-9 -LNC#LA6576-8 "Positive (HIV positive, undifferentiated)" -LNC#LA6577-6 "Negative (HIV negative)" -LNC#LA11884-6 "Indeterminant" -LNC#LA15841-2 "Invalid" -//Undetectable, Negative -//Detectable, Negative -//Repeatedly reactive - -ValueSet: HIVSupplementalTestCodeVS -//TBD - -ValueSet: HIVSupplementalTestResultVS -LNC#LA15256-3 "Nonreactive" -LNC#LA15255-5 "Reactive" -LNC#LA18330-3 "HIV-1 reactive (positive)" -LNC#LA18331-1 "HIV-2 reactive (positive)" -LNC#LA18332-9 "HIV reactive (undifferentiated)" -// Ag and Ab tests -LNC#LA21479-3 "HIV1 p24 Antigen (+) and HIV 1+2 Antibody (-)" -LNC#LA21480-1 "HIV1 p24 Antigen (-) and HIV 1+2 Antibody (+)" -LNC#LA21481-9 "HIV1 p24 Antigen (+) and HIV 1+2 Antibody (+)" -LNC#LA21482-7 "HIV1 p24 Antigen (-) and HIV 1+2 Antibody (-)" -LNC#LA11884-6 "Indeterminant" -LNC#LA15841-2 "Invalid" - - diff --git a/shr_vital.txt b/shr_vital.txt deleted file mode 100644 index 874c87d7..00000000 --- a/shr_vital.txt +++ /dev/null @@ -1,127 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: shr.vital -Description: "The SHR Vital domain contains definitions for basic physiological measurements categorized as vital signs." -Uses: shr.core, shr.base, shr.finding, shr.action, shr.entity, shr.procedure - -CodeSystem: LNC = http://loinc.org -CodeSystem: UCUM = http://unitsofmeasure.org -CodeSystem: MTH = http://ncimeta.nci.nih.gov -CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category - -//------------------ Vital Sign --------------------------- - -Element: VitalSign -Based on: EvaluationResultRecorded -Concept: LNC#8716-3 "Vital Sign" -Value: 0..1 Quantity // TODO: this generates a warning because no units are specified - Quantity.Units from http://hl7.org/fhir/ValueSet/ucum-vitals-common - TopicCode from http://hl7.org/fhir/ValueSet/observation-vitalsignresult if covered -1..1 Subject -1..* Category includes OBSCAT#vital-signs - - -//------------------- Specific Vital Sign Tests ----------------------------- - -EntryElement: RespiratoryRate -Based on: VitalSign -Concept: LNC#9279-1 -Description: "The rate of breathing (inhalation and exhalation) measured within in a unit time, expressed as breaths per minute." -Value: Quantity with units UCUM#/min "/min" - TopicCode is LNC#9279-1 - Precondition from RespiratoryRateQualifierVS -0..1 EvaluationMethod from RespiratoryRateMethodVS - -EntryElement: HeartRate -Based on: VitalSign -Concept: LNC#8867-4 -Description: "The number of times the heart ventricles contract per unit of time, usually per minute." -Value: Quantity with units UCUM#/min "/min" - TopicCode is LNC#8867-4 - Precondition from HeartRateQualifierVS -0..1 EvaluationMethod from HeartRateMethodVS - -EntryElement: OxygenSaturation -Based on: VitalSign -Concept: LNC#59408-5 -Description: "Oxygen saturation in Arterial blood by Pulse oximetry." -Value: Quantity with units UCUM#% "%" - TopicCode is LNC#59408-5 -0..1 BodySite from OxygenSaturationBodySiteVS - -EntryElement: BodyTemperature -Based on: VitalSign -Concept: LNC#8310-5 -Description: "The measure of the level of heat in a human or animal." -Value: Quantity with units UCUM#Cel "C" - TopicCode is LNC#8310-5 - BodySite from BodyTemperatureBodySiteVS - Precondition from BodyTemperatureQualifierVS - -EntryElement: BodyHeight -Based on: VitalSign -Concept: LNC#8302-2 -Description: "The distance from the sole to the crown of the head." -Value: Quantity with units UCUM#cm "cm" - TopicCode is LNC#8302-2 - Precondition from BodyHeightQualifierVS - -EntryElement: BodyLength -Based on: BodyHeight -Concept: LNC#8306-3 -Description: "The distance from the sole of the foot to the crown of the head, lying down (typically 0-2 years)." -Value: Quantity with units UCUM#cm "cm" - TopicCode is LNC#8306-3 - -EntryElement: BodyWeight -Based on: VitalSign -Concept: LNC#29463-7 -Description: "The mass or quantity of heaviness of an individual. Does not include estimates of fetal bodyweight." -Value: Quantity with units UCUM#kg "kg" - TopicCode is LNC#29463-7 - Precondition from BodyWeightQualifierVS - -EntryElement: HeadCircumference -Based on: VitalSign -Concept: LNC#8287-5 -Description: "Circumference of the head (typically 0-2 years)." -Value: Quantity with units UCUM#cm "cm" - TopicCode is LNC#8287-5 - -EntryElement: BodyMassIndex -Based on: VitalSign -Concept: LNC#39156-5 -Description: "A general indicator of the body fat an individual is carrying based upon the ratio of weight to height." -Value: Quantity with units UCUM#kg/m2 "kg/m2" - - -EntryElement: BloodPressure // EvaluationResultRecorded with components -Based on: VitalSign -Concept: LNC#55284-4 -Description: "The force of circulating blood on the walls of the arteries." -0..0 Value - BodySite from BloodPressureBodySiteVS - EvaluationMethod from BloodPressureMethodVS - Precondition from BloodPressureQualifierVS - TopicCode is LNC#55284-4 -0..1 HeadTiltAngle - EvaluationComponent -includes 0..1 SystolicPressure -includes 0..1 DiastolicPressure - - - Element: SystolicPressure - Concept: LNC#8480-6 - Based on: EvaluationComponent - Description: "The blood pressure during the contraction of the left ventricle of the heart, when blood pressure is at its highest." - Value: Quantity with units UCUM#mm[Hg] "mmHg" - - Element: DiastolicPressure - Concept: LNC#8462-4 - Based on: EvaluationComponent - Description: "The blood pressure after the contraction of the heart while the chambers of the heart refill with blood, when the pressure is lowest." - Value: Quantity with units UCUM#mm[Hg] "mmHg" - - Element: HeadTiltAngle // This qualifier is only used during a tilt table test. - Concept: LNC#8360-0 - Description: "The angle at which the head is tilted relative to a level position while physiologic tests are taken." - Value: Quantity with units UCUM#deg "deg" diff --git a/shr_vital_map.txt b/shr_vital_map.txt deleted file mode 100644 index 96aa913b..00000000 --- a/shr_vital_map.txt +++ /dev/null @@ -1,43 +0,0 @@ -Grammar: Map 5.1 -Namespace: shr.vital -Target: FHIR_STU_3 - -/* TODO: something goes wrong here in 5.3.1... - -ERROR_CODE:13034 (module=shr-fhir-export, shrId=shr.vital.VitalSign, target=http://hl7.org/fhir/StructureDefinition/vitalsigns, mappingRule="fix related.type to #has-member\r") - -[16:22:51.117Z] ERROR shr: Invalid or unsupported target path. ERROR_CODE:13006 (module=shr-fhir-export, shrId=shr.vital.VitalSign, target=http://hl7.org/fhir/StructureDefinition/vitalsigns) - - mappingRule: EvaluationComponent.CodeableConcept maps to component.value[x] -[16:22:51.125Z] ERROR shr: Invalid or unsupported target path. ERROR_CODE:13006 (module=shr-fhir-export, shrId=shr.vital.VitalSign, target=http://hl7.org/fhir/StructureDefinition/vitalsigns) - - -VitalSign maps to http://hl7.org/fhir/StructureDefinition/vitalsigns: - -RespiratoryRate maps to http://hl7.org/fhir/StructureDefinition/resprate: - -HeartRate maps to http://hl7.org/fhir/StructureDefinition/heartrate: - -OxygenSaturation maps to http://hl7.org/fhir/StructureDefinition/oxygensat: - -BodyTemperature maps to http://hl7.org/fhir/StructureDefinition/bodytemp: - -BodyHeight maps to http://hl7.org/fhir/StructureDefinition/bodyheight: - -BodyLength maps to http://hl7.org/fhir/StructureDefinition/bodylength: - -BodyWeight maps to http://hl7.org/fhir/StructureDefinition/bodyweight: - -HeadCircumference maps to http://hl7.org/fhir/StructureDefinition/headcircum: - -BodyMassIndex maps to http://hl7.org/fhir/StructureDefinition/bmi: - - -BloodPressure maps to http://hl7.org/fhir/StructureDefinition/bp: -//SystolicPressure maps to component (slice # = 1) -//SystolicPressure.TopicCode maps to component.code -//SystolicPressure.Quantity maps to component.value[x] -//DiastolicPressure maps to component (slice # = 2) -//DiastolicPressure.TopicCode maps to component.code -//DiastolicPressure.Quantity maps to component.value[x] -*/ \ No newline at end of file diff --git a/shr_vital_vs.txt b/shr_vital_vs.txt deleted file mode 100644 index 0dd1577a..00000000 --- a/shr_vital_vs.txt +++ /dev/null @@ -1,125 +0,0 @@ -Grammar: ValueSet 5.0 -Namespace: shr.vital - -CodeSystem: LNC = http://loinc.org -CodeSystem: MTH = http://ncimeta.nci.nih.gov -CodeSystem: NCI = https://ncit.nci.nih.gov/ncitbrowser/ConceptReport.jsp?dictionary=NCI_Thesaurus - -ValueSet: RespiratoryRateQualifierVS -Concept: TBD -Description: "Details of a respiratory rate measurement." -#rest "resting or pre-exercise" -#post_exercise "post exercise" -#max_voluntary "maximum voluntary ventilation" -#post_bronchoscopy "post bronchoscopy" -#post_cardioversion "post cardioversion" -#post_sedation "post conscious sedation" -#post_therapy "post inhalation therapy" -#pre_bronchoscopy "pre bronchoscopy" -#pre_cardioversion "pre cardioversion" -#pre_sedation "pre conscious sedation" -#pre_therapy "pre inhalation therapy" -#vent_spont "on ventilator, spontaneous" -#vent "on ventilator, mechanical and spontaneous" -#vent_mech "on ventilator, mechanical" - -ValueSet: RespiratoryRateMethodVS -Concept: TBD -Description: "Methods of measuring respiratory rate." -#acoustic "Acoustic measurement" -#airway_flow "Airway flow measurement" -#co2 "Carbon dioxide measurement" -#imped "Transthoracic impedance" -#spiro "Spirometry" -#capillary "Capillary blood" - -ValueSet: HeartRateQualifierVS -Concept: TBD -Description: "Details of a heart rate measurement." -#rest "resting or pre-exercise" -#post_exercise "post exercise" -#apgar_1 "1 minute Apgar heart rate" -#apgar_5 "5 minute Apgar heart rate" -#apgar_10 "10 minute Apgar heart rate" - -ValueSet: HeartRateMethodVS -Concept: LNC#8886-4 -Description: "Method of measuring heart rate." -#pulseox "Pulse oximetry" -#pedometer "Pedometer" -#auscul "Auscultation" -#palp "Palpation" -#invasive "Invasive (e.g. intra arterial)" -#us_doppler "US Doppler" -#ecg "Electrocardiogram" - -ValueSet: OxygenSaturationBodySiteVS -MTH#C0729895 "Fingertip" -MTH#C0229315 "Ear lobe" -MTH#C0016504 "Foot" -MTH#C081709 "Chest" -MTH#0016540 "Forehead" - -ValueSet: BodyTemperatureQualifierVS -#max_illness "Maximum temperature during an illness" - -ValueSet: BodyTemperatureBodySiteVS -MTH#C0004454 "Axilla (underarm)" -MTH#C0226896 "Oral cavity" -MTH#C0521421 "Ear" -MTH#C0041445 "Tympanic membrane" -MTH#C0039482 "Temporal artery (forehead)" -MTH#C0034896 "Rectal" -MTH#C0005682 "Urinary bladder" -MTH#C0027423 "Nasal" -MTH#C0027442 "Nasopharynx" -MTH#C0016129 "Finger" -MTH#C0040357 "Toe" - -ValueSet: BodyHeightQualifierVS -LNC#8301-4 "Body height estimated" -LNC#3137-7 "Body height measured" -// LNC#3138-5 "Body height stated" Not needed; this is handled by Informant field in Entry -LNC#8306-3 "Body height lying" -LNC#8305-5 "Body height post partum" -LNC#8307-1 "Body height preoperative" -LNC#8308-9 "Body height standing" -#shoes_on "Body height wearing shoes" - -ValueSet: BodyWeightQualifierVS -#meas "Measured" -#est "Estimated" -#ideal "Ideal" -#clothed "with clothes" -#unclothed "without clothes" -#pre_dialysis "pre dialysis" -#post_dialysis "post dialysis" -#preop "pre operative" -#postop "pre pregnancy" -#antepartum "ante partum" -#delivery "mother at delivery" -#postpartum "post partum" -#birth "birth weight" -#dry "dry" - -ValueSet: BloodPressureMethodVS -Concept: MTH#C0489446 -Description: "The method used to measure blood pressure." -#cuff_manual "Cuff method, manual" -#cuff_auto "Cuff method, automatic" -#intravascular "Intravascular method" -#continuous "Continuous non-invasive monitoring" - -ValueSet: BloodPressureQualifierVS -Description: "Code further describing the blood pressure measurement." -#pre_transfusion "pre transfusion" -#post_transfusion "post transfusion" -#pre_phlebotomy "pre phlebotomy" -#post_phlebotomy "post phlebotomy" -#expiration "during expiration" -#inspiration "during inspiration" -MTH#C0242880 "During tilt table test" - -ValueSet: BloodPressureBodySiteVS -MTH#C0446516 "Arm" -MTH#C1140621 "Leg" \ No newline at end of file diff --git a/spec/cimi_adverse.txt b/spec/cimi_adverse.txt index 6ce05a63..558aeb29 100644 --- a/spec/cimi_adverse.txt +++ b/spec/cimi_adverse.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.adverse Description: "The CIMI Adverse domain contains definitions for describing adverse events and adverse reactions." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.context, cimi.topic, cimi.statement, cimi.entity, shr.research, cimi.medication +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity, shr.research, cimi.medication CodeSystem: MTH = http://ncimeta.nci.nih.gov @@ -64,9 +64,8 @@ Description: "An instance of a negative response to a substance." //---------------- Instantiations -------------- EntryElement: AdverseReactionPresenceStatement -Based on: ClinicalStatement +Based on: AssertionPresenceStatement StatementTopic is type AdverseReactionTopic - StatementContext is type PresenceContext // AdverseReactionTopic.CausalAttribution value is type CodeableConcept // mapping to FHIR diff --git a/spec/cimi_allergy.txt b/spec/cimi_allergy.txt index 70ba3c56..8ae454c6 100644 --- a/spec/cimi_allergy.txt +++ b/spec/cimi_allergy.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.allergy Description: "The SHR Allergy domain contains definitions for statements dealing with substance-related risks, particularly, allergies and intolerances." -Uses: shr.core, shr.base, cimi.core, cimi.context, cimi.topic, cimi.statement, cimi.entity, cimi.element, cimi.adverse +Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.entity, cimi.element, cimi.adverse CodeSystem: SCT = http://snomed.info/sct CodeSystem: CAT = http://hl7.org/fhir/allergy-intolerance-category @@ -19,9 +19,20 @@ Description: "A finding related to the presence or absence of an individual's ri Description:"A substance that causes an allergic reaction or irritation." Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-substance -Element: AdverseSensitivityPresenceContext -Based on: PresenceContext -Description: "Context for adverse sensitivities that are known or suspected to exist." + +//--------------- Instantiations ------------------- + +EntryElement: AdverseSensitivityToSubstanceStatement +Based on: ClinicalStatement +Concept: SCT#473010000 "Hypersensitivity condition (disorder)" // or SCT#420134006 "Propensity to adverse reactions (disorder)"? +Description: "A finding related to the presence or absence of an individual's risk or sensitivity to a substance or class of substances. A finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time." +1..1 SubjectOfInformation value is type ref(Patient) + SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson + Signed.Attribution.EntityOrRole is type PatientOrPractitioner // to facilitate mapping to FHIR, which only allows Patient or Practitioner as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) + StatementTopic is type AdverseSensitivityTopic +1..1 StatementTopic.AllergenIrritant // US Core requirement. See http://hl7.org/fhir/us/core/StructureDefinition-us-core-allergyintolerance.html + StatementTopic.TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" +// not needed AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution value is type CodeableConcept 0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status 1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status 0..1 Criticality from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality @@ -42,33 +53,15 @@ Description: "Context for adverse sensitivities that are known or suspected to e Concept: TBD Description: "The time of the last or latest of a series of events." Value: dateTime - - -//--------------- Instantiations ------------------- - -EntryElement: AdverseSensitivityToSubstanceStatement -Based on: ClinicalStatement -Concept: SCT#473010000 "Hypersensitivity condition (disorder)" // or SCT#420134006 "Propensity to adverse reactions (disorder)"? -Description: "A finding related to the presence or absence of an individual's risk or sensitivity to a substance or class of substances. A finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time." -1..1 SubjectOfInformation value is type ref(Patient) - SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson - Signed.Attribution.EntityOrRole is type PatientOrPractitioner // to facilitate mapping to FHIR, which only allows Patient or Practitioner as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) - StatementTopic is type AdverseSensitivityTopic - StatementContext is type AdverseSensitivityPresenceContext -1..1 StatementTopic.AllergenIrritant // US Core requirement. See http://hl7.org/fhir/us/core/StructureDefinition-us-core-allergyintolerance.html - StatementTopic.TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" -// not needed AdverseSensitivityPresenceContext.AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution value is type CodeableConcept - EntryElement: NoAdverseSensitivityToSubstanceStatement -Based on: ClinicalStatement +Based on: AssertionAbsenceStatement Description: "Used to record that a particular substance or class of substances does not pose a known elevated risk to the subject." 1..1 SubjectOfInformation value is type ref(Patient) SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson Signed.Attribution.EntityOrRole is type PatientOrPractitioner StatementTopic is type AdverseSensitivityTopic AdverseSensitivityTopic.TopicCode is SCT#716186003 "No known allergy (situation)" - StatementContext is type AbsenceContext StatementTopic.TopicCode from NoKnownAllergyVS EntryElement: NoKnownDrugAllergyStatement diff --git a/spec/cimi_allergy_map.txt b/spec/cimi_allergy_map.txt index d0c58ce5..a8129ad6 100644 --- a/spec/cimi_allergy_map.txt +++ b/spec/cimi_allergy_map.txt @@ -11,17 +11,17 @@ AdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/Struc AdverseSensitivityTopic.AllergenIrritant maps to code AdverseSensitivityTopic.Type maps to type AdverseSensitivityTopic.SubstanceCategory maps to category - AdverseSensitivityPresenceContext.VerificationStatus maps to verificationStatus - AdverseSensitivityPresenceContext.ClinicalStatus maps to clinicalStatus - AdverseSensitivityPresenceContext.Criticality maps to criticality - AdverseSensitivityPresenceContext.Onset maps to onset[x] - AdverseSensitivityPresenceContext.MostRecentOccurrenceTime maps to lastOccurrence - AdverseSensitivityPresenceContext.AdverseReactionPresenceStatement.AdverseReactionTopic.Manifestation.Severity maps to reaction.severity - AdverseSensitivityPresenceContext.AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution.RouteIntoBody maps to reaction.exposureRoute - AdverseSensitivityPresenceContext.AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution maps to reaction.substance - AdverseSensitivityPresenceContext.AdverseReactionPresenceStatement.AdverseReactionTopic.Manifestation.Value maps to reaction.manifestation - AdverseSensitivityPresenceContext.AdverseReactionPresenceStatement.AdverseReactionTopic.Details maps to reaction.description - AdverseSensitivityPresenceContext.AdverseReactionPresenceStatement.PresenceContext.Onset maps to reaction.onset + VerificationStatus maps to verificationStatus + ClinicalStatus maps to clinicalStatus + Criticality maps to criticality + Onset maps to onset[x] + MostRecentOccurrenceTime maps to lastOccurrence + AdverseReactionPresenceStatement.AdverseReactionTopic.Manifestation.Severity maps to reaction.severity + AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution.RouteIntoBody maps to reaction.exposureRoute + AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution maps to reaction.substance + AdverseReactionPresenceStatement.AdverseReactionTopic.Manifestation.Value maps to reaction.manifestation + AdverseReactionPresenceStatement.AdverseReactionTopic.Details maps to reaction.description + AdverseReactionPresenceStatement.Onset maps to reaction.onset NoAdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: diff --git a/spec/cimi_context.txt b/spec/cimi_context.txt deleted file mode 100644 index 8aa10508..00000000 --- a/spec/cimi_context.txt +++ /dev/null @@ -1,66 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: cimi.context -Description: "The Context Package defines the high-level clinical statement context classes. Three types of contexts are currently defined in CIMI (1) Finding Contexts, (2) Action Contexts, and (3) Event Concepts. Finding contexts are used to specify whether a finding was observed to be present or absent. Action contexts are used to specify whether a clinical activity was performed, ordered, planned, or perhaps not performed. The Event context is experimental and has not yet been formally modeled." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity, cimi.encounter, shr.entity - -CodeSystem: MTH = http://ncimeta.nci.nih.gov -// - -Element: ConditionPresenceContext -Based on: PresenceContext -Concept: TBD -Description: "The context for a condition that is known, suspected, or possibly present." -1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical -0..1 WhenClinicallyRecognized -0..1 Preexisting -0..1 Severity from http://hl7.org/fhir/ValueSet/condition-severity -0..1 Criticality from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality -0..1 Stage - - Element: ClinicalStatus - Concept: TBD - Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." - Value: code - - Element: WhenClinicallyRecognized - Concept: TBD - Description: "The time at which a condition or condition was first identified in a healthcare context." - Value: date - - Element: Preexisting - Concept: LNC#89251-3 "Condition present on admission" - Description: "If the problem or condition existed before the current episode of care." - Value: CodeableConcept from YesNoUnknownVS - - Element: Severity - Concept: MTH#C0392364 - Description: "Degree of harshness or extent of a symptom, disorder, or condition." - Value: CodeableConcept - - Element: Criticality - Concept: MTH#C3858539 "Criticality" - Description: "The potential clinical harm associated with a condition. When the worst case result is assessed to have a life-threatening or organ system threatening potential, it is considered to be of high criticality." - Value: code - - Element: Stage - Concept: MTH#C0699749 - Description: "The relative advancement in the course of a disease. The value is the summary stage or stage group. StageDetail optionally contains the full staging information." - Value: CodeableConcept - 0..1 StageDetail - - Element: StageDetail - Concept: TBD - Description: "The full staging information" - Value: ref(Observation) - - - - -/* TBD -Element: DefinitionalContext -Based on: StatementContext -Concept: MTH#C1704788 -Description: "An indicator that the item is a description of a thing, not a thing that actually exists. For example, a group of people between ages 30 and 40 with Type II diabetes can be defined, without existing as a set of particular people." -Value: boolean -*/ - \ No newline at end of file diff --git a/spec/cimi_context_vs.txt b/spec/cimi_context_vs.txt deleted file mode 100644 index a1f17440..00000000 --- a/spec/cimi_context_vs.txt +++ /dev/null @@ -1,86 +0,0 @@ -Grammar: ValueSet 5.0 -Namespace: cimi.context - -CodeSystem: SCT = http://snomed.info/sct -CodeSystem: MTH = http://ncimeta.nci.nih.gov - -ValueSet: ExceptionValueVS -Description: "Reasons that a value associated with a test or other finding is missing. Includes all codes from http://hl7.org/fhir/ValueSet/data-absent-reason version 3.3.0 and additional codes covering other missing value circumstances." -#unknown "Unknown: The value is not known." -#asked-unknown "Asked But Unknown: The source human does not know the value." -#temp-unknown "Temporarily Unknown: There is reason to expect (from the workflow) that the value may become known." -#not-asked "Not Asked: The workflow didn't lead to this value being known." -#asked-declined "Asked But Declined: The source was asked but declined to answer." -#masked "Masked: The information is not available due to security, privacy or related reasons." -#not-applicable "Not Applicable: There is no proper value for this element (e.g. last menstrual period for a male)" -#unsupported "Unsupported: The source system wasn't capable of supporting this element." -#as-text "As Text: The content of the data is represented in the resource narrative." -#error "Error: Some system or workflow process error means that the information is not available." -#not-a-number "Not a Number (NaN): The numeric value is undefined or unrepresentable due to a floating point processing error." -#negative-infinity "Negative Infinity (NINF): The numeric value is excessively low and unrepresentable due to a floating point processing error." -#positive-infinity "Positive Infinity (PINF): The numeric value is excessively high and unrepresentable due to a floating point processing error." -#not-performed "Not Performed: The value is not available because the observation procedure (test, etc.) was not performed." -#not-permitted "Not Permitted: The value is not permitted in this context (e.g. due to profiles, or the base data types)" -// The following values are extensions to the FHIR values, applicable to lab tests -#indeterminate-value "The value could not be determined or established with accuracy or certainty." -#no-further-explanation "The reason the information is not present is not known." -#null-answer "The answer is appears missing because the correct answer is null or empty; e.g., a question that asks for a list of the names of siblings applied to an only child." -#specimen-unavailable "Missing due to a problem collecting, identifying, or locating the specimen, including patient refusal or unable to provide specimen" -#specimen-inadequate "Missing due to a problem with the specimen, e.g. inadequate specimen, contamination, clotting, improper tube type, improper storage, too small, etc." -#instrument-malfunction "Missing due to instrument malfunction." - - -ValueSet: PresenceContextVS -Description: "A code describing whether the finding in question is present, possible, suspected, etc." -//SCT#36692007 "Known" -//SCT#410605003 "Confirmed present" -//SCT#410591008 "Definitely present" -SCT#410515003 "Known present" -SCT#410590009 "Known possible" -SCT#410592001 "Probably present" -SCT#415684004 "Suspected" -SCT#410593006 "Probably not present" -SCT#261665006 "Unknown" - -ValueSet: AbsenceContextVS -Description: "A code describing whether the finding is question is absent, unknown, or not suspected." -SCT#410516002 "Known absent" -SCT#410594000 "Definitely not present" -SCT#410593006 "Probably not present" -SCT#428263003 "NOT suspected" -// No known?? - -ValueSet: AtRiskContextVS -Description: "A code describing the sense in which the subject has risk of a hypothetical (future) finding. At present, this value set contains only one code, but it is presented as a value set to allow for more nuanced meanings in the future." -SCT#410519009 "At risk" - -ValueSet: ExpectationContextVS -Description: "A code describing the sense in which a finding is expected." -SCT#410517006 "Expected" -SCT#410596003 "Likely outcome" -SCT#410595004 "Prognosis" -SCT#71033007 "Impending" - -ValueSet: GoalContextVS -Description: "A code describing the sense in which a finding is a goal or objective." -SCT#703039001 "Health objective" -SCT#410518001 "Goal" - - -ValueSet: DeltaFlagVS -Concept: MTH#C1705241 -Description: "Indicators for degree of change (delta) from the last or previous measurement." -Includes codes descending from SCT#263703002 "Changed status (qualifier value)" -// Also see LOINC #89253-9 Trend ... has values improved, deteriorated, stablized, resolved - -/* -ValueSet: DeltaFlagVS -Description: "Change patterns and trends, including resolved." -Includes codes descending from SCT#385634002 "Change patterns (qualifier value)" -//SCT#58158008 "Stable (qualifier value)" -//SCT#385633008 "Improving (qualifier value)" -//SCT#230993007 "Worsening (qualifier value)" -//SCT#260369004 "Increasing (qualifier value)" -//SCT#260371004 "Decreasing (qualifier value)" -SCT#723506003 "Resolved (qualifier value)" -*/ \ No newline at end of file diff --git a/spec/cimi_core.txt b/spec/cimi_core.txt index 16907629..9a9572ce 100644 --- a/spec/cimi_core.txt +++ b/spec/cimi_core.txt @@ -10,11 +10,11 @@ Description: "Abstract top level class in the CIMI hierarchy. The Locatable clas Element: Independent Based on: Locatable -Description: "Base class for classes in CIMI that include enough context to stand alone. Analogous to FHIR's DomainResource." +Description: "Base class for classes in CIMI that stand alone. Analogous to FHIR's DomainResource." Element: NonIndependent // aka data element Based on: Locatable -Description: "Parent for classes in CIMI that do not have enough context to stand alone. These reusable building blocks/data elements can be used to create classes by composition." +Description: "Parent for classes in CIMI that cannot stand alone. These reusable building blocks/data elements can be used to create classes by composition." Element: DataType Based on: NonIndependent diff --git a/spec/cimi_encounter.txt b/spec/cimi_encounter.txt index 59a1389c..8f9552c0 100644 --- a/spec/cimi_encounter.txt +++ b/spec/cimi_encounter.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.encounter Description: "The Encounter domain contains definitions that capture interactions between the person of record and healthcare providers, including inpatient, ambulatory care, and telecare." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.context, cimi.topic, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity Element: Encounter @@ -119,15 +119,15 @@ Description: "A detailed description of an interaction between a patient and hea /* -Element: EncounterRequestedContext -Based on: RequestedContext -Description: "Context for encounter requests." +Element: EncounterRequestedCxntext +Based on: RequestedCxntext +Description: "Cxntext for encounter requests." Status from http://hl7.org/fhir/ValueSet/request-status PriorityRank from http://hl7.org/fhir/ValueSet/request-priority -Element: EncounterPerformedContext -Based on: PerformedContext -Description: "Context for encounters performed." +Element: EncounterPerformedCxntext +Based on: PerformedCxntext +Description: "Cxntext for encounters performed." Status from http://hl7.org/fhir/ValueSet/encounter-status OccurrenceTimeOrPeriod is type OccurrencePeriod Reason should be from http://hl7.org/fhir/ValueSet/encounter-reason diff --git a/spec/cimi_encounter_map.txt b/spec/cimi_encounter_map.txt index 65dd26c1..849d6a2e 100644 --- a/spec/cimi_encounter_map.txt +++ b/spec/cimi_encounter_map.txt @@ -14,7 +14,7 @@ Encounter maps to Encounter: // constrain participant.type to 0..1 // Participant.ParticipationType maps to participant.type // Participant.ParticipationPeriod maps to participant.period -// PerformedContext.RelatedRequest.Value maps to incomingReferral +// RelatedRequest.Value maps to incomingReferral // constrain location to 0..1 // Facility maps to location.location // Reason maps to reason @@ -30,14 +30,14 @@ EncounterRequested maps to ReferralRequest: TopicCode maps to type //TreatmentCooperation //PaymentSource - EncounterRequestedContext.Status maps to status -//RequestedContext.RequestIntent - EncounterRequestedContext.ExpectedPerformanceTime maps to occurrence[x] - EncounterRequestedContext.ExpectedPerformerType maps to specialty -//RequestedContext.ExpectedPerformer -//RequestedContext.ExpectedMethod - EncounterRequestedContext.PriorityRank maps to priority -//RequestedContext.PerformerInstructions -//RequestedContext.PatientInstructions -//RequestedContext.CommunicationMethod + EncounterStatus maps to status +//RequestIntent + EncounterExpectedPerformanceTime maps to occurrence[x] + EncounterExpectedPerformerType maps to specialty +//ExpectedPerformer +//ExpectedMethod + EncounterPriorityRank maps to priority +//PerformerInstructions +//PatientInstructions +//CommunicationMethod */ \ No newline at end of file diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index a3c8ae7c..9191aa18 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.entity Description: "The namespace containing definitions for basic classes in CIMI." -Uses: shr.core, cimi.core, cimi.context, cimi.element, cimi.statement +Uses: shr.core, cimi.core, cimi.element, cimi.statement Abstract Element: EntityOrRole diff --git a/spec/cimi_entity_map.txt b/spec/cimi_entity_map.txt index 7d53beb5..be178cc3 100644 --- a/spec/cimi_entity_map.txt +++ b/spec/cimi_entity_map.txt @@ -115,10 +115,10 @@ Specimen maps to Specimen: ReceivedTime maps to receivedTime // SpecimenCollectionPerformed.AmountOrSize maps to collection.quantity // SpecimenCollectionPerformed.BodySite maps to collection.bodySite -// SpecimenCollectionPerformed.ProcedurePerformedContext.OccurrenceTimeOrPeriod maps to collection.collected[x] -// SpecimenCollectionPerformed.ProcedurePerformedContext.Participant.Entity maps to collection.collector -// SpecimenCollectionPerformed.ProcedurePerformedContext.Method maps to collection.method -// SpecimenCollectionPerformed.ProcedurePerformedContext.RelatedRequest.Value maps to request +// SpecimenCollectionPerformed.OccurrenceTimeOrPeriod maps to collection.collected[x] +// SpecimenCollectionPerformed.Participant.Entity maps to collection.collector +// SpecimenCollectionPerformed.Method maps to collection.method +// SpecimenCollectionPerformed.RelatedRequest.Value maps to request SpecimenContainer.Identifier maps to container.identifier SpecimenContainer.Details maps to container.description SpecimenContainer.Type maps to container.type diff --git a/spec/cimi_medication.txt b/spec/cimi_medication.txt index bbf05480..b9b53323 100644 --- a/spec/cimi_medication.txt +++ b/spec/cimi_medication.txt @@ -1,9 +1,9 @@ Grammar: DataElement 5.0 Namespace: cimi.medication Description: "The CIMI Medication domain contains definitions related to medications taken, or not taken, by the person of record, both currently and in the past." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.context, cimi.topic, cimi.statement, cimi.entity, cimi.encounter +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity, cimi.encounter -/* Taking out for now since the Planned context has not been defined +/* Taking out for now since the PlanStatement has not been defined EntryElement: MedicationRegimen // Definitional Concept: MTH#C0237125 Description: "Defines a specific application of over-the-counter and prescribed/recommended medications and infusions to meet guidelines for therapeutic action, safety, and schedule." @@ -13,7 +13,7 @@ Description: "Defines a specific application of over-the-counter and prescribed/ Element: MedicationTopic Based on: ActionTopic Concept: TBD -Description: "Base class for actions involving medications, independent of context." +Description: "Base class for actions involving medications." 1..1 Medication 0..1 Dosage @@ -97,7 +97,7 @@ Description: "The action of ordering and deliving a medication to the party resp Element: MedicationUseTopic Based on: MedicationTopic Concept: TBD -Description: "A course or dose of medication for a patient, independent of context of being recommended, used, or not used. Medication use can be reported, directly observed, or inferred from clinical events associated with orders, prescriptions written, pharmacy dispensings, procedural administrations, and other patient-reported information." +Description: "A course or dose of medication for a patient of being recommended, used, or not used. Medication use can be reported, directly observed, or inferred from clinical events associated with orders, prescriptions written, pharmacy dispensings, procedural administrations, and other patient-reported information." Element: MedicationChangeTopic @@ -124,15 +124,14 @@ Description: "A record of the use of a medication." SourceOfInformation value is type AnyPersonOrOrganization StatementTopic is type MedicationUseTopic 0..1 MedicationUseTopic.Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category - StatementContext is type PerformedContext - PerformedContext.Status from http://hl7.org/fhir/ValueSet/medication-statement-status -0..0 PerformedContext.Method // because of Dosage.Method + Status from http://hl7.org/fhir/ValueSet/medication-statement-status +0..0 Method // because of Dosage.Method EntryElement: MedicationAdherenceStatement // This could be attached to MedicationUsed directly as an extension, but modeling as an observation avoids creating an extension Based on: SimpleCodedNonLaboratoryObservation Concept: MTH#C2364172 Description: "The degree (frequency) that the stated treatment plan, prescription, or protocol was followed. A statement of the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency." - ObservationContext.ResultValue from QualitativeFrequencyVS + ResultValue from QualitativeFrequencyVS ObservationTopic.TopicCode is MTH#C2364172 ObservationTopic.Focus value is type ref(EntityOrRole) ObservationTopic.Focus.EntityOrRole is type ref(Medication) @@ -151,7 +150,7 @@ Description: "A record of a medication NOT used. Although usually not required, StatementTopic is type MedicationUseTopic 0..1 MedicationUseTopic.Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category 0..0 MedicationUseTopic.Dosage - NotPerformedContext.Reason from MedicationNotUsedReasonVS + Reason from MedicationNotUsedReasonVS EntryElement: MedicationDispenseRequestedStatement @@ -159,15 +158,15 @@ Based on: ActionRequestedStatement Concept: TBD Description: "An order for a medication to be dispensed and instructions for use." StatementTopic is type MedicationDispenseTopic - RequestedContext.Status from http://hl7.org/fhir/ValueSet/medication-request-status - RequestedContext.PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority + Status from http://hl7.org/fhir/ValueSet/medication-request-status + PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority EntryElement: MedicationNotPrescribedStatement Based on: ActionRequestedAgainstStatement Concept: TBD Description: "A record of a medication NOT being prescribed. Recorded only when deviating from the normal expectation, care plan, or standard of care." StatementTopic is type MedicationDispenseTopic - RequestedAgainstContext.Reason from MedicationNotUsedReasonVS + Reason from MedicationNotUsedReasonVS Element: MedicationDispensedStatement Based on: ActionPerformedStatement @@ -186,7 +185,7 @@ Based on: ActionPerformedStatement Concept: MTH#C0554834 Description: "Description of a modification or change of a medication or dosage." StatementTopic is type MedicationChangeTopic - PerformedContext.Reason from MedicationChangeReasonVS // why was the medication changed? + Reason from MedicationChangeReasonVS // why was the medication changed? diff --git a/spec/cimi_medication_map.txt b/spec/cimi_medication_map.txt index f7b2ec64..f3240efe 100644 --- a/spec/cimi_medication_map.txt +++ b/spec/cimi_medication_map.txt @@ -22,9 +22,9 @@ MedicationUsedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/ MedicationUseTopic.Medication maps to medication[x] MedicationUseTopic.Category maps to category fix taken to #y - PerformedContext.Reason maps to reasonCode - PerformedContext.OccurrenceTimeOrPeriod maps to effective[x] - PerformedContext.Status maps to status + Reason maps to reasonCode + OccurrenceTimeOrPeriod maps to effective[x] + Status maps to status MedicationNotUsedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: SourceOfInformation.Value maps to informationSource @@ -33,8 +33,8 @@ MedicationNotUsedStatement maps to http://hl7.org/fhir/us/core/StructureDefiniti MedicationUseTopic.Category maps to category fix taken to #n constrain dosage to 0..0 - NotPerformedContext.Reason maps to reasonNotTaken - NotPerformedContext.NonOccurrenceTimeOrPeriod maps to effective[x] + Reason maps to reasonNotTaken + NonOccurrenceTimeOrPeriod maps to effective[x] MedicationDispenseRequestedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest: MedicationDispenseTopic.Medication maps to medication[x] @@ -43,12 +43,12 @@ MedicationDispenseRequestedStatement maps to http://hl7.org/fhir/us/core/Structu MedicationDispenseTopic.SupplyDuration maps to dispenseRequest.expectedSupplyDuration constrain dosageInstruction to 0..1 MedicationDispenseTopic.Dosage maps to dosageInstruction - RequestedContext.Reason maps to reasonCode - RequestedContext.Status maps to status - RequestedContext.ExpectedPerformanceTime maps to dispenseRequest.validityPeriod - RequestedContext.PriorityRank maps to priority - RequestedContext.PerformerInstructions maps to note.text - RequestedContext.ExpectedPerformer[Organization] maps to dispenseRequest.performer + Reason maps to reasonCode + Status maps to status + ExpectedPerformanceTime maps to dispenseRequest.validityPeriod + PriorityRank maps to priority + PerformerInstructions maps to note.text + ExpectedPerformer[Organization] maps to dispenseRequest.performer constrain note to 0..1 diff --git a/spec/cimi_procedure.txt b/spec/cimi_procedure.txt index 726b980f..e9ca9457 100644 --- a/spec/cimi_procedure.txt +++ b/spec/cimi_procedure.txt @@ -1,14 +1,14 @@ Grammar: DataElement 5.0 Namespace: cimi.procedure Description: "The CIMI procedure domain contains contexts, topics, and statements related to procedures." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.context, cimi.topic, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category Element: ProcedureTopic Based on: ActionTopic Concept: TBD -Description: "Description of a healthcare procedure, independent of action context. This can be a physical intervention like an operation, or less invasive like counseling or hypnotherapy." +Description: "Description of a healthcare procedure. This can be a physical intervention like an operation, or less invasive like counseling or hypnotherapy." 1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* AnatomicalLocation 0..1 PartOf value is type ref(ProcedurePerformedStatement) @@ -121,18 +121,17 @@ Description: "A surgical action, independent of action context." Element: SpecimenCollectionTopic Based on: ProcedureTopic -Description: "Base class for actions related to the collection of a specimen, independent of context." +Description: "Base class for actions related to the collection of a specimen." 0..* AmountOrSize Element: AmountOrSize Description: "The quantity of specimen collected" - Value: SimpleQuantity + Value: SimpleQuantity -// Specialized Contexts for Procedures - -Element: ProcedurePerformedContext -Based on: PerformedContext -Description: "The performed context with constraints applicable to procedures." +EntryElement: ProcedurePerformedStatement +Based on: ActionPerformedStatement +1..1 SubjectOfInformation value is type ref(Patient) + StatementTopic is type ProcedureTopic Participant.OnBehalfOf value is type ref(Organization) Status must be from http://hl7.org/fhir/ValueSet/event-status // Participant.EntityOrRole is type ref(Practitioner) @@ -149,53 +148,34 @@ Description: "The performed context with constraints applicable to procedures." // 0..1 ParticipationPeriod // 0..1 OnBehalfOf - Element: OutputFinding Description: "Patient findings documented during the performance of the procedure." Value: ref(FindingStatement) -Element: ProcedureNotPerformedContext -Based on: NotPerformedContext -Description: "The not performed context with constraints applicable to procedures, namely, the request must be a procedure request." - RelatedRequest value is type ref(ProcedureRequestedStatement) - -Element: ProcedureRequestedContext -Based on: RequestedContext -Description: "The requested context with additional constraints applicable to procedures." - PriorityRank must be from http://hl7.org/fhir/ValueSet/request-priority // required - Status must be from http://hl7.org/fhir/ValueSet/request-status - -// Statements derived from Procedure Topics and Contexts - -EntryElement: ProcedurePerformedStatement -Based on: ActionPerformedStatement -1..1 SubjectOfInformation value is type ref(Patient) - StatementTopic is type ProcedureTopic - StatementContext is type ProcedurePerformedContext EntryElement: ProcedureNotPerformedStatement Based on: ActionNotPerformedStatement 1..1 SubjectOfInformation value is type ref(Patient) StatementTopic is type ProcedureTopic - StatementContext is type ProcedureNotPerformedContext -0..1 ProcedureNotPerformedContext.Reason // limit to 0..1 to match FHIR Procedure.notDoneReason + RelatedRequest value is type ref(ProcedureRequestedStatement) +0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason EntryElement: ProcedureRequestedStatement Based on: ActionRequestedStatement 1..1 SubjectOfInformation value is type ref(Patient) + PriorityRank must be from http://hl7.org/fhir/ValueSet/request-priority // required + Status must be from http://hl7.org/fhir/ValueSet/request-status StatementTopic is type ProcedureTopic - StatementContext is type ProcedureRequestedContext EntryElement: ProcedureRequestedAgainstStatement Based on: ActionRequestedAgainstStatement 1..1 SubjectOfInformation value is type ref(Patient) StatementTopic is type ProcedureTopic - StatementContext is type RequestedAgainstContext EntryElement: SpecimenCollectionPerformedStatement Based on: ProcedurePerformedStatement - StatementTopic is type SpecimenCollectionTopic 0..1 AnatomicalLocation // FHIR limits Specimen.collection.bodySite to 0..1 + StatementTopic is type SpecimenCollectionTopic EntryElement: SpecimenCollectionRequestedStatement Based on: ProcedureRequestedStatement diff --git a/spec/cimi_procedure_map.txt b/spec/cimi_procedure_map.txt index 3f892194..f87da0ee 100644 --- a/spec/cimi_procedure_map.txt +++ b/spec/cimi_procedure_map.txt @@ -12,20 +12,20 @@ ProcedurePerformedStatement maps to http://hl7.org/fhir/us/core/StructureDefinit ProcedureTopic.AnatomicalLocation maps to bodySite ProcedureTopic.PartOf maps to partOf ProcedureTopic.Annotation maps to note - ProcedurePerformedContext.Encounter maps to context - ProcedurePerformedContext.Reason maps to reasonCode - ProcedurePerformedContext.OccurrenceTimeOrPeriod maps to performed[x] - ProcedurePerformedContext.FHIRProcedureParticipant maps to performer - ProcedurePerformedContext.FHIRProcedureParticipant.Value maps to performer.actor - ProcedurePerformedContext.FHIRProcedureParticipant.ParticipationType maps to performer.role - ProcedurePerformedContext.FHIRProcedureParticipant.OnBehalfOf maps to performer.onBehalfOf - ProcedurePerformedContext.Status maps to status + Encounter maps to context + Reason maps to reasonCode + OccurrenceTimeOrPeriod maps to performed[x] + FHIRProcedureParticipant maps to performer + FHIRProcedureParticipant.Value maps to performer.actor + FHIRProcedureParticipant.ParticipationType maps to performer.role + FHIRProcedureParticipant.OnBehalfOf maps to performer.onBehalfOf + Status maps to status // TODO The following statement is failing it might be a bug -// ProcedurePerformedContext.Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method - ProcedurePerformedContext.RelatedRequest.Value maps to basedOn -// ProcedurePerformedContext.RelatedPlan maps to definition - ProcedurePerformedContext.Outcome maps to outcome - ProcedurePerformedContext.Facility maps to location +// Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method + RelatedRequest.Value maps to basedOn +// RelatedPlan maps to definition + Outcome maps to outcome + Facility maps to location ProcedureNotPerformedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: @@ -34,16 +34,16 @@ ProcedureNotPerformedStatement maps to http://hl7.org/fhir/us/core/StructureDefi ProcedureTopic.Category maps to category // TODO the following is causing a crash // fix notDone to true - NotPerformedContext.Reason maps to notDoneReason + Reason maps to notDoneReason ProcedureTopic.AnatomicalLocation maps to bodySite ProcedureTopic.PartOf maps to partOf ProcedureTopic.Annotation maps to note constrain performed[x] to 0..0 constrain performer to 0..0 fix status to http://hl7.org/fhir/event-status#suspended // FHIR is lacking a not-done status (see Gforge issue #14256) -// NotPerformedContext.Encounter maps to context - NotPerformedContext.RelatedRequest.Value maps to basedOn -// NotPerformedContext.RelatedPlan maps to definition +// Encounter maps to context + RelatedRequest.Value maps to basedOn +// RelatedPlan maps to definition constrain outcome to 0..0 constrain location to 0..0 @@ -61,14 +61,14 @@ ProcedureRequestedStatement maps to ProcedureRequest: constrain doNotPerform to 0..0 SubjectOfInformation maps to subject ProcedureTopic.AnatomicalLocation maps to bodySite - ProcedureRequestedContext.Encounter maps to context - ProcedureRequestedContext.Reason maps to reasonCode - ProcedureRequestedContext.Status maps to status - ProcedureRequestedContext.RequestIntent maps to intent - ProcedureRequestedContext.ExpectedPerformanceTime maps to occurrence[x] - ProcedureRequestedContext.ExpectedPerformerType maps to performerType - ProcedureRequestedContext.ExpectedPerformer maps to performer - ProcedureRequestedContext.PriorityRank maps to priority + Encounter maps to context + Reason maps to reasonCode + Status maps to status + RequestIntent maps to intent + ExpectedPerformanceTime maps to occurrence[x] + ExpectedPerformerType maps to performerType + ExpectedPerformer maps to performer + PriorityRank maps to priority ProcedureRequestedAgainstStatement maps to ProcedureRequest: fix doNotPerform to true @@ -79,5 +79,5 @@ ProcedureRequestedAgainstStatement maps to ProcedureRequest: ProcedureTopic.Category maps to category SubjectOfInformation maps to subject ProcedureTopic.AnatomicalLocation maps to bodySite -// RequestedAgainstContext.Encounter maps to context - RequestedAgainstContext.Reason maps to reasonCode + Reason maps to reasonCode +// Encounter maps to context diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 48b90340..fb8169a9 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.statement Description: "The namespace containing cimi-derived classes representing complete clinical statements. In this specification, these classes derive from the StatementTopic class hierarchy, not ClinicalStatement, which is a significant departure from CIMI. This simplifies the resulting logical models." -Uses: shr.core, cimi.core, cimi.element, cimi.topic, cimi.context, cimi.entity +Uses: shr.core, cimi.core, cimi.element, cimi.topic, cimi.entity CodeSystem: SCT = http://snomed.info/sct @@ -14,14 +14,19 @@ Element: ClinicalStatement Based on: InformationEntry Concept: TBD Description: "A special type of information entry consisting of a topic and a context. -The ClinicalStatement class provides the core pattern for more specific clinical statement classes, such as a statement that a finding has been found in a patient or that a procedure has been proposed by a clinical decision support system. The ClinicalStatement pattern defines the core attributes common to most clinical statements and specifies a composition pattern that encourage model component reuse and better alignment with the SNOMED CT Concept Model. A clinical statement is composed of the StatementTopic class (grouping of attributes for capturing information about a procedure or a clinical finding) and the StatementContext class (grouping of attributes providing the context for the statement topic such as whether a procedure was performed, requested, not performed or whether a finding is suspected present or absent in the patient). At the archetype level, the topic and context components are coordinated to form the clinical statement. For instance, the composition of the ProcedureTopic with the NotPerformed context indicates that the given procedure was not performed." +The ClinicalStatement class provides the core pattern for more specific clinical statement classes, such as a statement that a finding has been found in a patient or that a procedure has been proposed by a clinical decision support system. The ClinicalStatement pattern defines the core attributes common to most clinical statements and specifies a composition pattern that encourage model component reuse and better alignment with the SNOMED CT Concept Model." +1..1 ContextCode 0..1 Encounter // clinical statements are often associated with specific encounters + Element: ContextCode + Description: "Code representing the sense in which the statement is interpreted, for example, the degree of presence in a PresenceStatement." + Value: CodeableConcept + //---------- Actions -------------- Abstract Element: ActionStatement Based on: ClinicalStatement -Description: "Abstract class representing any type of action, independent of context." +Description: "Abstract class representing any type of action." 0..* Reason Element: Reason @@ -269,7 +274,7 @@ EntryElement: CodedNonLaboratoryObservation Based on: NonLaboratoryObservation Concept: TBD Description: "The result of evaluations (measurements, tests, or questions) whose answer is expressed as a code." - ObservationContext.ResultValue value is type CodeableConcept + ResultValue value is type CodeableConcept 0..0 ObservationTopic.ReferenceRange EntryElement: SimpleCodedNonLaboratoryObservation @@ -281,16 +286,16 @@ Description: "An observation whose result is a code, and also having no componen EntryElement: ComponentOnlyNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation with components, but without a result value or panel members." -0..0 ObservationContext.ResultValue -0..0 ObservationContext.ExceptionValue +0..0 ResultValue +0..0 ExceptionValue 0..0 ObservationTopic.PanelMembers 0..0 ObservationTopic.ReferenceRange EntryElement: PanelOnlyNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation with panel members, but without a result value or components." -0..0 ObservationContext.ResultValue -0..0 ObservationContext.ExceptionValue +0..0 ResultValue +0..0 ExceptionValue 0..0 ObservationTopic.ReferenceRange 0..0 ObservationTopic.EvaluationComponent 1..1 ObservationTopic.PanelMembers @@ -306,7 +311,7 @@ Description: "A coded finding based on a specimen collected from a patient." EntryElement: CodedLaboratoryObservation Based on: LaboratoryObservation Description: "A coded finding from a laboratory test." - ObservationContext.ResultValue value is type CodeableConcept + ResultValue value is type CodeableConcept 0..0 LaboratoryObservationTopic.ReferenceRange EntryElement: SimpleLaboratoryObservation @@ -339,7 +344,7 @@ Description: "Statement that a finding is present." Element: VerificationStatus Concept: TBD Description: "Whether an assessment has been confirmed by testing or observation. - CIMI Alignment: This attribute corresponds to FindingContext.status, but has been defined to align with FHIR. In AllergyIntolerance, the type is code." + CIMI Alignment: This attribute has been defined to align with FHIR. In AllergyIntolerance, the type is code." Value: CodeableConcept Element: Onset diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index 883b0505..2a053d1a 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -10,39 +10,38 @@ Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-obse // RecordStatus maps to extension // Cosigned maps to extension // Verified maps to extension - ObservationTopic.TopicCode maps to code - ObservationTopic.FindingMethod maps to method - ObservationTopic.Details maps to comment -// ObservationTopic.Media maps to extension - ObservationTopic.Category maps to category - ObservationTopic.AnatomicalLocation maps to bodySite - ObservationTopic.Focus.CodeableConcept maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject is a CodeableConcept - ObservationTopic.Device maps to device - ObservationTopic.Specimen maps to specimen -// ObservationTopic.Precondition maps to extension - ObservationTopic.ReferenceRange maps to referenceRange - ObservationTopic.ReferenceRange.Range.LowerBound maps to referenceRange.low - ObservationTopic.ReferenceRange.Range.UpperBound maps to referenceRange.high - ObservationTopic.ReferenceRange.Type maps to referenceRange.type - ObservationTopic.ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo - ObservationTopic.ReferenceRange.ApplicableAgeRange maps to referenceRange.age - ObservationTopic.EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) - ObservationTopic.EvaluationComponent._Concept maps to component.code - ObservationTopic.EvaluationComponent.Value maps to component.value[x] - ObservationTopic.EvaluationComponent.ExceptionValue maps to component.dataAbsentReason - ObservationTopic.EvaluationComponent.Interpretation maps to component.interpretation - ObservationTopic.EvaluationComponent.ReferenceRange maps to component.referenceRange + TopicCode maps to code + FindingMethod maps to method + Details maps to comment +// Media maps to extension + Category maps to category + AnatomicalLocation maps to bodySite + Focus.CodeableConcept maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject is a CodeableConcept + Device maps to device + Specimen maps to specimen +// Precondition maps to extension + ReferenceRange maps to referenceRange + ReferenceRange.Range.LowerBound maps to referenceRange.low + ReferenceRange.Range.UpperBound maps to referenceRange.high + ReferenceRange.Type maps to referenceRange.type + ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo + ReferenceRange.ApplicableAgeRange maps to referenceRange.age + EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) + EvaluationComponent._Concept maps to component.code + EvaluationComponent.Value maps to component.value[x] + EvaluationComponent.ExceptionValue maps to component.dataAbsentReason + EvaluationComponent.Interpretation maps to component.interpretation + EvaluationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member - ObservationTopic.PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) -// ObservationContext.ContextCode maps to nothing // drop - ObservationContext.ResultValue maps to value[x] - ObservationContext.ExceptionValue maps to dataAbsentReason - ObservationContext.Interpretation maps to interpretation - ObservationContext.Issued maps to issued - ObservationContext.FindingStatus maps to status - ObservationContext.RelevantTime maps to effective[x] - ObservationContext.Encounter maps to context - ObservationContext.DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta + PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) + ResultValue maps to value[x] + ExceptionValue maps to dataAbsentReason + Interpretation maps to interpretation + Issued maps to issued + FindingStatus maps to status + RelevantTime maps to effective[x] + Encounter maps to context + DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta ConditionPresenceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: // _Entry.CreationTime maps to assertedDate // why doesn't this work? @@ -52,15 +51,15 @@ ConditionPresenceStatement maps to http://hl7.org/fhir/us/core/StructureDefiniti ConditionTopic.TopicCode maps to code constrain bodySite to 0..0 ConditionTopic.AnatomicalLocation maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite - ConditionPresenceContext.Encounter maps to context - ConditionPresenceContext.ClinicalStatus maps to clinicalStatus - ConditionPresenceContext.VerificationStatus maps to verificationStatus - ConditionPresenceContext.Onset maps to onset[x] - ConditionPresenceContext.Abatement maps to abatement[x] - ConditionPresenceContext.Severity maps to severity - ConditionPresenceContext.Stage maps to stage - ConditionPresenceContext.Stage.CodeableConcept maps to stage.summary - ConditionPresenceContext.Stage.StageDetail maps to stage.assessment + Encounter maps to context + ClinicalStatus maps to clinicalStatus + VerificationStatus maps to verificationStatus + Onset maps to onset[x] + Abatement maps to abatement[x] + Severity maps to severity + Stage maps to stage + Stage.CodeableConcept maps to stage.summary + Stage.StageDetail maps to stage.assessment ConditionAbsenceStatement maps to Basic: diff --git a/spec/cimi_statement_vs.txt b/spec/cimi_statement_vs.txt index 4ff7c5fb..7efeb03a 100644 --- a/spec/cimi_statement_vs.txt +++ b/spec/cimi_statement_vs.txt @@ -2,6 +2,7 @@ Grammar: ValueSet 5.0 Namespace: cimi.statement CodeSystem: SCT = http://snomed.info/sct +CodeSystem: MTH = http://ncimeta.nci.nih.gov ValueSet: DiagnosticServiceVS Description: "The type of laboratory service used in producing a laboratory result. Note -- we may want to include additional descendants of SCT#224891009 (Healthcare services)" @@ -15,4 +16,86 @@ SCT#708190004 "Immunology service (qualifier) -- Immunology/Serology laboratory //#urinalysis "Laboratory tests urine for many analytes. Some health care providers have a urinalysis laboratory, while others don't." SCT#310074003 "Pathology service (qualifier)-- Surgical, cytopathology, or histopathology laboratory. Surgical pathology examines organs, limbs, tumors, fetuses, and other tissues biopsied in surgery such as breast mastectomies." SCT#310048009 "Genetics service (procedure) - note: should be in the Snomed (qualifier) hierarchy - Laboratory that mainly performs DNA analysis." -SCT#708178001 "Cytogenetics service (qualifier) -- Laboratory that uses blood and other cells to get a karyotype. This can be helpful in prenatal diagnosis (e.g. Down's syndrome) as well as in cancer (some cancers have abnormal chromosomes)." \ No newline at end of file +SCT#708178001 "Cytogenetics service (qualifier) -- Laboratory that uses blood and other cells to get a karyotype. This can be helpful in prenatal diagnosis (e.g. Down's syndrome) as well as in cancer (some cancers have abnormal chromosomes)." + + +ValueSet: ExceptionValueVS +Description: "Reasons that a value associated with a test or other finding is missing. Includes all codes from http://hl7.org/fhir/ValueSet/data-absent-reason version 3.3.0 and additional codes covering other missing value circumstances." +#unknown "Unknown: The value is not known." +#asked-unknown "Asked But Unknown: The source human does not know the value." +#temp-unknown "Temporarily Unknown: There is reason to expect (from the workflow) that the value may become known." +#not-asked "Not Asked: The workflow didn't lead to this value being known." +#asked-declined "Asked But Declined: The source was asked but declined to answer." +#masked "Masked: The information is not available due to security, privacy or related reasons." +#not-applicable "Not Applicable: There is no proper value for this element (e.g. last menstrual period for a male)" +#unsupported "Unsupported: The source system wasn't capable of supporting this element." +#as-text "As Text: The content of the data is represented in the resource narrative." +#error "Error: Some system or workflow process error means that the information is not available." +#not-a-number "Not a Number (NaN): The numeric value is undefined or unrepresentable due to a floating point processing error." +#negative-infinity "Negative Infinity (NINF): The numeric value is excessively low and unrepresentable due to a floating point processing error." +#positive-infinity "Positive Infinity (PINF): The numeric value is excessively high and unrepresentable due to a floating point processing error." +#not-performed "Not Performed: The value is not available because the observation procedure (test, etc.) was not performed." +#not-permitted "Not Permitted: The value is not permitted in this context (e.g. due to profiles, or the base data types)" +// The following values are extensions to the FHIR values, applicable to lab tests +#indeterminate-value "The value could not be determined or established with accuracy or certainty." +#no-further-explanation "The reason the information is not present is not known." +#null-answer "The answer is appears missing because the correct answer is null or empty; e.g., a question that asks for a list of the names of siblings applied to an only child." +#specimen-unavailable "Missing due to a problem collecting, identifying, or locating the specimen, including patient refusal or unable to provide specimen" +#specimen-inadequate "Missing due to a problem with the specimen, e.g. inadequate specimen, contamination, clotting, improper tube type, improper storage, too small, etc." +#instrument-malfunction "Missing due to instrument malfunction." + + +ValueSet: PresenceContextVS +Description: "A code describing whether the finding in question is present, possible, suspected, etc." +//SCT#36692007 "Known" +//SCT#410605003 "Confirmed present" +//SCT#410591008 "Definitely present" +SCT#410515003 "Known present" +SCT#410590009 "Known possible" +SCT#410592001 "Probably present" +SCT#415684004 "Suspected" +SCT#410593006 "Probably not present" +SCT#261665006 "Unknown" + +ValueSet: AbsenceContextVS +Description: "A code describing whether the finding is question is absent, unknown, or not suspected." +SCT#410516002 "Known absent" +SCT#410594000 "Definitely not present" +SCT#410593006 "Probably not present" +SCT#428263003 "NOT suspected" +// No known?? + +ValueSet: AtRiskContextVS +Description: "A code describing the sense in which the subject has risk of a hypothetical (future) finding. At present, this value set contains only one code, but it is presented as a value set to allow for more nuanced meanings in the future." +SCT#410519009 "At risk" + +ValueSet: ExpectationContextVS +Description: "A code describing the sense in which a finding is expected." +SCT#410517006 "Expected" +SCT#410596003 "Likely outcome" +SCT#410595004 "Prognosis" +SCT#71033007 "Impending" + +ValueSet: GoalContextVS +Description: "A code describing the sense in which a finding is a goal or objective." +SCT#703039001 "Health objective" +SCT#410518001 "Goal" + + +ValueSet: DeltaFlagVS +Concept: MTH#C1705241 +Description: "Indicators for degree of change (delta) from the last or previous measurement." +Includes codes descending from SCT#263703002 "Changed status (qualifier value)" +// Also see LOINC #89253-9 Trend ... has values improved, deteriorated, stablized, resolved + +/* +ValueSet: DeltaFlagVS +Description: "Change patterns and trends, including resolved." +Includes codes descending from SCT#385634002 "Change patterns (qualifier value)" +//SCT#58158008 "Stable (qualifier value)" +//SCT#385633008 "Improving (qualifier value)" +//SCT#230993007 "Worsening (qualifier value)" +//SCT#260369004 "Increasing (qualifier value)" +//SCT#260371004 "Decreasing (qualifier value)" +SCT#723506003 "Resolved (qualifier value)" +*/ \ No newline at end of file diff --git a/spec/cimi_topic.txt b/spec/cimi_topic.txt index 0402edd2..70277a06 100644 --- a/spec/cimi_topic.txt +++ b/spec/cimi_topic.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.topic Description: "The Topic Core package contains the top-level specializations of the Statement Topic class, namely, the FindingTopic, ActionTopic (ProcedureTopic), and EventTopic classes." -Uses: shr.core, shr.base, cimi.core, cimi.context, cimi.element, cimi.entity, cimi.statement +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.entity, cimi.statement Element: StatementTopic Based on: NonIndependent @@ -15,7 +15,7 @@ StatementTopic class attributes are aligned with SNOMED CT Concept Model attribu Concept: TBD Description: "The concept representing the finding or action that is the topic of the statement. - For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic independent of the context of the action or the finding." + For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." Value: CodeableConcept Abstract Element: ActionTopic @@ -27,7 +27,7 @@ Description: "An entry related to an action or intervention, whether potential Element: FindingTopic Based on: StatementTopic Concept: TBD -Description: "Base class - independent of context - for all kinds of determinations: questions/answers, conditions, observations, allergies, and other findings. +Description: "Base class - - for all kinds of determinations: questions/answers, conditions, observations, allergies, and other findings. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." 0..1 FindingMethod 0..1 Details @@ -55,8 +55,8 @@ Description: "The topic composition for laboratory observations. A specimen is r Element: ConditionTopic Based on: AssertionTopic -Description: "A condition, independent of context. 'Condition' is interpreted broadly to include disorder, abnormality, problem, injury, complaint, functionality, concern, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble, independent of context. -CIMI deviation: AnatomicalLocation is included here, rather than being a property of FindingSiteAssertionTopic, since it is a common property of conditions. Severity, diseasePhase, periodicity, and other properites of an actual observed condition belong in ConditionPresenceContext. " +Description: "A condition. 'Condition' is interpreted broadly to include disorder, abnormality, problem, injury, complaint, functionality, concern, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble. +CIMI deviation: AnatomicalLocation is included here, rather than being a property of FindingSiteAssertionTopic, since it is a common property of conditions." TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation diff --git a/spec/ig-cimi-config.json b/spec/ig-cimi-config.json index 1bcfedee..fc10d6cb 100644 --- a/spec/ig-cimi-config.json +++ b/spec/ig-cimi-config.json @@ -18,7 +18,7 @@ { "filter": true, "strategy": "namespace", - "target": ["cimi.context", "cimi.core", "cimi.element", "cimi.encounter", "cimi.entity", "cimi.statement", "cimi.topic"] + "target": ["cimi.core", "cimi.element", "cimi.encounter", "cimi.entity", "cimi.statement", "cimi.topic"] }, "publisher": "The Clinical Information Modeling Initiative (CIMI)", "contact": [ diff --git a/spec/shr_condition.txt b/spec/shr_condition.txt index 038254fb..4627a471 100644 --- a/spec/shr_condition.txt +++ b/spec/shr_condition.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.condition Description: "The SHR Condition domain contains additional definitions used to capture assessments, diagnoses, and judgments related to problems reported or experienced by a subject." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.context, cimi.topic, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity CodeSystem: SCT = http://snomed.info/sct CodeSystem: MTH = http://ncimeta.nci.nih.gov @@ -38,8 +38,8 @@ EntryElement: DiseaseProgression Based on: Observation Concept: MTH#C0421176 "Progression" Description: "A finding related to the current trend of a particular existing disease. This concept is most often used for chronic and incurable diseases where the status and trendline of the disease is an important determinant of therapy and prognosis. The specific disorder being evaluated must be cited in the Focus_Reference or Focus_CodeableConcept as a reference to a Condition." - ObservationContext.ResultValue value is type CodeableConcept - ObservationContext.ResultValue from ProgressionVS + ResultValue value is type CodeableConcept + ResultValue from ProgressionVS ObservationTopic.TopicCode is MTH#C0421176 "Progression" 0..* ProgressionEvidence // "ProgressionEvidence" is somewhat related to FindingMethod, which represents the test or procedure used to generate the result; it is typically a LOINC code (0..1) diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 6995a211..5bef131c 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -218,17 +218,6 @@ Description: "Describes an individual and how to reach them." 0..1 HumanName 0..* ContactPoint - -/* TODO: Additional MetaData Types: see http://hl7.org/fhir/metadatatypes.html -Contributor -DataRequirement -ParameterDefinition -RelatedArtifact -TriggerDefinition -UseageContext -*/ - - Element: TimePeriod Concept: MTH#C1948053 Description: "A period of time defined by a start and end time, date, or year. If the start element is missing, the start of the period is not known. If the end element is missing, it means that the period is ongoing, or the start may be in the past, and the end date in the future, which means that period is expected/planned to end at the specified time. The end value includes any matching date/time. For example, the period 2011-05-23 to 2011-05-27 includes all the times from the start of the 23rd May through to the end of the 27th of May." diff --git a/spec/shr_immunization.txt b/spec/shr_immunization.txt index 565ff468..ccd0376b 100644 --- a/spec/shr_immunization.txt +++ b/spec/shr_immunization.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.immunization Description: "The SHR Immunization domain contains definitions related to vaccinations, whether they are received, recommended, missing, or refused." -Uses: shr.core, shr.base, cimi.core, cimi.context, cimi.topic, cimi.statement, cimi.entity, cimi.element, cimi.medication, cimi.procedure +Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.entity, cimi.element, cimi.medication, cimi.procedure CodeSystem: MTH = http://ncimeta.nci.nih.gov @@ -33,46 +33,43 @@ Description: "Describes the event of a patient being administered a vaccination EntryElement: ImmunizationGiven -Based on: ActionPerformedStatement -// Note: Can't inherit from MedicationUsedStatement because in that class, PerformedContext.Status is bound to http://hl7.org/fhir/ValueSet/medication-statement-status in that class, can't be overriden to http://hl7.org/fhir/ValueSet/immunization-status +Based on: ProcedurePerformedStatement +// Note: Can't inherit from MedicationUsedStatement because Status is bound to http://hl7.org/fhir/ValueSet/medication-statement-status in that class, can't be overriden to http://hl7.org/fhir/ValueSet/immunization-status Concept: MTH#C0580520 Description: "A vaccination administered to the subject." SourceOfInformation value is type AnyPersonOrOrganization StatementTopic is type ImmunizationTopic - PerformedContext is type ProcedurePerformedContext - ProcedurePerformedContext.Status from http://hl7.org/fhir/ValueSet/immunization-status - ProcedurePerformedContext.OccurrenceTimeOrPeriod value is type dateTime - + Status from http://hl7.org/fhir/ValueSet/immunization-status + OccurrenceTimeOrPeriod value is type dateTime /* EntryElement: ImmunizationNotGiven -Based on: ImmunizationActionTopic +Based on: ProcedureNotPerformedStatement Concept: TBD Description: "An immunization that was not given to the subject." -1..1 NotPerformedContext -// NotPerformedContext.NonOccurrenceTimeOrPeriod value is type date - NotPerformedContext.Reason from http://hl7.org/fhir/ValueSet/no-immunization-reason + ImmunizationActionTopic +// NonOccurrenceTimeOrPeriod value is type date + Reason from http://hl7.org/fhir/ValueSet/no-immunization-reason EntryElement: ImmunizationRequested -Based on: ImmunizationActionTopic +Based on: ProcedureRequestedStatement Concept: TBD Description: "An immunization that is proposed or planned for the subject." -1..1 RequestedContext - // Need reason value set for RequestedContext.Reason + StatementTopic is type ImmunizationActionTopic + // Need reason value set for Reason EntryElement: ImmunizationRequestedAgainst -Based on: ImmunizationActionTopic +Based on: ProcedureRequestedAgainstStatement Concept: TBD Description: "An immunization that is specifically not recommended, perhaps contraindicated for the individual." -1..1 RequestedAgainstContext -// RequestedAgainstContext.Reason from ... - // TODO: Need value set for RequestedAgainst reasons + StatementTopic is type ImmunizationActionTopic + Reason from ... // TODO: Need value set for RequestedAgainst reasons */ /* Example of detailed profile - Comment out for now EntryElement: ZostavaxImmunizationAdministered Concept: TBD -Based on: ImmunizationAdministered +Based on: ImmunizationGiven Vaccine is CVX#36 "VZIG" 1..1 AgeOfSubjectAtTimeOfEvent // extension particular to this vaccination - should be >60 to qualify for reimbursement diff --git a/spec/shr_immunization_map.txt b/spec/shr_immunization_map.txt index 8d26a92d..75d62745 100644 --- a/spec/shr_immunization_map.txt +++ b/spec/shr_immunization_map.txt @@ -13,23 +13,23 @@ ImmunizationGiven maps to http://hl7.org/fhir/us/core/StructureDefinition/us-cor constrain vaccinationProtocol to 1..1 ImmunizationTopic.DoseSequenceNumber maps to vaccinationProtocol.doseSequence constrain explanation to 0..1 - ProcedurePerformedContext.Encounter maps to encounter - ProcedurePerformedContext.Reason maps to explanation.reason - ProcedurePerformedContext.FHIRProcedureParticipant maps to practitioner.actor - ProcedurePerformedContext.FHIRProcedureParticipant.ParticipationType maps to practitioner.role -// ProcedurePerformedContext.FHIRProcedureParticipant.OnBehalfOf maps to nothing - ProcedurePerformedContext.OccurrenceTimeOrPeriod maps to date - ProcedurePerformedContext.Status maps to status - ProcedurePerformedContext.Facility maps to location -// ProcedurePerformedContext.Outcome maps to extension + Encounter maps to encounter + Reason maps to explanation.reason + FHIRProcedureParticipant maps to practitioner.actor + FHIRProcedureParticipant.ParticipationType maps to practitioner.role +// FHIRProcedureParticipant.OnBehalfOf maps to nothing + OccurrenceTimeOrPeriod maps to date + Status maps to status + Facility maps to location +// Outcome maps to extension // TODO: must support fixing booleans // fix notGiven to false // TODO: Below is commented out because it's not currently supported // status is ICS#completed // FHIR bug: if "wasNotGiven" is true, there is no reasonable choice for status // TODO The following statement is failing it might be a bug -// ProcedurePerformedContext.Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method -// ProcedurePerformedContext.RelatedRequest.Value maps to basedOn -// ProcedurePerformedContext.RelatedPlan maps to definition +// Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method +// RelatedRequest.Value maps to basedOn +// RelatedPlan maps to definition /* @@ -38,8 +38,8 @@ ImmunizationNotGiven maps to http://hl7.org/fhir/us/core/StructureDefinition/us- constrain explanation to 0..1 // TODO: must support fixing booleans // fix notGiven to true - NotPerformedContext.NonOccurrenceTimeOrPeriod maps to date - NotPerformedContext.Reason maps to explanation.reasonNotGiven + NonOccurrenceTimeOrPeriod maps to date + Reason maps to explanation.reasonNotGiven constrain site to 0..0 constrain route to 0..0 constrain doseQuantity to 0..0 diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index c55e7e51..4673f648 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.occupation Description: "Patient’s or family member's work information." -Uses: shr.core, shr.base, cimi.core, cimi.context, cimi.topic, cimi.statement, cimi.composition, cimi.entity, cimi.element, cimi.encounter +Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.composition, cimi.entity, cimi.element, cimi.encounter CodeSystem: LNC = http://loinc.org CodeSystem: MTH = http://ncimeta.nci.nih.gov @@ -41,78 +41,78 @@ includes 0..* PastOrPresentOccupation 0..0 ObservationTopic.Specimen 0..0 ObservationTopic.Precondition 0..0 ObservationTopic.ReferenceRange -0..0 ObservationContext.ResultValue -0..0 ObservationContext.ExceptionValue -0..0 ObservationContext.Interpretation -0..0 ObservationContext.RelevantTime -0..0 ObservationContext.DeltaFlag +0..0 ResultValue +0..0 ExceptionValue +0..0 Interpretation +0..0 RelevantTime +0..0 DeltaFlag EntryElement: HistoryOfEmploymentStatus Based on: SimpleCodedNonLaboratoryObservation Concept: LNC#74165-2 "HistoryOfEmploymentStatus" Description: "A person’s state of being employed during the time period specified. Generally, employment status refers to whether or not a person has a job (e.g. employed, unemployed, not in labor force). In a healthcare setting employment status may be used to determine appropriate probing questions for occupational hazards and occupational history. For example, someone who is unemployed or has chosen not to work may be prompted to provide information about previous jobs. Employment status is not the same as work classification, which describes characteristics of a given job such as self-employed." - ObservationContext.ResultValue value is type CodeableConcept - ObservationContext.ResultValue from http://hl7.org/fhir/ValueSet/employment-status-odh + ResultValue value is type CodeableConcept + ResultValue from http://hl7.org/fhir/ValueSet/employment-status-odh EntryElement: DateOfRetirement Based on: SimpleNonLaboratoryObservation Concept: LNC#87510-4 "Date of Retirement" Description: "If present, the patient is retired, and this observation records the retirement date. This is a self-identified statement about the date of being retired as self-identified by the patient. A person can be both retired and employed; most often, a person would be retired from one job and employed in another job." - ObservationContext.ResultValue value is type dateTime + ResultValue value is type dateTime 0..0 ObservationTopic.FindingMethod 0..0 ObservationTopic.AnatomicalLocation 0..0 ObservationTopic.Focus 0..0 ObservationTopic.Precondition 0..0 ObservationTopic.ReferenceRange 0..0 ObservationTopic.PanelMembers -0..0 ObservationContext.ExceptionValue -0..0 ObservationContext.Interpretation -0..0 ObservationContext.RelevantTime -0..0 ObservationContext.Encounter -0..0 ObservationContext.DeltaFlag +0..0 ExceptionValue +0..0 Interpretation +0..0 RelevantTime +0..0 Encounter +0..0 DeltaFlag EntryElement: CombatZonePeriod Based on: SimpleNonLaboratoryObservation Concept: LNC#87511-2 Description: "Indicates the date range(s) an individual hs worked in what is considered a combat or hazardous duty zone; both civilian and military." - ObservationContext.ResultValue value is type TimePeriod + ResultValue value is type TimePeriod 0..0 ObservationTopic.FindingMethod 0..0 ObservationTopic.AnatomicalLocation 0..0 ObservationTopic.Focus 0..0 ObservationTopic.Precondition 0..0 ObservationTopic.ReferenceRange 0..0 ObservationTopic.PanelMembers -0..0 ObservationContext.ExceptionValue -0..0 ObservationContext.Interpretation -0..0 ObservationContext.RelevantTime -0..0 ObservationContext.Encounter -0..0 ObservationContext.DeltaFlag +0..0 ExceptionValue +0..0 Interpretation +0..0 RelevantTime +0..0 Encounter +0..0 DeltaFlag EntryElement: UsualOccupation Based on: CodedNonLaboratoryObservation Concept: LNC#21843-8 Description: "The type of work a person has held for the longest duration during his or her working history at the point in time the statement is recorded." // We'll need to determine the fix here -- US Core requires Subject to be a patient, but ODH allows patient or related person - ObservationContext.ResultValue could be from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 // defined in FHIR 3.2 and not found in 3.0.1 + ResultValue could be from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 // defined in FHIR 3.2 and not found in 3.0.1 ObservationTopic.Category is OBSCAT#social-history ObservationTopic.Focus value is type CodeableConcept ObservationTopic.Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype ObservationTopic.EvaluationComponent includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration -1..1 ObservationContext.RelevantTime - ObservationContext.RelevantTime value is type TimePeriod +1..1 RelevantTime + RelevantTime value is type TimePeriod 0..0 ObservationTopic.FindingMethod 0..0 ObservationTopic.AnatomicalLocation 0..0 ObservationTopic.Precondition 0..0 ObservationTopic.ReferenceRange 0..0 ObservationTopic.PanelMembers -0..0 ObservationContext.ResultValue -0..0 ObservationContext.ExceptionValue -0..0 ObservationContext.Interpretation -0..0 ObservationContext.Encounter -0..0 ObservationContext.DeltaFlag +0..0 ResultValue +0..0 ExceptionValue +0..0 Interpretation +0..0 Encounter +0..0 DeltaFlag /* UsualOccupation is in the value element Element: UsualOccupation @@ -137,7 +137,7 @@ EntryElement: PastOrPresentOccupation Based on: CodedNonLaboratoryObservation Concept: LNC#11341-5 "History of Occupation" Description: "A single job, past or present. The relevant time is the period the job was held." - ObservationContext.ResultValue could be from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 + ResultValue could be from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 ObservationTopic.Category is OBSCAT#social-history 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization ObservationTopic.Focus value is type CodeableConcept @@ -151,18 +151,18 @@ includes 0..* OccupationalHazard includes 0..1 WorkSchedule includes 0..1 WeeklyWorkDays includes 0..1 DailyWorkHours -1..1 ObservationContext.RelevantTime - ObservationContext.RelevantTime value is type TimePeriod +1..1 RelevantTime + RelevantTime value is type TimePeriod 0..0 ObservationTopic.FindingMethod 0..0 ObservationTopic.AnatomicalLocation 0..0 ObservationTopic.Focus 0..0 ObservationTopic.Precondition 0..0 ObservationTopic.ReferenceRange 0..0 ObservationTopic.PanelMembers -0..0 ObservationContext.ExceptionValue -0..0 ObservationContext.Interpretation -0..0 ObservationContext.Encounter -0..0 ObservationContext.DeltaFlag +0..0 ExceptionValue +0..0 Interpretation +0..0 Encounter +0..0 DeltaFlag // Question -- organization only, or person or organization Element: Employer @@ -241,10 +241,10 @@ includes 0..1 ServiceConnectedDisability 0..0 ObservationTopic.Focus 0..0 ObservationTopic.Device 0..0 ObservationTopic.Precondition -0..0 ObservationContext.Interpretation -0..0 ObservationContext.RelevantTime -0..0 ObservationContext.Encounter -0..0 ObservationContext.DeltaFlag +0..0 Interpretation +0..0 RelevantTime +0..0 Encounter +0..0 DeltaFlag Element: MilitaryStatus Concept: MTH#C1550416 diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index fcc79964..a6971cca 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.oncology Description: "SHR implementation of ASCO requirements." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.context, cimi.topic, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org @@ -43,7 +43,7 @@ Based on: ConditionPresenceStatement Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." ConditionTopic.TopicCode from BreastCancerTypeVS - ConditionPresenceContext.Stage.StageDetail value is type BreastCancerStage + Stage.StageDetail value is type BreastCancerStage ConditionTopic.FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding ConditionTopic.AnatomicalLocation is type BreastSite 0..1 MorphologyBehavior from MorphologyBehaviorVS @@ -113,16 +113,16 @@ Based on: Observation Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. Description: "The stage of a breast cancer. Different staging systems use different staging groups, so there are currently no terminology bindings associated with this class." ObservationTopic is type BreastCancerStageTopic - ObservationContext.ResultValue value is type CodeableConcept - ObservationContext.ResultValue should be from http://loinc.org/LL240-3 + ResultValue value is type CodeableConcept + ResultValue should be from http://loinc.org/LL240-3 EntryElement: DCISNuclearGrade Concept: MTH#C18513 // What is the proper LOINC code? Based on: SimpleCodedLaboratoryObservation Description: "An evaluation of the size and shape of the nucleus in tumor cells and the percentage of tumor cells that are in the process of dividing or growing. Cancers with low nuclear grade grow and spread less quickly than cancers with high nuclear grade." - ObservationContext.ResultValue value is type CodeableConcept - ObservationContext.ResultValue.CodeableConcept from NuclearGradeVS + ResultValue value is type CodeableConcept + ResultValue.CodeableConcept from NuclearGradeVS LaboratoryObservationTopic.Specimen is type BreastSpecimen LaboratoryObservationTopic.TopicCode is MTH#C18513 LaboratoryObservationTopic.DiagnosticService is #pathology @@ -132,9 +132,9 @@ EntryElement: BreastCancerHistologicGrade Concept: LNC#44648-4 Based on: CodedLaboratoryObservation Description: "The Elston Grade/Nottingham Score, representative of the aggressive potential of the tumor. Well differentiated cells (Grade 1) look similar to normal cells and are usually slow growing, while poorly differentiated cells (Grade 3) look very different than normal and are fast-growing." - ObservationContext.ResultValue value is type CodeableConcept - ObservationContext.ResultValue.CodeableConcept from NottinghamCombinedGradeVS - ObservationContext.ExceptionValue from NottinghamNullVS + ResultValue value is type CodeableConcept + ResultValue.CodeableConcept from NottinghamCombinedGradeVS + ExceptionValue from NottinghamNullVS LaboratoryObservationTopic.TopicCode is LNC#44648-4 LaboratoryObservationTopic.Specimen is type BreastSpecimen LaboratoryObservationTopic.DiagnosticService is #pathology @@ -171,8 +171,8 @@ Based on: CodedLaboratoryObservation Concept: LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" Description: "Estrogen receptor alpha is the predominant estrogen receptor expressed in breast tissue and is overexpressed in around 50% of breast carcinomas. ER status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options. The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." - ObservationContext.ResultValue value is type CodeableConcept - ObservationContext.ResultValue.CodeableConcept from PositiveNegativeVS + ResultValue value is type CodeableConcept + ResultValue.CodeableConcept from PositiveNegativeVS LaboratoryObservationTopic.TopicCode is LNC#16112-5 LaboratoryObservationTopic.DiagnosticService is #pathology LaboratoryObservationTopic.Specimen is type BreastSpecimen @@ -194,8 +194,8 @@ Based on: CodedLaboratoryObservation Concept: LNC#16113-3 Description: "Progesterone receptor status is a factor in determining prognosis and treatment options. The value is the percentage of cells that test (stain) positive for the presence of a receptor. The interpretation of positive or negative (found in the interpretation property) is based on the staining percentage, and may take into account the staining intensity. Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." - ObservationContext.ResultValue value is type CodeableConcept - ObservationContext.ResultValue.CodeableConcept from PositiveNegativeVS + ResultValue value is type CodeableConcept + ResultValue.CodeableConcept from PositiveNegativeVS LaboratoryObservationTopic.TopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" LaboratoryObservationTopic.DiagnosticService is #pathology LaboratoryObservationTopic.Specimen is type BreastSpecimen @@ -222,7 +222,7 @@ EntryElement: HER2ReceptorStatus Based on: CodedLaboratoryObservation Concept: LNC#48676-1 "HER2 [Interpretation] in Tissue" Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." - ObservationContext.ResultValue.CodeableConcept from PositiveNegativeEquivocalVS + ResultValue.CodeableConcept from PositiveNegativeEquivocalVS LaboratoryObservationTopic.TopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" LaboratoryObservationTopic.DiagnosticService is #pathology LaboratoryObservationTopic.Specimen is type BreastSpecimen @@ -238,9 +238,9 @@ EntryElement: HER2byIHC Based on: CodedLaboratoryObservation Concept: LNC#85319-2 Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (IHC). " - ObservationContext.ResultValue.CodeableConcept from HER2byIHCScoreVS - ObservationContext.ExceptionValue from HER2byIHCScoreNullVS - ObservationContext.Interpretation from PositiveNegativeEquivocalVS + ResultValue.CodeableConcept from HER2byIHCScoreVS + ExceptionValue from HER2byIHCScoreNullVS + Interpretation from PositiveNegativeEquivocalVS LaboratoryObservationTopic.TopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" 0..0 LaboratoryObservationTopic.FindingMethod // pre-coordinated in the TopicCode LaboratoryObservationTopic.DiagnosticService is #pathology @@ -262,11 +262,11 @@ EntryElement: HER2byFISH Based on: LaboratoryObservation Concept: LNC#85318-4 // Corrected 5/12/2018 by MK Description: "HER2 receptor status as determined by single-probe or dual-probe Fluorescence In Situ Hybridization (FISH)." -0..0 ObservationContext.ResultValue -0..0 ObservationContext.ExceptionValue +0..0 ResultValue +0..0 ExceptionValue LaboratoryObservationTopic.TopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" LaboratoryObservationTopic.FindingMethod from HER2FISHMethodVS // single or double probe - ObservationContext.Interpretation from PositiveNegativeEquivocalVS + Interpretation from PositiveNegativeEquivocalVS LaboratoryObservationTopic.DiagnosticService is #pathology 0..0 LaboratoryObservationTopic.Precondition LaboratoryObservationTopic.Specimen is type BreastSpecimen @@ -302,10 +302,10 @@ Based on: SimpleLaboratoryObservation Concept: MTH#C1709318 Description: "The Oncotype DX test for invasive breast cancer examines the activity of 21 genes in a patient’s breast tumor tissue to provide personalized information for tailoring treatment based on the biology of their individual disease. The value from 0 to 100 indicates the estimated risk of recurrence, with the highest risk indicated by a score greater than 31. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" - ObservationContext.ResultValue value is type Quantity - ObservationContext.ResultValue.Quantity with units UCUM#1 + ResultValue value is type Quantity + ResultValue.Quantity with units UCUM#1 LaboratoryObservationTopic.TopicCode is MTH#C1709318 - ObservationContext.Interpretation from RecurrenceRiskScoreInterpretationVS + Interpretation from RecurrenceRiskScoreInterpretationVS LaboratoryObservationTopic.DiagnosticService is #pathology LaboratoryObservationTopic.Specimen is type BreastSpecimen @@ -315,10 +315,10 @@ Based on: SimpleLaboratoryObservation Concept: MTH#C3898101 Description: "The Oncotype DX test for DCIS (Ductal Carcinoma in Situ) breast cancer. Risk scores range from 0 to 100 with the following interpretations: 0-38: Low-Risk, 39-54: Intermediate-Risk, 55+: High-Risk. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" - ObservationContext.ResultValue value is type Quantity - ObservationContext.ResultValue.Quantity with units UCUM#1 + ResultValue value is type Quantity + ResultValue.Quantity with units UCUM#1 LaboratoryObservationTopic.TopicCode is MTH#C3898101 - ObservationContext.Interpretation from RecurrenceRiskScoreInterpretationVS + Interpretation from RecurrenceRiskScoreInterpretationVS LaboratoryObservationTopic.DiagnosticService is #pathology LaboratoryObservationTopic.Specimen is type BreastSpecimen @@ -327,10 +327,10 @@ Based on: SimpleLaboratoryObservation Concept: LNC#76544-6 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Prosigna. The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Risk of Recurrence Score in the literature), which is correlated with the probability of distant recurrence at ten years for post-menopausal women with hormone receptor positive, early stage breast cancer." - ObservationContext.ResultValue value is type Quantity - ObservationContext.ResultValue.Quantity with units UCUM#1 + ResultValue value is type Quantity + ResultValue.Quantity with units UCUM#1 LaboratoryObservationTopic.TopicCode is LNC#76544-6 - ObservationContext.Interpretation from RecurrenceRiskScoreInterpretationVS + Interpretation from RecurrenceRiskScoreInterpretationVS LaboratoryObservationTopic.DiagnosticService is #pathology LaboratoryObservationTopic.Specimen is type BreastSpecimen @@ -340,9 +340,9 @@ Concept: MTH#C2827401 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Mammaprint. In the United States, MammaPrint can only be used on cancers that are stage I or stage II, invasive, smaller than 5 centimeters, and estrogen-receptor-positive or -negative. Scores range from -1.0 to +1.0, with scores less than 0 indicating high risk, and scores greater than 0 indicating low risk. The is currently no LOINC code for Mammaprint test." - ObservationContext.ResultValue value is type Quantity + ResultValue value is type Quantity LaboratoryObservationTopic.TopicCode is MTH#C2827401 - ObservationContext.Interpretation from RecurrenceRiskScoreInterpretationVS + Interpretation from RecurrenceRiskScoreInterpretationVS LaboratoryObservationTopic.DiagnosticService is #pathology LaboratoryObservationTopic.Specimen is type BreastSpecimen diff --git a/spec/shr_research.txt b/spec/shr_research.txt index d062ee67..164241f0 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.research Description: "The SHR research domain contains definitions related to the clinical trials and research studies." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.context, cimi.topic, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity EntryElement: Study diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index cc932e39..6da8246c 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.wound Description: "SHR implementation of the HL7 Pressure Ulcer Prevention Domain Analysis Model (May, 2011)." -Uses: shr.core, shr.base, cimi.core, cimi.context, cimi.topic, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition +Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition CodeSystem: UCUM = http://unitsofmeasure.org CodeSystem: LNC = http://loinc.org @@ -133,7 +133,7 @@ Observation: 72287-6 Wound size observation Abstract Element: WoundTopic Based on: BodyStructureTopic -Description: "A topic concerning a wound, independent of context of being present or absent." +Description: "A topic concerning a wound of being present or absent." 1..1 TopicCode from http://loinc.org/LL2215-3 if covered // 72300-7 Wound type 1..1 Category is OBSCAT#exam 1..1 Identifier is type WoundNumber // 81666-0 Wound number [Identifier] @@ -158,8 +158,12 @@ Description: "A topic concerning a wound, independent of context of being presen Value: CodeableConcept should be from http://loinc.org/LL4936-2 -Abstract Element: WoundPresenceContext -Based on: ConditionPresenceContext +EntryElement: WoundPresenceStatement +Based on: BodyStructurePresenceStatement +Concept: SCT#416462003 "Wound (disorder)" +Description: "A determination that a wound that exists at a particular body site. Multiple wound assessments can be associated with a single wound." +// LOINC: Some of the features of a wound are recorded once, such as the cause, onset, presence on admission, etc. These should be part of the initial assertion that a wound exists. Other parts of the LOINC panel are observed repeatedly throughout the treatment of the wound. These are part of the wound evaluation. These parts can be linked by wound number or direct references in the model. + BodyStructureTopic is type WoundTopic Onset value is type dateTime // 85585-8 Date of Onset {mm/dd/yyyy} Abatement value is type dateTime // 88878-4 Date of abatement {mm/dd/yyyy} ClinicalStatus is type EpisodeOfWound // 89252-1 Episode of Wound (aka ClinicalStatus) @@ -168,6 +172,7 @@ Based on: ConditionPresenceContext 0..0 Criticality 0..0 Certainty + Element: PressureUlcerStageNPUAP Based on: Stage Concept: LNC#72527-5 @@ -180,14 +185,6 @@ Based on: ConditionPresenceContext Value: code from http://hl7.org/fhir/ValueSet/condition-clinical // wrong value set, preferred is LL4937-0 -EntryElement: WoundPresenceStatement -Based on: BodyStructurePresenceStatement -Concept: SCT#416462003 "Wound (disorder)" -Description: "A determination that a wound that exists at a particular body site. Multiple wound assessments can be associated with a single wound." -// LOINC: Some of the features of a wound are recorded once, such as the cause, onset, presence on admission, etc. These should be part of the initial assertion that a wound exists. Other parts of the LOINC panel are observed repeatedly throughout the treatment of the wound. These are part of the wound evaluation. These parts can be linked by wound number or direct references in the model. - BodyStructureTopic is type WoundTopic - ConditionPresenceContext is type WoundPresenceContext - /* Hold off for now EntryElement: WoundAbsenceStatement Based on: BodyStructureAbsenceStatement @@ -202,16 +199,10 @@ Based on: NonLaboratoryObservation Concept: LNC#54574-9 Description: "Group of observations regarding the properties and severity of a wound." StatementTopic is type WoundEvaluationResultTopic - StatementContext is type WoundObservationContext - - -Abstract Element: WoundObservationContext -Based on: ObservationContext -Description: "Context for recording wound assessments." - Interpretation is type WoundAssessmentInterpretation - DeltaFlag is type WoundTrend -0..0 ResultValue -0..0 ExceptionValue + Interpretation is type WoundAssessmentInterpretation + DeltaFlag is type WoundTrend +0..0 ResultValue +0..0 ExceptionValue Element: WoundAssessmentInterpretation Based on: Interpretation @@ -228,7 +219,7 @@ Description: "Context for recording wound assessments." Abstract Element: WoundEvaluationResultTopic Based on: ObservationTopic -Description: "Topic for wound assessments, independent of context." +Description: "Topic for wound assessments." TopicCode is LNC#54574-9 0..0 ReferenceRange Focus value is type Identifier // WoundNumber From 79fff6c0d68f5715865e05d0ffad204da9ee0ecb Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 18 Jul 2018 07:23:36 -0400 Subject: [PATCH 003/289] Finished first pass at absorbing Context hierarchy into clinical statement hierarchy Left Topic hierarchy in place --- spec/cimi_allergy.txt | 2 +- spec/cimi_encounter_map.txt | 2 +- spec/cimi_medication.txt | 4 +- spec/cimi_statement.txt | 73 +++++++++++++++++++++-------------- spec/cimi_statement_map.txt | 42 ++++++++++---------- spec/shr_core.txt | 2 +- spec/shr_immunization_map.txt | 2 +- 7 files changed, 70 insertions(+), 57 deletions(-) diff --git a/spec/cimi_allergy.txt b/spec/cimi_allergy.txt index 8ae454c6..f9f490e1 100644 --- a/spec/cimi_allergy.txt +++ b/spec/cimi_allergy.txt @@ -23,7 +23,7 @@ Description: "A finding related to the presence or absence of an individual's ri //--------------- Instantiations ------------------- EntryElement: AdverseSensitivityToSubstanceStatement -Based on: ClinicalStatement +Based on: AssertionPresenceStatement Concept: SCT#473010000 "Hypersensitivity condition (disorder)" // or SCT#420134006 "Propensity to adverse reactions (disorder)"? Description: "A finding related to the presence or absence of an individual's risk or sensitivity to a substance or class of substances. A finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time." 1..1 SubjectOfInformation value is type ref(Patient) diff --git a/spec/cimi_encounter_map.txt b/spec/cimi_encounter_map.txt index 849d6a2e..7d9b48c6 100644 --- a/spec/cimi_encounter_map.txt +++ b/spec/cimi_encounter_map.txt @@ -27,7 +27,7 @@ EncounterRequested maps to ReferralRequest: SubjectOfInformation maps to subject // _Entry ReferralDate maps to authoredOn //ReferralSourceType - TopicCode maps to type + EncounterTopic.TopicCode maps to type //TreatmentCooperation //PaymentSource EncounterStatus maps to status diff --git a/spec/cimi_medication.txt b/spec/cimi_medication.txt index b9b53323..f4f76009 100644 --- a/spec/cimi_medication.txt +++ b/spec/cimi_medication.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.medication Description: "The CIMI Medication domain contains definitions related to medications taken, or not taken, by the person of record, both currently and in the past." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity, cimi.encounter +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity, cimi.encounter, cimi.procedure /* Taking out for now since the PlanStatement has not been defined EntryElement: MedicationRegimen // Definitional @@ -11,7 +11,7 @@ Description: "Defines a specific application of over-the-counter and prescribed/ */ Element: MedicationTopic -Based on: ActionTopic +Based on: ProcedureTopic Concept: TBD Description: "Base class for actions involving medications." 1..1 Medication diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index fb8169a9..1e72f963 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.statement Description: "The namespace containing cimi-derived classes representing complete clinical statements. In this specification, these classes derive from the StatementTopic class hierarchy, not ClinicalStatement, which is a significant departure from CIMI. This simplifies the resulting logical models." -Uses: shr.core, cimi.core, cimi.element, cimi.topic, cimi.entity +Uses: shr.core, cimi.core, cimi.element, cimi.topic, cimi.entity, cimi.encounter CodeSystem: SCT = http://snomed.info/sct @@ -16,17 +16,21 @@ Concept: TBD Description: "A special type of information entry consisting of a topic and a context. The ClinicalStatement class provides the core pattern for more specific clinical statement classes, such as a statement that a finding has been found in a patient or that a procedure has been proposed by a clinical decision support system. The ClinicalStatement pattern defines the core attributes common to most clinical statements and specifies a composition pattern that encourage model component reuse and better alignment with the SNOMED CT Concept Model." 1..1 ContextCode +1..1 StatementTopic 0..1 Encounter // clinical statements are often associated with specific encounters Element: ContextCode Description: "Code representing the sense in which the statement is interpreted, for example, the degree of presence in a PresenceStatement." Value: CodeableConcept + + //---------- Actions -------------- Abstract Element: ActionStatement Based on: ClinicalStatement Description: "Abstract class representing any type of action." + StatementTopic is type ActionTopic 0..* Reason Element: Reason @@ -163,7 +167,44 @@ Description: "Abstract class representing a request to not perform any type of Abstract Element: FindingStatement Based on: ClinicalStatement Description: "Any clinical statement representing a finding." +0..1 Interpretation +1..1 FindingStatus +0..1 RelevantTime // CIMI's ClinicallyRelevantTime isn't a good name when it comes to employment and other life history events + + Element: Interpretation + Concept: MTH#C0420833 + Description: "A clinical interpretation of a finding (applies to both assertions and observation)." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/observation-interpretation if covered + + Element: FindingStatus + Concept: TBD + Description: "Indicates whether the finding is preliminary, amended, final, etc." + Value: code from http://hl7.org/fhir/ValueSet/observation-status + Element: RelevantTime + Concept: TBD + Description: "The time or time period that the finding addresses. + The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." + Value: dateTime or TimePeriod + +Element: AssertionTopic +Based on: FindingTopic +Description: "The base topic for conditions, allergies, adverse events, etc. These are things that are asserted to exist or not. The Value is interpreted in the context of the class; for an AdverseSensitivityToSubstance, the value is the substance, for a Condition, the Value represents the type of condition found." + +Element: ObservationTopic +// All attributes of observation are defined at this level. Any subclass uses subtractive methods to define relevant attributes +Based on: FindingTopic +Concept: MTH#C1554188 +Description: "The base class, independent of context for evaluations (measurements, tests, or questions). The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." +1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered +0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? +0..1 Focus +0..1 ref(Device) +0..1 ref(Specimen) +0..* Precondition +0..* ReferenceRange // applies to a quantitative measurement only +0..* EvaluationComponent +0..1 PanelMembers EntryElement: Observation // TODO: be consistent, or stop using the word "Statement" in class names Based on: FindingStatement @@ -172,20 +213,12 @@ Description: "Represents the result of evaluations (measurements, tests, or ques Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." SubjectOfInformation value is type ref(Patient) // FHIR to align with US Core Result SourceOfInformation value is type AnyPersonOrOrganization // mapped to performer (who made the observation) + StatementTopic is type ObservationTopic 0..1 ResultValue 0..1 ExceptionValue from ExceptionValueVS if covered 0..1 DeltaFlag 0..1 Issued 0..* Observer -1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered -0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? -0..1 Focus -0..1 ref(Device) -0..1 ref(Specimen) -0..* Precondition -0..* ReferenceRange // applies to a quantitative measurement only -0..* EvaluationComponent -0..1 PanelMembers Element: Focus Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. For example, the finding could deal with a condition, a behavior, a wound, or tumor. These are entities that are implied by clinical statements (see cimi.entity.MaterializedAssertion)" @@ -434,26 +467,6 @@ Concept: MTH#C0747978 "Progress Note" Description: "An entry concerning a patient where the result is a narrative text. Can be related to a specific Focus, such as a condition; and evidence and interpretation from FindingTopic." ContextCode is SCT#424975005 "Record Entity" 1..1 Details // TODO: change to "description" to synch with CIMI -0..1 Interpretation -1..1 FindingStatus -0..1 RelevantTime // ClinicallyRelevantTime isn't a good name when it comes to employment and other life history events - - Element: Interpretation - Concept: MTH#C0420833 - Description: "A clinical interpretation of a finding (applies to both assertions and observation)." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/observation-interpretation if covered - - Element: FindingStatus - Concept: TBD - Description: "Indicates whether the finding is preliminary, amended, final, etc." - Value: code from http://hl7.org/fhir/ValueSet/observation-status - - Element: RelevantTime - Concept: TBD - Description: "The time or time period that the finding addresses. - The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." - Value: dateTime or TimePeriod - Element: AbsenceStatement Based on: AssertionStatement diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index 2a053d1a..83ec5454 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -10,30 +10,30 @@ Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-obse // RecordStatus maps to extension // Cosigned maps to extension // Verified maps to extension - TopicCode maps to code - FindingMethod maps to method - Details maps to comment + ObservationTopic.TopicCode maps to code + ObservationTopic.FindingMethod maps to method + ObservationTopic.Details maps to comment // Media maps to extension - Category maps to category - AnatomicalLocation maps to bodySite - Focus.CodeableConcept maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject is a CodeableConcept - Device maps to device - Specimen maps to specimen + ObservationTopic.Category maps to category + ObservationTopic.AnatomicalLocation maps to bodySite + ObservationTopic.Focus.CodeableConcept maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject is a CodeableConcept + ObservationTopic.Device maps to device + ObservationTopic.Specimen maps to specimen // Precondition maps to extension - ReferenceRange maps to referenceRange - ReferenceRange.Range.LowerBound maps to referenceRange.low - ReferenceRange.Range.UpperBound maps to referenceRange.high - ReferenceRange.Type maps to referenceRange.type - ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo - ReferenceRange.ApplicableAgeRange maps to referenceRange.age - EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) - EvaluationComponent._Concept maps to component.code - EvaluationComponent.Value maps to component.value[x] - EvaluationComponent.ExceptionValue maps to component.dataAbsentReason - EvaluationComponent.Interpretation maps to component.interpretation - EvaluationComponent.ReferenceRange maps to component.referenceRange + ObservationTopic.ReferenceRange maps to referenceRange + ObservationTopic.ReferenceRange.Range.LowerBound maps to referenceRange.low + ObservationTopic.ReferenceRange.Range.UpperBound maps to referenceRange.high + ObservationTopic.ReferenceRange.Type maps to referenceRange.type + ObservationTopic.ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo + ObservationTopic.ReferenceRange.ApplicableAgeRange maps to referenceRange.age + ObservationTopic.EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) + ObservationTopic.EvaluationComponent._Concept maps to component.code + ObservationTopic.EvaluationComponent.Value maps to component.value[x] + ObservationTopic.EvaluationComponent.ExceptionValue maps to component.dataAbsentReason + ObservationTopic.EvaluationComponent.Interpretation maps to component.interpretation + ObservationTopic.EvaluationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member - PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) + ObservationTopic.PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) ResultValue maps to value[x] ExceptionValue maps to dataAbsentReason Interpretation maps to interpretation diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 5bef131c..24f670df 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.core Description: "The SHR Core domain contains definitions for a variety of general-purpose elements that are used widely in SHR. These include definitions for coding, expressions of time, quantities, addresses, names, and more." -Uses: cimi.element, cimi.topic +Uses: cimi.element, cimi.topic, cimi.statement Path: FHIR = http://hl7.org/fhir/ValueSet // CodeSystem: CC = http://www.nationsonline.org/oneworld/country_code_list diff --git a/spec/shr_immunization_map.txt b/spec/shr_immunization_map.txt index 75d62745..d636b1ac 100644 --- a/spec/shr_immunization_map.txt +++ b/spec/shr_immunization_map.txt @@ -34,7 +34,7 @@ ImmunizationGiven maps to http://hl7.org/fhir/us/core/StructureDefinition/us-cor /* ImmunizationNotGiven maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization: - Vaccine.Type maps to vaccineCode + ImmunizationTopic.Vaccine.Type maps to vaccineCode constrain explanation to 0..1 // TODO: must support fixing booleans // fix notGiven to true From f2fe0d59a1d915067981d9f568ff9b4cb8a70374 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 19 Jul 2018 18:42:51 -0400 Subject: [PATCH 004/289] Copied over updates from Shimi --- spec/cimi_adverse.txt | 1 - spec/cimi_adverse_map.txt | 2 +- spec/cimi_allergy.txt | 3 +- spec/cimi_allergy_map.txt | 4 +- spec/cimi_composition.txt | 6 +- spec/cimi_composition_map.txt | 1 - spec/cimi_core.txt | 30 +++--- spec/cimi_encounter.txt | 3 +- spec/cimi_encounter_map.txt | 4 +- spec/cimi_entity.txt | 52 ++++----- spec/cimi_entity_map.txt | 4 +- spec/cimi_procedure.txt | 5 +- spec/cimi_procedure_map.txt | 8 +- spec/cimi_statement.txt | 4 +- spec/cimi_statement_map.txt | 7 +- spec/cimi_topic_vs.txt | 7 +- spec/config.json | 20 ++++ spec/shr_base.txt | 6 -- spec/shr_core.txt | 23 ++-- spec/shr_core_vs.txt | 4 + spec/shr_occupation.txt | 197 +++++++++++++++++++--------------- spec/shr_occupation_map.txt | 35 ++++++ spec/shr_occupation_vs.txt | 5 +- spec/shr_oncology.txt | 35 ------ spec/shr_oncology_vs.txt | 8 -- spec/shr_wound.txt | 24 ++--- 26 files changed, 267 insertions(+), 231 deletions(-) create mode 100644 spec/config.json create mode 100644 spec/shr_occupation_map.txt diff --git a/spec/cimi_adverse.txt b/spec/cimi_adverse.txt index 558aeb29..600599ca 100644 --- a/spec/cimi_adverse.txt +++ b/spec/cimi_adverse.txt @@ -8,7 +8,6 @@ CodeSystem: MTH = http://ncimeta.nci.nih.gov Element: AdverseEventEntry Based on: InformationEntry Description: "An entry in the patient record documenting an untoward or unexpected finding observed during the course of an activity or an activity. Adverse events may capture either a workflow breach that may or may not result in harm but that must be documented for quality improvement purposes or an adverse finding whether or not it can be traceable to an actual workflow breach." - SubjectOfInformation value is type ref(Patient) Signed.Attribution.EntityOrRole is type PatientOrPractitionerOrRelatedPerson // to facilitate mapping to FHIR, which only allows Patient, Practitioner, or RelatedPerson as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) 0..1 Type from MedDRAVS // no topic code 1..1 OccurrenceTime diff --git a/spec/cimi_adverse_map.txt b/spec/cimi_adverse_map.txt index dbdc435b..8dc60e5d 100644 --- a/spec/cimi_adverse_map.txt +++ b/spec/cimi_adverse_map.txt @@ -7,7 +7,7 @@ AdverseEventEntry maps to AdverseEvent: // EntityOrRole is the name of the property; don't say Signed.Value.Role Type maps to type Details maps to description - SubjectOfInformation maps to subject + PersonOfRecord maps to subject AssociatedStudy maps to study Seriousness maps to seriousness OccurrenceTime maps to date diff --git a/spec/cimi_allergy.txt b/spec/cimi_allergy.txt index f9f490e1..3f5b9ba7 100644 --- a/spec/cimi_allergy.txt +++ b/spec/cimi_allergy.txt @@ -26,7 +26,7 @@ EntryElement: AdverseSensitivityToSubstanceStatement Based on: AssertionPresenceStatement Concept: SCT#473010000 "Hypersensitivity condition (disorder)" // or SCT#420134006 "Propensity to adverse reactions (disorder)"? Description: "A finding related to the presence or absence of an individual's risk or sensitivity to a substance or class of substances. A finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time." -1..1 SubjectOfInformation value is type ref(Patient) + SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson Signed.Attribution.EntityOrRole is type PatientOrPractitioner // to facilitate mapping to FHIR, which only allows Patient or Practitioner as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) StatementTopic is type AdverseSensitivityTopic @@ -57,7 +57,6 @@ Description: "A finding related to the presence or absence of an individual's ri EntryElement: NoAdverseSensitivityToSubstanceStatement Based on: AssertionAbsenceStatement Description: "Used to record that a particular substance or class of substances does not pose a known elevated risk to the subject." -1..1 SubjectOfInformation value is type ref(Patient) SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson Signed.Attribution.EntityOrRole is type PatientOrPractitioner StatementTopic is type AdverseSensitivityTopic diff --git a/spec/cimi_allergy_map.txt b/spec/cimi_allergy_map.txt index a8129ad6..0bc6d54f 100644 --- a/spec/cimi_allergy_map.txt +++ b/spec/cimi_allergy_map.txt @@ -4,7 +4,7 @@ Target: FHIR_STU_3 AdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: - SubjectOfInformation maps to patient + PersonOfRecord maps to patient SourceOfInformation.Value maps to asserter Signed.Value.EntityOrRole maps to recorder _Entry.CreationTime maps to assertedDate @@ -25,7 +25,7 @@ AdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/Struc NoAdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: - SubjectOfInformation maps to patient + PersonOfRecord maps to patient SourceOfInformation.Value maps to asserter Signed.Value.EntityOrRole maps to recorder _Entry.CreationTime maps to assertedDate diff --git a/spec/cimi_composition.txt b/spec/cimi_composition.txt index 0a9024fc..0bbfdf8a 100644 --- a/spec/cimi_composition.txt +++ b/spec/cimi_composition.txt @@ -8,14 +8,14 @@ Based on: Independent Description: "A composition represents a document such as a patient record, a knowledge artifact, or a catalog definition." //1..1 Status from http://hl7.org/fhir/ValueSet/composition-status //1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes -//1..1 SubjectOfInformation //1..1 CreationTime -- from Entry -- maps to date 0..* Section Element: Section Based on: Content - Description: "Represents a heading in a heading structure, or section tree . Can also be used to represent a collection of entries without metadata." - 0..* ref(ClinicalStatement) + Description: "Represents a section containing entries in a composition." + //0..1 Title + 0..* ClinicalStatement diff --git a/spec/cimi_composition_map.txt b/spec/cimi_composition_map.txt index 9ec66f1f..8a713f5c 100644 --- a/spec/cimi_composition_map.txt +++ b/spec/cimi_composition_map.txt @@ -6,7 +6,6 @@ Target: FHIR_STU_3 Composition maps to Composition: Section maps to section - constrain section to 1..1 Section.ClinicalStatement maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) diff --git a/spec/cimi_core.txt b/spec/cimi_core.txt index 9a9572ce..c2fa094f 100644 --- a/spec/cimi_core.txt +++ b/spec/cimi_core.txt @@ -29,8 +29,9 @@ Element: InformationEntry Based on: Content Concept: MTH#C1705654 Description: "An entry in a patient record or in a report, generally used for the documentation of clinical information about a subject of information such as a patient or a relative of the patient, asserted by a particular source, recorded, and potentially verified." -1..1 SubjectOfInformation -0..1 SourceOfInformation // should this be 0..*? +0..1 PersonOfRecord +0..1 SubjectIfNotPersonOfRecord +0..1 SourceOfInformation // should this be 0..*? //0..* Annotation //0..1 RecordStatus 0..1 Recorded @@ -38,27 +39,32 @@ Description: "An entry in a patient record or in a report, generally used for th //0..* Cosigned //0..* Verified - Element: SubjectOfInformation + Element: PersonOfRecord + Concept: TBD + Description: "The person this entry belongs to." + Value: ref(Patient) + + Element: SubjectIfNotPersonOfRecord Concept: MTH#C0449416 Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." - Value: ref(EntityOrRole) //string or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) + Value: 0..1 ref(EntityOrRole) //string or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) 0..1 RelationshipToPersonOfRecord - Element: RelationshipToPersonOfRecord - Description: "The relationship of the SubjectOfInformation to the subject of record." - Value: CodeableConcept - - Element: RecordStatus - Description: "Concept indicating the state of this record, e.g., 'entered in error'." - Value: CodeableConcept - Element: SourceOfInformation Concept: MTH#C0449416 Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." Value: ref(EntityOrRole) //string or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) 0..1 RelationshipToPersonOfRecord + Element: RelationshipToPersonOfRecord + Concept: MTH#C0015608 + Description: "The relationship of the SubjectIfNotPersonOfRecord to the subject of record." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered + Element: RecordStatus + Description: "Concept indicating the state of this record, e.g., 'entered in error'." + Value: CodeableConcept + Element: Recorded Description: "The person who entered the order on behalf of another individual for example in the case of a verbal or a telephone order." Value: Attribution diff --git a/spec/cimi_encounter.txt b/spec/cimi_encounter.txt index 8f9552c0..b57d1b0d 100644 --- a/spec/cimi_encounter.txt +++ b/spec/cimi_encounter.txt @@ -8,7 +8,6 @@ Element: Encounter Based on: InformationEntry Concept: TBD Description: "A description of an interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient." - SubjectOfInformation is type PatientOrGroup 0..1 EncounterClass 0..* EncounterType 0..1 TimePeriod @@ -19,7 +18,7 @@ Description: "A description of an interaction between a patient and healthcare p 0..1 ref(ClinicalNote) Element: PatientOrGroup - Based on: SubjectOfInformation + Based on: SubjectIfNotPersonOfRecord Description: "A subject of information that is constrained to be either a patient or a group." Value: ref(Patient) or ref(Group) diff --git a/spec/cimi_encounter_map.txt b/spec/cimi_encounter_map.txt index 7d9b48c6..9de1d2cd 100644 --- a/spec/cimi_encounter_map.txt +++ b/spec/cimi_encounter_map.txt @@ -4,7 +4,7 @@ Target: FHIR_STU_3 Encounter maps to Encounter: - SubjectOfInformation maps to subject + PersonOfRecord maps to subject EncounterType maps to type // ServiceProvider maps to serviceProvider Status maps to status @@ -24,7 +24,7 @@ Encounter maps to Encounter: /* EncounterRequested maps to ReferralRequest: Signed.EntityOrRole maps to requester.agent - SubjectOfInformation maps to subject // _Entry + PersonOfRecord maps to subject ReferralDate maps to authoredOn //ReferralSourceType EncounterTopic.TopicCode maps to type diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index 9191aa18..d61b8d98 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -168,20 +168,9 @@ EntryElement: RelatedPerson Based on: Role Description: "A person in a role defined in relationship to a patient" 0..1 ref(Person) -0..1 RelationshipType +0..1 RelationshipToPersonOfRecord 0..1 EffectiveTimePeriod - - Element: RelationshipType - Concept: MTH#C0015608 - Description: "The relationship of the subject to another person in the same extended family or extended family. May or may not be a blood relative." - Value: CodeableConcept from FHIR/relatedperson-relationshiptype if covered - -Element: PatientOrRelatedPerson -Based on: EntityOrRole -Description: "A choice of Patient or Practitioner. Needed for mapping to FHIR." -Value: ref(Patient) or ref(RelatedPerson) - Element: PatientOrPractitioner Based on: EntityOrRole Description: "A choice of Patient or Practitioner. Needed for mapping to FHIR." @@ -548,18 +537,37 @@ Description: "A specimen is a substance, physical object, or collection of objec 0..1 AccessionIdentifier 0..1 SpecimenStatus from http://hl7.org/fhir/ValueSet/specimen-status 1..1 Type from http://hl7.org/fhir/ValueSet/v2-0487 -1..1 SubjectOfInformation value is type ref(Patient) // Subject cannot be a device or group -0..1 SourceSpecimen -0..1 ReceivedTime +0..1 CollectionSource 0..1 CollectionTime 0..1 CollectionMethod 0..1 CollectionSite +0..1 SourceSpecimen +0..1 ReceivedTime 0..* ref(SpecimenContainer) 0..* SpecimenTreatment 0..* HandlingRisk 0..* SpecialHandling + Element: CollectionSource + Concept: TBD + Description: "The person or thing the sample was obtained from." + Value: ref(Patient) or ref(Group) or ref(Device) or ref(Substance) + Element: CollectionTime + Concept: TBD + Description: "When the sample was obtained, as a specific time or time period." + Value: dateTime or TimePeriod + + Element: CollectionMethod + Concept: TBD + Description: "How the specimen was obtained." + Value: CodeableConcept + + Element: CollectionSite + Concept: TBD + Description: "The body site where specimen was collected" + Value: AnatomicalLocation + Element: AccessionIdentifier Based on: Identifier Concept: TBD @@ -576,20 +584,6 @@ Description: "A specimen is a substance, physical object, or collection of objec Description: "Identifier for the source specimen from which this specimen was derived." Value: ref(Specimen) - Element: CollectionTime - Concept: TBD - Description: "When the sample was obtained, as a specific time or time period." - Value: dateTime or TimePeriod - - Element: CollectionMethod - Concept: TBD - Description: "How the specimen was obtained." - Value: CodeableConcept - - Element: CollectionSite - Concept: TBD - Description: "The body site where specimen was collected" - Value: AnatomicalLocation Element: HandlingRisk Concept: TBD diff --git a/spec/cimi_entity_map.txt b/spec/cimi_entity_map.txt index be178cc3..0a028d1d 100644 --- a/spec/cimi_entity_map.txt +++ b/spec/cimi_entity_map.txt @@ -46,7 +46,7 @@ RelatedPerson maps to RelatedPerson: Person.Address maps to address Person.Headshot maps to photo Person.ContactPoint maps to telecom - RelationshipType maps to relationship + RelationshipToPersonOfRecord maps to relationship EffectiveTimePeriod maps to period Organization maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization: @@ -110,7 +110,7 @@ Specimen maps to Specimen: AccessionIdentifier maps to accessionIdentifier SpecimenStatus maps to status Type maps to type - SubjectOfInformation maps to subject + CollectionSource maps to subject SourceSpecimen maps to parent ReceivedTime maps to receivedTime // SpecimenCollectionPerformed.AmountOrSize maps to collection.quantity diff --git a/spec/cimi_procedure.txt b/spec/cimi_procedure.txt index e9ca9457..586c2246 100644 --- a/spec/cimi_procedure.txt +++ b/spec/cimi_procedure.txt @@ -130,7 +130,7 @@ Description: "Base class for actions related to the collection of a specimen." EntryElement: ProcedurePerformedStatement Based on: ActionPerformedStatement -1..1 SubjectOfInformation value is type ref(Patient) +Description: "A procedure that has been performed." StatementTopic is type ProcedureTopic Participant.OnBehalfOf value is type ref(Organization) Status must be from http://hl7.org/fhir/ValueSet/event-status @@ -155,21 +155,18 @@ Based on: ActionPerformedStatement EntryElement: ProcedureNotPerformedStatement Based on: ActionNotPerformedStatement -1..1 SubjectOfInformation value is type ref(Patient) StatementTopic is type ProcedureTopic RelatedRequest value is type ref(ProcedureRequestedStatement) 0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason EntryElement: ProcedureRequestedStatement Based on: ActionRequestedStatement -1..1 SubjectOfInformation value is type ref(Patient) PriorityRank must be from http://hl7.org/fhir/ValueSet/request-priority // required Status must be from http://hl7.org/fhir/ValueSet/request-status StatementTopic is type ProcedureTopic EntryElement: ProcedureRequestedAgainstStatement Based on: ActionRequestedAgainstStatement -1..1 SubjectOfInformation value is type ref(Patient) StatementTopic is type ProcedureTopic EntryElement: SpecimenCollectionPerformedStatement diff --git a/spec/cimi_procedure_map.txt b/spec/cimi_procedure_map.txt index f87da0ee..541975b7 100644 --- a/spec/cimi_procedure_map.txt +++ b/spec/cimi_procedure_map.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 ProcedurePerformedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: ProcedureTopic.TopicCode maps to code - SubjectOfInformation maps to subject + PersonOfRecord maps to subject ProcedureTopic.Category maps to category constrain notDone to 0..0 constrain notDoneReason to 0..0 @@ -30,7 +30,7 @@ ProcedurePerformedStatement maps to http://hl7.org/fhir/us/core/StructureDefinit ProcedureNotPerformedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: ProcedureTopic.TopicCode maps to code - SubjectOfInformation maps to subject + PersonOfRecord maps to subject ProcedureTopic.Category maps to category // TODO the following is causing a crash // fix notDone to true @@ -59,7 +59,7 @@ ProcedureRequestedStatement maps to ProcedureRequest: ProcedureTopic.TopicCode maps to code ProcedureTopic.Category maps to category constrain doNotPerform to 0..0 - SubjectOfInformation maps to subject + PersonOfRecord maps to subject ProcedureTopic.AnatomicalLocation maps to bodySite Encounter maps to context Reason maps to reasonCode @@ -77,7 +77,7 @@ ProcedureRequestedAgainstStatement maps to ProcedureRequest: Signed.Value.EntityOrRole maps to requester ProcedureTopic.TopicCode maps to code ProcedureTopic.Category maps to category - SubjectOfInformation maps to subject + PersonOfRecord maps to subject ProcedureTopic.AnatomicalLocation maps to bodySite Reason maps to reasonCode // Encounter maps to context diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 1e72f963..db62b5a6 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -211,7 +211,7 @@ Based on: FindingStatement Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." - SubjectOfInformation value is type ref(Patient) // FHIR to align with US Core Result +1..1 PersonOfRecord SourceOfInformation value is type AnyPersonOrOrganization // mapped to performer (who made the observation) StatementTopic is type ObservationTopic 0..1 ResultValue @@ -227,6 +227,7 @@ Observation has a value representing the result (answer), or an ExceptionValue i Element: EvaluationComponent Description: "A simplified, non-separable evaluation consisting of a finding code (represented by the Concept), value (or exception value), reference range, and interpretation. The subject of the evaluation component is the same as in the parent evaluation." Value: (Quantity or CodeableConcept or string or Range or Ratio or Media or time or dateTime or TimePeriod or IntegerQuantity) + 1..1 TopicCode 0..1 ExceptionValue from ExceptionValueVS if covered 0..1 Interpretation 0..* ReferenceRange @@ -408,7 +409,6 @@ Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson StatementTopic is type ConditionTopic - SubjectOfInformation value is type ref(Patient) 1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical 0..1 WhenClinicallyRecognized 0..1 Preexisting diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index 83ec5454..d5f980db 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -2,9 +2,11 @@ Grammar: Map 5.1 Namespace: cimi.statement Target: FHIR_STU_3 +ClinicalStatement maps to DomainResource: Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: - SubjectOfInformation maps to subject + PersonOfRecord maps to subject +// SubjectIfNotPersonOfRecord.RelationshipToPersonOfRecord maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject // CodeableConcept // SourceOfInformation.Value maps to performer // Why doesn't this work??? // Annotation maps to extension // RecordStatus maps to extension @@ -16,7 +18,6 @@ Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-obse // Media maps to extension ObservationTopic.Category maps to category ObservationTopic.AnatomicalLocation maps to bodySite - ObservationTopic.Focus.CodeableConcept maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject is a CodeableConcept ObservationTopic.Device maps to device ObservationTopic.Specimen maps to specimen // Precondition maps to extension @@ -45,7 +46,7 @@ Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-obse ConditionPresenceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: // _Entry.CreationTime maps to assertedDate // why doesn't this work? - SubjectOfInformation maps to subject + PersonOfRecord maps to subject // SourceOfInformation.Value maps to asserter // why doesn't this work? ConditionTopic.Category maps to category ConditionTopic.TopicCode maps to code diff --git a/spec/cimi_topic_vs.txt b/spec/cimi_topic_vs.txt index 4f9edeae..2014be2c 100644 --- a/spec/cimi_topic_vs.txt +++ b/spec/cimi_topic_vs.txt @@ -2,7 +2,7 @@ Grammar: ValueSet 5.0 Namespace: shr.core CodeSystem: MTH = http://ncimeta.nci.nih.gov - +CodeSystem: LNC = http://loinc.org ValueSet: ConditionCategoryVS @@ -11,4 +11,7 @@ ValueSet: ConditionCategoryVS #structural_abnormality "An abnormality of physiologic structure." #concern "Something the subject is worried about, which may or may not have yet been manifested. The object of the concern does not have to be a medical disorder." #symptom "A sign or manifestation of a deeper cause, of known or unknown etiology, e.g. pain or ringing in the ears." -#adverse_reaction "An adverse reaction to an intervention." \ No newline at end of file +#adverse_reaction "An adverse reaction to an intervention." + +ValueSet: FindingMethodVS +Includes codes from LNC \ No newline at end of file diff --git a/spec/config.json b/spec/config.json new file mode 100644 index 00000000..08c4891c --- /dev/null +++ b/spec/config.json @@ -0,0 +1,20 @@ +{ + "projectName": "Example Project", + "projectShorthand": "EXAMPLE", + "projectURL": "http://example.com", + "fhirURL": "http://example.com/fhir", + "implementationGuide": { + "indexContent": "exampleIndexContent.html" + }, + "publisher": "Example Publisher", + "contact": [ + { + "telecom": [ + { + "system": "url", + "value": "http://example.com" + } + ] + } + ] +} diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 4433ae0b..da2fd301 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -10,7 +10,6 @@ Concept: MTH#C1705654 Description: "Metadata attributes that apply to any item represented in the standard health record. An Entry may not belong exclusively to a single person's health record, but could represent an entity that surfaces in multiple records, such as organizations or practitioners. If the entry belongs to a single person's record, then the identity of the person of record must be recorded." 0..1 ShrId 1..1 EntryId -0..1 PersonOfRecord 0..1 Version 1..1 EntryType 1..1 CreationTime @@ -31,11 +30,6 @@ Description: "Metadata attributes that apply to any item represented in the stan Concept: MTH#C0600091 Description: "A persistent, permanent identifier for an entry in a health record, unique within the scope of the health record." Value: id - - Element: PersonOfRecord - Concept: TBD - Description: "The person this entry belongs to." - Value: ref(Patient) Element: EntryType // Would EntryClass be clearer? Concept: TBD diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 24f670df..a5557cb1 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -26,7 +26,7 @@ Value: decimal Element: Units Concept: TBD Description: "Code for the unit of measure of the quantity." - Value: Coding from http://hl7.org/fhir/ValueSet/ucum-units or Coding from CurrencyVS + Value: Coding from AllUnitsVS Element: SimpleQuantity Based on: Quantity @@ -41,7 +41,7 @@ Description: "A Quantity that is an integer." Element: Age Based on: Quantity Concept: MTH#C0001779 -Description: "How long something has existed in time." +Description: "How long someone has been alive, or something has existed." Units with Coding from http://hl7.org/fhir/ValueSet/units-of-time Element: Distance @@ -124,7 +124,7 @@ Description: "A file that contains audio, video, image, or similar content." Element: Coding Concept: MTH#C0805701 Description: "Coding of a concept, drawn from a controlled vocabulary. Includes the vocabulary and version, if applicable. May include a display text, and a descriptor expressing the intended interpretation of the code." -Value: code +Value: 0..1 code // changed to 0..1 so SHR won't generate a profile. 0..1 CodeSystem 0..1 CodeSystemVersion 0..1 DisplayText @@ -220,7 +220,8 @@ Description: "Describes an individual and how to reach them." Element: TimePeriod Concept: MTH#C1948053 -Description: "A period of time defined by a start and end time, date, or year. If the start element is missing, the start of the period is not known. If the end element is missing, it means that the period is ongoing, or the start may be in the past, and the end date in the future, which means that period is expected/planned to end at the specified time. The end value includes any matching date/time. For example, the period 2011-05-23 to 2011-05-27 includes all the times from the start of the 23rd May through to the end of the 27th of May." +Description: "A period of time defined by a start and end time, date, or year. +If the start element is missing, the start of the period is not known. If the end element is missing, it means that the period is ongoing, or the start may be in the past, and the end date in the future, which means that period is expected/planned to end at the specified time. The end value includes any matching date/time. For example, the period 2011-05-23 to 2011-05-27 includes all the times from the start of the 23rd May through to the end of the 27th of May." 0..1 TimePeriodStart 0..1 TimePeriodEnd // lack of end time indicates the period was continuing at the time the entry was created @@ -237,7 +238,8 @@ Description: "A period of time defined by a start and end time, date, or year. I Element: Timing Concept: TBD -Description: "A timing schedule that specifies an event that may occur multiple times. Timing offers a choice of multiple OccurrenceTime (used is used to specify specific times), or recurrence patterns." +Description: "A timing schedule that specifies an event that may occur multiple times. +Timing offers a choice of multiple OccurrenceTime (used is used to specify specific times), or recurrence patterns." 0..* OccurrenceTime 0..1 TimingCode 0..1 EventDuration @@ -246,7 +248,8 @@ Description: "A timing schedule that specifies an event that may occur multiple Element: TimingCode Concept: TBD - Description: "A code for the timing schedule. Some codes such as BID are ubiquitous, but many institutions define their own additional codes. If a code is provided, the code is understood to be a complete statement of whatever is specified in the structured timing data, and either the code or the data may be used to interpret the Timing, with the exception that .repeat.bounds still applies over the code (and is not contained in the code)." + Description: "A code for the timing schedule. + Some codes such as BID are ubiquitous, but many institutions define their own additional codes. If a code is provided, the code is understood to be a complete statement of whatever is specified in the structured timing data, and either the code or the data may be used to interpret the Timing, with the exception that .repeat.bounds still applies over the code (and is not contained in the code)." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/timing-abbreviation if covered Element: EventDuration @@ -265,7 +268,8 @@ Description: "A timing schedule that specifies an event that may occur multiple Element: RecurrenceInterval Concept: TBD - Description: "The period of time after which the pattern repeats, for example, each day. To specify an event should take place every other Monday, the recurrence interval should be two weeks, and DayOfWeek should be Monday." + Description: "The period of time after which the pattern repeats, for example, each day. + To specify an event should take place every other Monday, the recurrence interval should be two weeks, and DayOfWeek should be Monday." Value: Duration Element: DayOfWeek @@ -275,7 +279,8 @@ Description: "A timing schedule that specifies an event that may occur multiple Element: TimeOfDay Concept: TBD - Description: "Time of day the event should take place on the designated day(s). TimeOfDay should only be specified if the RecurrenceInterval and/or DayOfWeek establishes the day when the event should take place." + Description: "Time of day the event should take place on the designated day(s). + TimeOfDay should only be specified if the RecurrenceInterval and/or DayOfWeek establishes the day when the event should take place." Value: time Element: DailyLifeEvent @@ -681,7 +686,7 @@ Value: CodeableConcept from BodyPositionVS Element: Details Concept: MTH#C0947611 -Description: "An text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." +Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." Value: string // change to language-text Element: DisplayText diff --git a/spec/shr_core_vs.txt b/spec/shr_core_vs.txt index dfc7fb14..74066178 100644 --- a/spec/shr_core_vs.txt +++ b/spec/shr_core_vs.txt @@ -9,6 +9,10 @@ CodeSystem: UGLY = http://hl7.org/fhir/quantity-comparator CodeSystem: SCT = http://snomed.info/sct CodeSystem: CURRENCY = urn:iso:std:iso:4217 +ValueSet: AllUnitsVS +Includes codes from UCUM +Includes codes from CURRENCY + ValueSet: CurrencyVS Description: "Value set containing ISO 4217 currency codes." Includes codes from CURRENCY diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 4673f648..86c76555 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -12,90 +12,62 @@ EntryElement: OccupationalDataComposition Concept: LNC#74166-0 Based on: Composition Description: "Current and past activities for profit, wages, salary, or as a service to others." -1..1 Section - Section.ClinicalStatement -includes 0..* HistoryOfEmploymentStatus -includes 0..* DateOfRetirement -includes 0..* CombatZonePeriod -includes 0..1 UsualOccupation -includes 0..* PastOrPresentOccupation - +1..1 Section is type OccupationalDataSection -EntryElement: OccupationalDataSummary -Concept: LNC#74166-0 -Based on: Observation // Overall outer container could be a Composition. -Description: "Current and past activities for profit, wages, salary, or as a service to others." - ObservationTopic.TopicCode is LNC#74166-0 - ObservationTopic.Category is OBSCAT#social-history -0..0 ObservationTopic.EvaluationComponent - ObservationTopic.PanelMembers.Observation -includes 0..* HistoryOfEmploymentStatus +Element: OccupationalDataSection +Concept: TBD +Based on: Section +Description: "Single section in the current OccupationalDataComposition, containing the person's history of employment and occupation, past and present." + ClinicalStatement +includes 0..* HistoryOfEmploymentStatus includes 0..* DateOfRetirement includes 0..* CombatZonePeriod includes 0..1 UsualOccupation includes 0..* PastOrPresentOccupation -0..0 ObservationTopic.FindingMethod -0..0 ObservationTopic.AnatomicalLocation -0..0 ObservationTopic.Focus -0..0 ObservationTopic.Device -0..0 ObservationTopic.Specimen -0..0 ObservationTopic.Precondition -0..0 ObservationTopic.ReferenceRange -0..0 ResultValue -0..0 ExceptionValue -0..0 Interpretation -0..0 RelevantTime -0..0 DeltaFlag EntryElement: HistoryOfEmploymentStatus -Based on: SimpleCodedNonLaboratoryObservation +Based on: CodedSocialHistoryObservation Concept: LNC#74165-2 "HistoryOfEmploymentStatus" Description: "A person’s state of being employed during the time period specified. Generally, employment status refers to whether or not a person has a job (e.g. employed, unemployed, not in labor force). In a healthcare setting employment status may be used to determine appropriate probing questions for occupational hazards and occupational history. For example, someone who is unemployed or has chosen not to work may be prompted to provide information about previous jobs. Employment status is not the same as work classification, which describes characteristics of a given job such as self-employed." +0..0 SubjectIfNotPersonOfRecord + ObservationTopic.TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" ResultValue value is type CodeableConcept ResultValue from http://hl7.org/fhir/ValueSet/employment-status-odh +0..0 ObservationTopic.EvaluationComponent +0..0 ObservationTopic.Focus EntryElement: DateOfRetirement -Based on: SimpleNonLaboratoryObservation +Based on: SocialHistoryObservation Concept: LNC#87510-4 "Date of Retirement" -Description: "If present, the patient is retired, and this observation records the retirement date. This is a self-identified statement about the date of being retired as self-identified by the patient. A person can be both retired and employed; most often, a person would be retired from one job and employed in another job." +Description: "If present, the patient is retired, and this observation records the retirement date. +This is a self-identified statement about the date of being retired as self-identified by the patient. A person can be both retired and employed; most often, a person would be retired from one job and employed in another job." +0..0 SubjectIfNotPersonOfRecord + ObservationTopic.TopicCode is LNC#87510-4 "Date of Retirement" ResultValue value is type dateTime -0..0 ObservationTopic.FindingMethod -0..0 ObservationTopic.AnatomicalLocation -0..0 ObservationTopic.Focus -0..0 ObservationTopic.Precondition -0..0 ObservationTopic.ReferenceRange -0..0 ObservationTopic.PanelMembers -0..0 ExceptionValue -0..0 Interpretation -0..0 RelevantTime -0..0 Encounter -0..0 DeltaFlag +0..0 ObservationTopic.EvaluationComponent +0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. +0..0 ObservationTopic.Focus EntryElement: CombatZonePeriod -Based on: SimpleNonLaboratoryObservation +Based on: SocialHistoryObservation Concept: LNC#87511-2 Description: "Indicates the date range(s) an individual hs worked in what is considered a combat or hazardous duty zone; both civilian and military." +0..0 SubjectIfNotPersonOfRecord + ObservationTopic.TopicCode is LNC#87511-2 ResultValue value is type TimePeriod -0..0 ObservationTopic.FindingMethod -0..0 ObservationTopic.AnatomicalLocation -0..0 ObservationTopic.Focus -0..0 ObservationTopic.Precondition -0..0 ObservationTopic.ReferenceRange -0..0 ObservationTopic.PanelMembers -0..0 ExceptionValue -0..0 Interpretation -0..0 RelevantTime -0..0 Encounter -0..0 DeltaFlag +0..0 ObservationTopic.EvaluationComponent +0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. +0..0 ObservationTopic.Focus // only patient + EntryElement: UsualOccupation -Based on: CodedNonLaboratoryObservation +Based on: CodedSocialHistoryObservation Concept: LNC#21843-8 Description: "The type of work a person has held for the longest duration during his or her working history at the point in time the statement is recorded." // We'll need to determine the fix here -- US Core requires Subject to be a patient, but ODH allows patient or related person + ObservationTopic.TopicCode is LNC#21843-8 ResultValue could be from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 // defined in FHIR 3.2 and not found in 3.0.1 - ObservationTopic.Category is OBSCAT#social-history ObservationTopic.Focus value is type CodeableConcept ObservationTopic.Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype ObservationTopic.EvaluationComponent @@ -103,16 +75,7 @@ includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration 1..1 RelevantTime RelevantTime value is type TimePeriod -0..0 ObservationTopic.FindingMethod -0..0 ObservationTopic.AnatomicalLocation -0..0 ObservationTopic.Precondition -0..0 ObservationTopic.ReferenceRange -0..0 ObservationTopic.PanelMembers -0..0 ResultValue -0..0 ExceptionValue -0..0 Interpretation -0..0 Encounter -0..0 DeltaFlag + /* UsualOccupation is in the value element Element: UsualOccupation @@ -124,21 +87,24 @@ includes 0..1 UsualOccupationDuration Element: UsualIndustry Based on: CodedEvaluationComponent Concept: LNC#21844-6 "History of Usual industry" - Description: "The industry (type of business) which the subject has worked in for the longest duration while in the usual occupation. For example, a person who has spent 30 years as a secretary in various industries, but mostly in construction, would record a usual occupation of secretary and a usual industry of construction." // "A history of this observation is not retained. Actually past versions of the observation could be retained, but the panel should refer to the latest one only. + Description: "The industry (type of business) which the subject has worked in for the longest duration while in the usual occupation. + For example, a person who has spent 30 years as a secretary in various industries, but mostly in construction, would record a usual occupation of secretary and a usual industry of construction." // "A history of this observation is not retained. Actually past versions of the observation could be retained, but the panel should refer to the latest one only. Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/industry-cdc-census-2010 // defined in FHIR 3.2 and not found in 3.0.1 + TopicCode is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration Based on: EvaluationComponent Concept: LNC#74163-7 "Usual occupation duration" Description: "The total time spent on an activity, inclusive of all time intervals, whether continuous or interrupted." Value: Quantity with units UCUM#a + TopicCode is LNC#74163-7 "Usual occupation duration" EntryElement: PastOrPresentOccupation -Based on: CodedNonLaboratoryObservation +Based on: CodedSocialHistoryObservation Concept: LNC#11341-5 "History of Occupation" Description: "A single job, past or present. The relevant time is the period the job was held." + ObservationTopic.TopicCode is LNC#11341-5 "History of Occupation" ResultValue could be from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 - ObservationTopic.Category is OBSCAT#social-history 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization ObservationTopic.Focus value is type CodeableConcept ObservationTopic.Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype @@ -153,16 +119,6 @@ includes 0..1 WeeklyWorkDays includes 0..1 DailyWorkHours 1..1 RelevantTime RelevantTime value is type TimePeriod -0..0 ObservationTopic.FindingMethod -0..0 ObservationTopic.AnatomicalLocation -0..0 ObservationTopic.Focus -0..0 ObservationTopic.Precondition -0..0 ObservationTopic.ReferenceRange -0..0 ObservationTopic.PanelMembers -0..0 ExceptionValue -0..0 Interpretation -0..0 Encounter -0..0 DeltaFlag // Question -- organization only, or person or organization Element: Employer @@ -173,8 +129,10 @@ includes 0..1 DailyWorkHours Element: PastOrPresentIndustry Based on: CodedEvaluationComponent - Concept: LNC#86188-0 Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." + Concept: LNC#86188-0 + Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/industry-cdc-census-2010 // defined in FHIR 3.2 and not found in 3.0.1 + TopicCode is LNC#86188-0 Element: WorkClassification Based on: CodedEvaluationComponent @@ -182,46 +140,85 @@ includes 0..1 DailyWorkHours Description: "Employment attributes for a given job. This specifies information about the worker’s job, such as self-employed or unpaid, and is similar to the U.S. Bureau of Labor Statistics ‘class of worker’ and the International Labor Organization ‘classification of status in employment’. Knowing a patient is self-employed, for example, can assist in discussing return-to-work options." Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/work-classification-odh - + TopicCode is LNC#85104-8 "Compensation and sector employment type" + Element: SupervisoryLevel Based on: CodedEvaluationComponent Concept: LNC#87707-6 Description: "The supervisory or management responsibilities for an individual’s job. For military jobs, this is pay grade." Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/supervisory-level-odh-us - + TopicCode is LNC#87707-6 + Element: JobDuty Based on: EvaluationComponent Concept: LNC#63761-1 Description: "Regular actions performed at work. A person may have the occupation of 'construction laborer' and his specific job duty to carry construction supplies." Value: string 0..0 ReferenceRange + TopicCode is LNC#63761-1 Element: OccupationalHazard Based on: EvaluationComponent Concept: LNC#87729-0 - Description: "Actual contact or interaction with a specific hazard that increases an individual’s risk of a detrimental physical or mental health outcome (e.g., ingestion or inhalation of a toxic chemical). Information on an exposure may include the measurement of duration/intensity of contact or interaction with the specific hazard." + Description: "Actual contact or interaction with a specific hazard that increases an individual’s risk of a detrimental physical or mental health outcome (e.g., ingestion or inhalation of a toxic chemical). + Information on an exposure may include the measurement of duration/intensity of contact or interaction with the specific hazard." Value: string 0..0 ReferenceRange + TopicCode is LNC#87729-0 Element: WorkSchedule Based on: CodedEvaluationComponent Concept: LNC#74159-5 - Description: "An individual's typical arrangement of working hours for an occupation. For example, work schedule may capture that an individual typically works a regular day shift, evening shift, or night shift. It can also specify if an individual has another type of schedule, such as a rotating shift, split shift, etc." + Description: "An individual's typical arrangement of working hours for an occupation. + For example, work schedule may capture that an individual typically works a regular day shift, evening shift, or night shift. It can also specify if an individual has another type of schedule, such as a rotating shift, split shift, etc." Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/work-schedule-odh + TopicCode is LNC#74159-5 Element: WeeklyWorkDays Based on: EvaluationComponent Concept: LNC#74160-3 - Description: "The typical number of days per week that a person spends performing their duties for work. This information is most useful coupled with daily work hours and helps to reveal compressed schedules or a 7-day work-week." + Description: "The typical number of days per week that a person spends performing their duties for work. + This information is most useful coupled with daily work hours and helps to reveal compressed schedules or a 7-day work-week." Value: Quantity with units UCUM#d 0..0 ReferenceRange Element: DailyWorkHours Based on: EvaluationComponent Concept: LNC#87512-0 - Description: "The typical number of hours in a day that a person spends performing their duties for work. This information is most useful coupled with weekly work days and helps to reveal compressed schedules, long work hours, and overtime." + Description: "The typical number of hours in a day that a person spends performing their duties for work. + This information is most useful coupled with weekly work days and helps to reveal compressed schedules, long work hours, and overtime." Value: Quantity with units UCUM#h 0..0 ReferenceRange + TopicCode is LNC#87512-0 + +Element: SocialHistoryObservation +Based on: Observation +Description: "A simplified observation for social histories." +// 0..0 SourceOfInformation +0..0 Recorded +0..0 Signed + SubjectIfNotPersonOfRecord value is type ref(RelatedPerson) + SourceOfInformation value is type AnyPersonOrOrganization // mapped to performer (who made the observation) + ObservationTopic.Category is OBSCAT#social-history +0..0 ObservationTopic.FindingMethod +0..0 ObservationTopic.AnatomicalLocation +0..0 ObservationTopic.Precondition +0..0 ObservationTopic.ReferenceRange +0..0 ObservationTopic.PanelMembers +0..0 ExceptionValue +0..0 Interpretation +0..0 Encounter +0..0 DeltaFlag +0..0 Device +0..0 Specimen +0..0 Media + + +Element: CodedSocialHistoryObservation +Based on: SocialHistoryObservation +Description: "The result of social history questions, whose answer is expressed as a code." + ResultValue value is type CodeableConcept +0..0 ObservationTopic.ReferenceRange /* EntryElement: MilitaryServiceHistory @@ -277,6 +274,32 @@ includes 0..1 ServiceConnectedDisability Value: Quantity with units UCUM#% 0..0 ReferenceRange + +EntryElement: OccupationalDataSummary +Concept: LNC#74166-0 +Based on: Observation // Overall outer container could be a Composition. +Description: "Current and past activities for profit, wages, salary, or as a service to others." + ObservationTopic.TopicCode is LNC#74166-0 + ObservationTopic.Category is OBSCAT#social-history +0..0 ObservationTopic.EvaluationComponent + ObservationTopic.PanelMembers.Observation +includes 0..* HistoryOfEmploymentStatus +includes 0..* DateOfRetirement +includes 0..* CombatZonePeriod +includes 0..1 UsualOccupation +includes 0..* PastOrPresentOccupation +0..0 ObservationTopic.FindingMethod +0..0 ObservationTopic.AnatomicalLocation +0..0 ObservationTopic.Focus +0..0 ObservationTopic.Device +0..0 ObservationTopic.Specimen +0..0 ObservationTopic.Precondition +0..0 ObservationTopic.ReferenceRange +0..0 ResultValue +0..0 ExceptionValue +0..0 Interpretation +0..0 RelevantTime +0..0 DeltaFlag */ diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt new file mode 100644 index 00000000..ca42d18b --- /dev/null +++ b/spec/shr_occupation_map.txt @@ -0,0 +1,35 @@ +Grammar: Map 5.1 +Namespace: shr.occupation +Target: FHIR_STU_3 + +// do not map to US Core Results -- Brett says that is only for labs +SocialHistoryObservation maps to Observation: + PersonOfRecord maps to subject +// SubjectIfNotPersonOfRecord.RelationshipToPersonOfRecord maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject + ObservationTopic.TopicCode maps to code + ObservationTopic.FindingMethod maps to method + ObservationTopic.Details maps to comment +// ObservationTopic.Media maps to extension + ObservationTopic.Category maps to category +// ObservationTopic.Precondition maps to extension + ObservationTopic.ReferenceRange maps to referenceRange + ObservationTopic.ReferenceRange.Range.LowerBound maps to referenceRange.low + ObservationTopic.ReferenceRange.Range.UpperBound maps to referenceRange.high + ObservationTopic.ReferenceRange.Type maps to referenceRange.type + ObservationTopic.ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo + ObservationTopic.ReferenceRange.ApplicableAgeRange maps to referenceRange.age + ObservationTopic.EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) + ObservationTopic.EvaluationComponent._Concept maps to component.code + ObservationTopic.EvaluationComponent.Value maps to component.value[x] + ObservationTopic.EvaluationComponent.ExceptionValue maps to component.dataAbsentReason + ObservationTopic.EvaluationComponent.Interpretation maps to component.interpretation + ObservationTopic.EvaluationComponent.ReferenceRange maps to component.referenceRange + constrain related to 0..0 +// ContextCode maps to nothing // drop + ResultValue maps to value[x] + ExceptionValue maps to dataAbsentReason + Interpretation maps to interpretation + Issued maps to issued + FindingStatus maps to status + RelevantTime maps to effective[x] + Encounter maps to context diff --git a/spec/shr_occupation_vs.txt b/spec/shr_occupation_vs.txt index c19c27c0..694818cc 100644 --- a/spec/shr_occupation_vs.txt +++ b/spec/shr_occupation_vs.txt @@ -1,7 +1,8 @@ Grammar: ValueSet 5.0 Namespace: shr.occupation -ValueSet: MilitaryStatusVS + +/*ValueSet: MilitaryStatusVS Description: "The current status of the person in armed services." #active "On active duty in US military" #reserve "Currently a Reservist" @@ -37,7 +38,7 @@ Description: "Values were taken from Final HMIS Data Standards March 2010 (Homel #wwII_era "World War II (September 1940 - July 1947)" - +*/ /* ValueSet: EmploymentStatusVS diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index a6971cca..a3170502 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -470,41 +470,6 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Value: Quantity with units UCUM#% -EntryElement: LymphaticInvolvement -Based on: Observation -Concept: MTH#C0746333 -Description: "Description of lymph nodes contain cancer cells." -Value: CodeableConcept from PositiveNegativeVS -1..1 AnatomicalLocatoin from LymphSystemSubdivisionVS - ObservationTopic.DiagnosticService is #pathology -0..0 Focus -0..0 Precondition -0..0 ReferenceRange -0..0 DeltaFlag - EvaluationComponent -includes 0..1 LargestLymphNodeSize -includes 0..1 NumberOfLymphNodesInvolved -includes 0..1 DegreeOfLymphaticInvolvement - - Element: LargestLymphNodeSize - Based on: EvaluationComponent - Concept: MTH#C1285847 - Description: "The largest dimension of the largest lymph node invaded by cancer cells." - Value: Quantity with units UCUM#mm - - Element: NumberOfLymphNodesInvolved - Based on: EvaluationComponent - Concept: TBD - Description: "A count of lymph nodes invaded by cancer cells of those examined." - Value: Quantity with units UCUM#1 - - Element: DegreeOfLymphaticInvolvement - Based on: CodedEvaluationComponent - Concept: TBD - Description: "Assessment of how much cancer is in a lymph node." - Value: CodeableConcept from DegreeOfLymphaticInvolvementVS - - Element: Ki-67LabelingIndex Based on: SimpleCodedObservation diff --git a/spec/shr_oncology_vs.txt b/spec/shr_oncology_vs.txt index 5bcd42d1..a20ac9b5 100644 --- a/spec/shr_oncology_vs.txt +++ b/spec/shr_oncology_vs.txt @@ -238,14 +238,6 @@ Description: "HER2 status overall result" #equivocal "Equivocal (IHC Score 2+)" #positive "Positive/Amplified (IHC Score 3+)" -ValueSet: LymphSystemSubdivisionVS -Description: "A lymph node area or nodal group; a subdivision of the entire lymphatic system. For breast cancer, this includes 5 areas: internal mammary lymph nodes, axillary lymph nodes level I, II, and III, and the supraclavicular lymph nodes." -Includes codes descending from SCT#122490001 "Lymphoid system structure (body structure)" - -ValueSet: DegreeOfLymphaticInvolvementVS -#microscopic "Only a few cancer cells are in the node." -#gross "The cancer can be seen or felt without aid of microscopy." -#extracapsular "Cancer has pread outside the wall of the node." ValueSet: GeneIdentifierVS Description: "A unique code for a gene, including protein coding genes, ncRNA genes and pseudogenes, to allow unambiguous communication, drawn from HUGO Gene Nomenclature Committee." diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 6da8246c..aa1890e4 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -176,7 +176,7 @@ Description: "A determination that a wound that exists at a particular body site Element: PressureUlcerStageNPUAP Based on: Stage Concept: LNC#72527-5 - Value: CodeableConcept from http://loinc.org/LL2337-5 + Value: CodeableConcept from http://loinc.org/vs/LL2337-5 0..0 StageDetail Element: EpisodeOfWound @@ -208,13 +208,13 @@ Description: "Group of observations regarding the properties and severity of a w Based on: Interpretation Concept: LNC#80338-7 Description: "Overall assessement of whether the wound is within normal parameters." - Value: CodeableConcept from http://loinc.org/LL3816-7 if covered // underpowered? 'normal' and 'other' + Value: CodeableConcept from http://loinc.org/vs/LL3816-7 if covered // underpowered? 'normal' and 'other' Element: WoundTrend Based on: DeltaFlag Concept: LNC#89253-9 Description: "Whether a condition is improving, worsening, stable, or resolved." - Value: CodeableConcept should be from http://loinc.org/LL4938-8 // improved, deteriorated, stablized or resolved + Value: CodeableConcept should be from http://loinc.org/vs/LL4938-8 // improved, deteriorated, stablized or resolved Abstract Element: WoundEvaluationResultTopic @@ -243,13 +243,13 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Based on: CodedEvaluationComponent Concept: LNC#72301-5 Description: "A description of the skin around the wound (periwound). Color, induration, warmth and edema should be assessed. Redness of the surrounding skin can be indicative of unrelieved pressure. Irritation of the surrounding skin can result from exposure to feces or urine, a reaction to the dressing or tape, or inappropriate removal of dressing or tape. Redness, tenderness, warmth and swelling are classical clinical signs of infection. [Reference: Brown, P., 2009]" - Value: CodeableConcept could be from http://loinc.org/LL2216-1 // example + Value: CodeableConcept could be from http://loinc.org/vs/LL2216-1 // example Element: VisibleInternalStructure Based on: CodedEvaluationComponent Concept: LNC#89250-5 Description: "Exposed body structures, devices, and/or foreign bodies visible by the naked eye in a wound." - Value: CodeableConcept should be from http://loinc.org/LL4935-4 // preferred + Value: CodeableConcept should be from http://loinc.org/vs/LL4935-4 // preferred Element: PresenceOfWoundTunneling Based on: CodedEvaluationComponent @@ -284,7 +284,7 @@ includes 1..1 WoundBedAppearancePercentage Based on: CodedEvaluationComponent Concept: LNC#72371-8 Description: "Appearance of wound base (bed)." - Value: CodeableConcept could be from http://loinc.org/LL2237-7 + Value: CodeableConcept could be from http://loinc.org/vs/LL2237-7 Element: WoundBedAppearancePercentage Based on: EvaluationComponent @@ -305,7 +305,7 @@ includes 1..1 WoundBedColorAreaPercentage Based on: CodedEvaluationComponent Concept: LNC#39132-6 Description: "Color of Wound base (bed)." - Value: CodeableConcept could be from http://loinc.org/LL2338-3 + Value: CodeableConcept could be from http://loinc.org/vs/LL2338-3 // LOINC: Why precoordinate a general concept such as 'percentage of area' with the concept of wound bed? Element: WoundBedColorAreaPercentage @@ -328,13 +328,13 @@ includes 0..1 WoundEdgeColor Based on: CodedEvaluationComponent Concept: LNC#72304-9 Description: "Edge of wound description." - Value: CodeableConcept could be from http://loinc.org/LL2230-2 + Value: CodeableConcept could be from http://loinc.org/vs/LL2230-2 Element: WoundEdgeColor Based on: CodedEvaluationComponent Concept: LNC#39133-4 Description: "Color of Wound edge." - Value: CodeableConcept could be from http://loinc.org/LL2338-3 + Value: CodeableConcept could be from http://loinc.org/vs/LL2338-3 EntryElement: WoundTunnelingObservation Based on: ComponentOnlyNonLaboratoryObservation @@ -397,7 +397,7 @@ includes 1..1 ExudateAppearance Based on: CodedEvaluationComponent Concept: LNC#39116-9 Description:"Drainage amount of wound" - Value: CodeableConcept could be from http://loinc.org/LL2222-9 + Value: CodeableConcept could be from http://loinc.org/vs/LL2222-9 Element: ExudateOdor Based on: CodedEvaluationComponent @@ -409,13 +409,13 @@ includes 1..1 ExudateAppearance Based on: CodedEvaluationComponent Concept: LNC#72289-2 Description:"Color of exudate from wound" - Value: CodeableConcept could be from http://loinc.org/LL2219-5 + Value: CodeableConcept could be from http://loinc.org/vs/LL2219-5 Element: ExudateAppearance Based on: CodedEvaluationComponent Concept: LNC#72290-0 Description:"Appearance of exudate from wound" - Value: CodeableConcept could be from http://loinc.org/LL2220-3 + Value: CodeableConcept could be from http://loinc.org/vs/LL2220-3 EntryElement: WoundSizeObservation From 8835212a6baab6134478586280c01ce72b46c106 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 19 Jul 2018 19:06:09 -0400 Subject: [PATCH 005/289] Minor changes to finish IG generation --- spec/cimi_core.txt | 2 +- spec/cimi_statement.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/cimi_core.txt b/spec/cimi_core.txt index c2fa094f..2d9890a7 100644 --- a/spec/cimi_core.txt +++ b/spec/cimi_core.txt @@ -46,7 +46,7 @@ Description: "An entry in a patient record or in a report, generally used for th Element: SubjectIfNotPersonOfRecord Concept: MTH#C0449416 - Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." + Description: "The subject of the observation, if someone other than the person of record (the patient) is the subject, for example, a relative of the person of record." Value: 0..1 ref(EntityOrRole) //string or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) 0..1 RelationshipToPersonOfRecord diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index db62b5a6..899ed15e 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -227,7 +227,7 @@ Observation has a value representing the result (answer), or an ExceptionValue i Element: EvaluationComponent Description: "A simplified, non-separable evaluation consisting of a finding code (represented by the Concept), value (or exception value), reference range, and interpretation. The subject of the evaluation component is the same as in the parent evaluation." Value: (Quantity or CodeableConcept or string or Range or Ratio or Media or time or dateTime or TimePeriod or IntegerQuantity) - 1..1 TopicCode + 0..1 TopicCode 0..1 ExceptionValue from ExceptionValueVS if covered 0..1 Interpretation 0..* ReferenceRange From e4b3da6621021e32e6c498eb764d4a514c428756 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 19 Jul 2018 22:19:35 -0400 Subject: [PATCH 006/289] Fixed errors not detected when running filtered IG --- spec/cimi_statement.txt | 2 ++ spec/exampleIndexContent.html | 1 + spec/shr_core.txt | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 spec/exampleIndexContent.html diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 899ed15e..42fd2388 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -30,6 +30,7 @@ The ClinicalStatement class provides the core pattern for more specific clinical Abstract Element: ActionStatement Based on: ClinicalStatement Description: "Abstract class representing any type of action." +1..1 PersonOfRecord StatementTopic is type ActionTopic 0..* Reason @@ -167,6 +168,7 @@ Description: "Abstract class representing a request to not perform any type of Abstract Element: FindingStatement Based on: ClinicalStatement Description: "Any clinical statement representing a finding." +1..1 PersonOfRecord 0..1 Interpretation 1..1 FindingStatus 0..1 RelevantTime // CIMI's ClinicallyRelevantTime isn't a good name when it comes to employment and other life history events diff --git a/spec/exampleIndexContent.html b/spec/exampleIndexContent.html new file mode 100644 index 00000000..0eca1a97 --- /dev/null +++ b/spec/exampleIndexContent.html @@ -0,0 +1 @@ +

This is a Example Project FHIR implementation guide.

\ No newline at end of file diff --git a/spec/shr_core.txt b/spec/shr_core.txt index a5557cb1..1c8b3630 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -26,7 +26,7 @@ Value: decimal Element: Units Concept: TBD Description: "Code for the unit of measure of the quantity." - Value: Coding from AllUnitsVS + Value: Coding should be from AllUnitsVS Element: SimpleQuantity Based on: Quantity @@ -116,7 +116,7 @@ Description: "A file that contains audio, video, image, or similar content." Element: PhotographicImage Based on: Media Concept: LNC#72170-4 - ContentType from ImageMimeTypeVS if covered + // ContentType from ImageMimeTypeVS if covered //---- Coding departs from CIMI to align with FHIR From 0e8ef6013a98c2ff3a3990673bb554681a1f5d8f Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 20 Jul 2018 05:39:12 -0400 Subject: [PATCH 007/289] Changed Quantity value to 0..1 --- spec/shr_core.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 1c8b3630..9c81395a 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -16,7 +16,7 @@ CodeSystem: UCUM = http://unitsofmeasure.org Element: Quantity Description: "A quantity with units, whose value may be bounded from above or below, as defined in FHIR" -Value: decimal +Value: 0..1 decimal 0..1 Comparator 0..1 Units From cb9ab7aae9bfab80267789226f907873078bf71a Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 20 Jul 2018 09:29:43 -0400 Subject: [PATCH 008/289] Updated for value sets no longer in FHIR --- spec/shr_occupation.txt | 16 ++++++++-------- spec/shr_occupation_vs.txt | 25 +++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 86c76555..4e205cfe 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -33,7 +33,7 @@ Generally, employment status refers to whether or not a person has a job (e.g. e 0..0 SubjectIfNotPersonOfRecord ObservationTopic.TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" ResultValue value is type CodeableConcept - ResultValue from http://hl7.org/fhir/ValueSet/employment-status-odh + ResultValue from EmploymentStatusVS 0..0 ObservationTopic.EvaluationComponent 0..0 ObservationTopic.Focus @@ -67,7 +67,7 @@ Concept: LNC#21843-8 Description: "The type of work a person has held for the longest duration during his or her working history at the point in time the statement is recorded." // We'll need to determine the fix here -- US Core requires Subject to be a patient, but ODH allows patient or related person ObservationTopic.TopicCode is LNC#21843-8 - ResultValue could be from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 // defined in FHIR 3.2 and not found in 3.0.1 + ResultValue could be from OccupationVS ObservationTopic.Focus value is type CodeableConcept ObservationTopic.Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype ObservationTopic.EvaluationComponent @@ -89,7 +89,7 @@ includes 0..1 UsualOccupationDuration Concept: LNC#21844-6 "History of Usual industry" Description: "The industry (type of business) which the subject has worked in for the longest duration while in the usual occupation. For example, a person who has spent 30 years as a secretary in various industries, but mostly in construction, would record a usual occupation of secretary and a usual industry of construction." // "A history of this observation is not retained. Actually past versions of the observation could be retained, but the panel should refer to the latest one only. - Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/industry-cdc-census-2010 // defined in FHIR 3.2 and not found in 3.0.1 + Value: CodeableConcept could be from IndustryVS // defined in FHIR 3.2 and not found in 3.0.1 TopicCode is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration @@ -104,7 +104,7 @@ Based on: CodedSocialHistoryObservation Concept: LNC#11341-5 "History of Occupation" Description: "A single job, past or present. The relevant time is the period the job was held." ObservationTopic.TopicCode is LNC#11341-5 "History of Occupation" - ResultValue could be from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 + ResultValue could be from OccupationVS 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization ObservationTopic.Focus value is type CodeableConcept ObservationTopic.Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype @@ -131,7 +131,7 @@ includes 0..1 DailyWorkHours Based on: CodedEvaluationComponent Concept: LNC#86188-0 Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." - Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/industry-cdc-census-2010 // defined in FHIR 3.2 and not found in 3.0.1 + Value: CodeableConcept could be from IndustryVS // defined in FHIR 3.2 and not found in 3.0.1 TopicCode is LNC#86188-0 Element: WorkClassification @@ -139,14 +139,14 @@ includes 0..1 DailyWorkHours Concept: LNC#85104-8 "Compensation and sector employment type" Description: "Employment attributes for a given job. This specifies information about the worker’s job, such as self-employed or unpaid, and is similar to the U.S. Bureau of Labor Statistics ‘class of worker’ and the International Labor Organization ‘classification of status in employment’. Knowing a patient is self-employed, for example, can assist in discussing return-to-work options." - Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/work-classification-odh + Value: CodeableConcept could be from WorkClassificationVS TopicCode is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel Based on: CodedEvaluationComponent Concept: LNC#87707-6 Description: "The supervisory or management responsibilities for an individual’s job. For military jobs, this is pay grade." - Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/supervisory-level-odh-us + Value: CodeableConcept could be from SupervisoryLevelVS TopicCode is LNC#87707-6 Element: JobDuty @@ -171,7 +171,7 @@ includes 0..1 DailyWorkHours Concept: LNC#74159-5 Description: "An individual's typical arrangement of working hours for an occupation. For example, work schedule may capture that an individual typically works a regular day shift, evening shift, or night shift. It can also specify if an individual has another type of schedule, such as a rotating shift, split shift, etc." - Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/work-schedule-odh + Value: CodeableConcept could be from WorkScheduleVS TopicCode is LNC#74159-5 Element: WeeklyWorkDays diff --git a/spec/shr_occupation_vs.txt b/spec/shr_occupation_vs.txt index 694818cc..ce21473f 100644 --- a/spec/shr_occupation_vs.txt +++ b/spec/shr_occupation_vs.txt @@ -1,6 +1,31 @@ Grammar: ValueSet 5.0 Namespace: shr.occupation +CodeSystem: EMPLOYCDC = urn:oid:2.16.840.1.114222.4.11.7129 +CodeSystem: INDUSTRYCDC = urn:oid:2.16.840.1.114222.4.5.315 +CodeSystem: OCCUPATIONCDC = urn:oid:2.16.840.1.114222.4.11.7186 +CodeSystem: WORKCLASSCDC = urn:oid:2.16.840.1.114222.4.11.7597 +CodeSystem: SUPERLEVELCDC = urn:oid:2.16.840.1.114222.4.11.7613 +CodeSystem: WORKSCHEDCDC = urn:oid:2.16.840.1.114222.4.11.7130 + +ValueSet: EmploymentStatusVS +Includes codes from EMPLOYCDC + +ValueSet: OccupationVS +Includes codes from OCCUPATIONCDC + +ValueSet: IndustryVS +Includes codes from INDUSTRYCDC + +ValueSet: WorkClassificationVS +Includes codes from WORKCLASSCDC + +ValueSet: SupervisoryLevelVS +Includes codes from SUPERLEVELCDC + +ValueSet: WorkScheduleVS +Includes codes from WORKSCHEDCDC + /*ValueSet: MilitaryStatusVS Description: "The current status of the person in armed services." From d01a1002604b0d69a5c2bf36d0053b5ec6babe24 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 20 Jul 2018 10:50:12 -0400 Subject: [PATCH 009/289] More value set changes OID-based value sets in ODH didn't expand properly --- spec/cimi_statement.txt | 3 +- spec/shr_occupation.txt | 85 ++++++++++++-------------------------- spec/shr_occupation_vs.txt | 25 ----------- spec/shr_oncology.txt | 2 +- 4 files changed, 29 insertions(+), 86 deletions(-) diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 42fd2388..927da949 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -15,7 +15,7 @@ Based on: InformationEntry Concept: TBD Description: "A special type of information entry consisting of a topic and a context. The ClinicalStatement class provides the core pattern for more specific clinical statement classes, such as a statement that a finding has been found in a patient or that a procedure has been proposed by a clinical decision support system. The ClinicalStatement pattern defines the core attributes common to most clinical statements and specifies a composition pattern that encourage model component reuse and better alignment with the SNOMED CT Concept Model." -1..1 ContextCode +0..1 ContextCode 1..1 StatementTopic 0..1 Encounter // clinical statements are often associated with specific encounters @@ -214,6 +214,7 @@ Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." 1..1 PersonOfRecord + ContextCode is SCT#424975005 "Record Entity" SourceOfInformation value is type AnyPersonOrOrganization // mapped to performer (who made the observation) StatementTopic is type ObservationTopic 0..1 ResultValue diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 4e205cfe..76f29bd5 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -4,7 +4,6 @@ Description: "Patient’s or family member's work information." Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.composition, cimi.entity, cimi.element, cimi.encounter CodeSystem: LNC = http://loinc.org -CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: UCUM = http://unitsofmeasure.org CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category @@ -33,9 +32,8 @@ Generally, employment status refers to whether or not a person has a job (e.g. e 0..0 SubjectIfNotPersonOfRecord ObservationTopic.TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" ResultValue value is type CodeableConcept - ResultValue from EmploymentStatusVS + ResultValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 0..0 ObservationTopic.EvaluationComponent -0..0 ObservationTopic.Focus EntryElement: DateOfRetirement Based on: SocialHistoryObservation @@ -67,7 +65,7 @@ Concept: LNC#21843-8 Description: "The type of work a person has held for the longest duration during his or her working history at the point in time the statement is recorded." // We'll need to determine the fix here -- US Core requires Subject to be a patient, but ODH allows patient or related person ObservationTopic.TopicCode is LNC#21843-8 - ResultValue could be from OccupationVS + ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 ObservationTopic.Focus value is type CodeableConcept ObservationTopic.Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype ObservationTopic.EvaluationComponent @@ -76,20 +74,12 @@ includes 0..1 UsualOccupationDuration 1..1 RelevantTime RelevantTime value is type TimePeriod - -/* UsualOccupation is in the value element - Element: UsualOccupation - Based on: CodedEvaluationComponent - Concept: LNC#21843-8 "History of Usual Occupation" // Occupation is LNC#74287-4 - Description: "A person's work or business" - Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 // VS defined in FHIR 3.2 and not found in 3.0.1 -*/ Element: UsualIndustry Based on: CodedEvaluationComponent Concept: LNC#21844-6 "History of Usual industry" Description: "The industry (type of business) which the subject has worked in for the longest duration while in the usual occupation. For example, a person who has spent 30 years as a secretary in various industries, but mostly in construction, would record a usual occupation of secretary and a usual industry of construction." // "A history of this observation is not retained. Actually past versions of the observation could be retained, but the panel should refer to the latest one only. - Value: CodeableConcept could be from IndustryVS // defined in FHIR 3.2 and not found in 3.0.1 + Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 TopicCode is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration @@ -104,7 +94,7 @@ Based on: CodedSocialHistoryObservation Concept: LNC#11341-5 "History of Occupation" Description: "A single job, past or present. The relevant time is the period the job was held." ObservationTopic.TopicCode is LNC#11341-5 "History of Occupation" - ResultValue could be from OccupationVS + ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization ObservationTopic.Focus value is type CodeableConcept ObservationTopic.Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype @@ -131,7 +121,7 @@ includes 0..1 DailyWorkHours Based on: CodedEvaluationComponent Concept: LNC#86188-0 Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." - Value: CodeableConcept could be from IndustryVS // defined in FHIR 3.2 and not found in 3.0.1 + Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 TopicCode is LNC#86188-0 Element: WorkClassification @@ -139,14 +129,14 @@ includes 0..1 DailyWorkHours Concept: LNC#85104-8 "Compensation and sector employment type" Description: "Employment attributes for a given job. This specifies information about the worker’s job, such as self-employed or unpaid, and is similar to the U.S. Bureau of Labor Statistics ‘class of worker’ and the International Labor Organization ‘classification of status in employment’. Knowing a patient is self-employed, for example, can assist in discussing return-to-work options." - Value: CodeableConcept could be from WorkClassificationVS + Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 TopicCode is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel Based on: CodedEvaluationComponent Concept: LNC#87707-6 Description: "The supervisory or management responsibilities for an individual’s job. For military jobs, this is pay grade." - Value: CodeableConcept could be from SupervisoryLevelVS + Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 TopicCode is LNC#87707-6 Element: JobDuty @@ -171,7 +161,7 @@ includes 0..1 DailyWorkHours Concept: LNC#74159-5 Description: "An individual's typical arrangement of working hours for an occupation. For example, work schedule may capture that an individual typically works a regular day shift, evening shift, or night shift. It can also specify if an individual has another type of schedule, such as a rotating shift, split shift, etc." - Value: CodeableConcept could be from WorkScheduleVS + Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 TopicCode is LNC#74159-5 Element: WeeklyWorkDays @@ -194,24 +184,26 @@ includes 0..1 DailyWorkHours Element: SocialHistoryObservation Based on: Observation Description: "A simplified observation for social histories." -// 0..0 SourceOfInformation +// Get rid of some unnecessary CIMI-isms 0..0 Recorded 0..0 Signed +0..0 ContextCode +0..0 SourceOfInformation SubjectIfNotPersonOfRecord value is type ref(RelatedPerson) - SourceOfInformation value is type AnyPersonOrOrganization // mapped to performer (who made the observation) ObservationTopic.Category is OBSCAT#social-history 0..0 ObservationTopic.FindingMethod 0..0 ObservationTopic.AnatomicalLocation 0..0 ObservationTopic.Precondition +0..0 ObservationTopic.Focus 0..0 ObservationTopic.ReferenceRange 0..0 ObservationTopic.PanelMembers +0..0 ObservationTopic.Device +0..0 ObservationTopic.Specimen +0..0 ObservationTopic.Media 0..0 ExceptionValue 0..0 Interpretation 0..0 Encounter 0..0 DeltaFlag -0..0 Device -0..0 Specimen -0..0 Media Element: CodedSocialHistoryObservation @@ -220,9 +212,17 @@ Description: "The result of social history questions, whose answer is expressed ResultValue value is type CodeableConcept 0..0 ObservationTopic.ReferenceRange -/* + + +/* UsualOccupation is in the value element + Element: UsualOccupation + Based on: CodedEvaluationComponent + Concept: LNC#21843-8 "History of Usual Occupation" // Occupation is LNC#74287-4 + Description: "A person's work or business" + Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 // VS defined in FHIR 3.2 and not found in 3.0.1 + EntryElement: MilitaryServiceHistory -Based on: ComponentOnlyNonLaboratoryObservation +Based on: CodedSocialHistoryObservation Description: "History of service in the US military." ObservationTopic.Category is OBSCAT#social-history ObservationTopic.TopicCode is MTH#C3714797 @@ -233,15 +233,7 @@ includes 0..1 MilitaryBranch includes 0..* MilitaryServiceEra includes 0..1 ServiceConnectedDisability //includes 0..1 TBD "MilitaryRank" -0..0 ObservationTopic.FindingMethod -0..0 ObservationTopic.AnatomicalLocation -0..0 ObservationTopic.Focus -0..0 ObservationTopic.Device -0..0 ObservationTopic.Precondition -0..0 Interpretation -0..0 RelevantTime -0..0 Encounter -0..0 DeltaFlag + Element: MilitaryStatus Concept: MTH#C1550416 @@ -275,31 +267,6 @@ includes 0..1 ServiceConnectedDisability 0..0 ReferenceRange -EntryElement: OccupationalDataSummary -Concept: LNC#74166-0 -Based on: Observation // Overall outer container could be a Composition. -Description: "Current and past activities for profit, wages, salary, or as a service to others." - ObservationTopic.TopicCode is LNC#74166-0 - ObservationTopic.Category is OBSCAT#social-history -0..0 ObservationTopic.EvaluationComponent - ObservationTopic.PanelMembers.Observation -includes 0..* HistoryOfEmploymentStatus -includes 0..* DateOfRetirement -includes 0..* CombatZonePeriod -includes 0..1 UsualOccupation -includes 0..* PastOrPresentOccupation -0..0 ObservationTopic.FindingMethod -0..0 ObservationTopic.AnatomicalLocation -0..0 ObservationTopic.Focus -0..0 ObservationTopic.Device -0..0 ObservationTopic.Specimen -0..0 ObservationTopic.Precondition -0..0 ObservationTopic.ReferenceRange -0..0 ResultValue -0..0 ExceptionValue -0..0 Interpretation -0..0 RelevantTime -0..0 DeltaFlag */ diff --git a/spec/shr_occupation_vs.txt b/spec/shr_occupation_vs.txt index ce21473f..694818cc 100644 --- a/spec/shr_occupation_vs.txt +++ b/spec/shr_occupation_vs.txt @@ -1,31 +1,6 @@ Grammar: ValueSet 5.0 Namespace: shr.occupation -CodeSystem: EMPLOYCDC = urn:oid:2.16.840.1.114222.4.11.7129 -CodeSystem: INDUSTRYCDC = urn:oid:2.16.840.1.114222.4.5.315 -CodeSystem: OCCUPATIONCDC = urn:oid:2.16.840.1.114222.4.11.7186 -CodeSystem: WORKCLASSCDC = urn:oid:2.16.840.1.114222.4.11.7597 -CodeSystem: SUPERLEVELCDC = urn:oid:2.16.840.1.114222.4.11.7613 -CodeSystem: WORKSCHEDCDC = urn:oid:2.16.840.1.114222.4.11.7130 - -ValueSet: EmploymentStatusVS -Includes codes from EMPLOYCDC - -ValueSet: OccupationVS -Includes codes from OCCUPATIONCDC - -ValueSet: IndustryVS -Includes codes from INDUSTRYCDC - -ValueSet: WorkClassificationVS -Includes codes from WORKCLASSCDC - -ValueSet: SupervisoryLevelVS -Includes codes from SUPERLEVELCDC - -ValueSet: WorkScheduleVS -Includes codes from WORKSCHEDCDC - /*ValueSet: MilitaryStatusVS Description: "The current status of the person in armed services." diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index a3170502..8c084f8b 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -72,7 +72,7 @@ includes 0..1 EstrogenReceptorStatus includes 0..1 ProgesteroneReceptorStatus includes 0..1 DCISNuclearGrade includes 0..1 BreastCancerHistologicGrade -0..0 Focus // only one breast cancer per patient +0..0 Focus 0..0 ref(Device) 0..0 ref(Specimen) 0..0 Precondition From 4d35e8088f4cc39eab9a5795d616064692fbebe7 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 20 Jul 2018 14:28:22 -0400 Subject: [PATCH 010/289] Restored the value set method --- spec/shr_occupation.txt | 24 ++++++++++++++++-------- spec/shr_occupation_vs.txt | 26 ++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 76f29bd5..037138d4 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -32,7 +32,8 @@ Generally, employment status refers to whether or not a person has a job (e.g. e 0..0 SubjectIfNotPersonOfRecord ObservationTopic.TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" ResultValue value is type CodeableConcept - ResultValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 + ResultValue from EmploymentStatusVS +// ResultValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 0..0 ObservationTopic.EvaluationComponent EntryElement: DateOfRetirement @@ -65,7 +66,8 @@ Concept: LNC#21843-8 Description: "The type of work a person has held for the longest duration during his or her working history at the point in time the statement is recorded." // We'll need to determine the fix here -- US Core requires Subject to be a patient, but ODH allows patient or related person ObservationTopic.TopicCode is LNC#21843-8 - ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 + ResultValue could be from OccupationVS +// ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 ObservationTopic.Focus value is type CodeableConcept ObservationTopic.Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype ObservationTopic.EvaluationComponent @@ -79,7 +81,8 @@ includes 0..1 UsualOccupationDuration Concept: LNC#21844-6 "History of Usual industry" Description: "The industry (type of business) which the subject has worked in for the longest duration while in the usual occupation. For example, a person who has spent 30 years as a secretary in various industries, but mostly in construction, would record a usual occupation of secretary and a usual industry of construction." // "A history of this observation is not retained. Actually past versions of the observation could be retained, but the panel should refer to the latest one only. - Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 + Value: CodeableConcept could be from IndustryVS + //Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 TopicCode is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration @@ -94,7 +97,8 @@ Based on: CodedSocialHistoryObservation Concept: LNC#11341-5 "History of Occupation" Description: "A single job, past or present. The relevant time is the period the job was held." ObservationTopic.TopicCode is LNC#11341-5 "History of Occupation" - ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 + ResultValue could be from OccupationVS +// ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization ObservationTopic.Focus value is type CodeableConcept ObservationTopic.Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype @@ -121,7 +125,8 @@ includes 0..1 DailyWorkHours Based on: CodedEvaluationComponent Concept: LNC#86188-0 Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." - Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 + Value: CodeableConcept could be from IndustryVS +// Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 TopicCode is LNC#86188-0 Element: WorkClassification @@ -129,14 +134,16 @@ includes 0..1 DailyWorkHours Concept: LNC#85104-8 "Compensation and sector employment type" Description: "Employment attributes for a given job. This specifies information about the worker’s job, such as self-employed or unpaid, and is similar to the U.S. Bureau of Labor Statistics ‘class of worker’ and the International Labor Organization ‘classification of status in employment’. Knowing a patient is self-employed, for example, can assist in discussing return-to-work options." - Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 + Value: CodeableConcept could be from WorkClassificationVS + //Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 TopicCode is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel Based on: CodedEvaluationComponent Concept: LNC#87707-6 Description: "The supervisory or management responsibilities for an individual’s job. For military jobs, this is pay grade." - Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 + Value: CodeableConcept could be from SupervisoryLevelVS + //Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 TopicCode is LNC#87707-6 Element: JobDuty @@ -161,7 +168,8 @@ includes 0..1 DailyWorkHours Concept: LNC#74159-5 Description: "An individual's typical arrangement of working hours for an occupation. For example, work schedule may capture that an individual typically works a regular day shift, evening shift, or night shift. It can also specify if an individual has another type of schedule, such as a rotating shift, split shift, etc." - Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 + Value: CodeableConcept could be from WorkScheduleVS + //Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 TopicCode is LNC#74159-5 Element: WeeklyWorkDays diff --git a/spec/shr_occupation_vs.txt b/spec/shr_occupation_vs.txt index 694818cc..54c610ea 100644 --- a/spec/shr_occupation_vs.txt +++ b/spec/shr_occupation_vs.txt @@ -2,6 +2,32 @@ Grammar: ValueSet 5.0 Namespace: shr.occupation +CodeSystem: EMPLOYCDC = urn:oid:2.16.840.1.114222.4.11.7129 +CodeSystem: INDUSTRYCDC = urn:oid:2.16.840.1.114222.4.5.315 +CodeSystem: OCCUPATIONCDC = urn:oid:2.16.840.1.114222.4.11.7186 +CodeSystem: WORKCLASSCDC = urn:oid:2.16.840.1.114222.4.11.7597 +CodeSystem: SUPERLEVELCDC = urn:oid:2.16.840.1.114222.4.11.7613 +CodeSystem: WORKSCHEDCDC = urn:oid:2.16.840.1.114222.4.11.7130 + +ValueSet: EmploymentStatusVS +Includes codes from EMPLOYCDC + +ValueSet: OccupationVS +Includes codes from OCCUPATIONCDC + +ValueSet: IndustryVS +Includes codes from INDUSTRYCDC + +ValueSet: WorkClassificationVS +Includes codes from WORKCLASSCDC + +ValueSet: SupervisoryLevelVS +Includes codes from SUPERLEVELCDC + +ValueSet: WorkScheduleVS +Includes codes from WORKSCHEDCDC + + /*ValueSet: MilitaryStatusVS Description: "The current status of the person in armed services." #active "On active duty in US military" From e2d6a4594fb02a402ba6b77bd1e2eb51be2b8624 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 27 Jul 2018 21:06:29 -0400 Subject: [PATCH 011/289] Moved updates on Wound from Shimi --- spec/cimi_statement.txt | 6 +- spec/cimi_statement_map.txt | 6 +- spec/cimi_topic.txt | 2 +- spec/shr_condition.txt | 23 +++--- spec/shr_oncology.txt | 6 +- spec/shr_wound.txt | 144 +++++++++++++++++++----------------- spec/shr_wound_vs.txt | 19 +++-- 7 files changed, 112 insertions(+), 94 deletions(-) diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 927da949..b7bd799e 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -225,7 +225,7 @@ Observation has a value representing the result (answer), or an ExceptionValue i Element: Focus Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. For example, the finding could deal with a condition, a behavior, a wound, or tumor. These are entities that are implied by clinical statements (see cimi.entity.MaterializedAssertion)" - Value: CodeableConcept or Identifier or ref(EntityOrRole) + Value: string or CodeableConcept or Identifier or ref(EntityOrRole) Element: EvaluationComponent Description: "A simplified, non-separable evaluation consisting of a finding code (represented by the Concept), value (or exception value), reference range, and interpretation. The subject of the evaluation component is the same as in the parent evaluation." @@ -411,7 +411,7 @@ Based on: AssertionPresenceStatement Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson - StatementTopic is type ConditionTopic + StatementTopic is type ConditionAssertionTopic 1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical 0..1 WhenClinicallyRecognized 0..1 Preexisting @@ -462,7 +462,7 @@ EntryElement: ConditionAbsenceStatement Based on: AssertionAbsenceStatement Concept: MTH#C0277541 "no disease present" Description: "A finding that a condition is or was not present in the subject at a certain time, not necessarily the time the information is gathered." - StatementTopic is type ConditionTopic + StatementTopic is type ConditionAssertionTopic EntryElement: ClinicalNote Based on: FindingStatement diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index d5f980db..c41edf98 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -48,10 +48,10 @@ ConditionPresenceStatement maps to http://hl7.org/fhir/us/core/StructureDefiniti // _Entry.CreationTime maps to assertedDate // why doesn't this work? PersonOfRecord maps to subject // SourceOfInformation.Value maps to asserter // why doesn't this work? - ConditionTopic.Category maps to category - ConditionTopic.TopicCode maps to code + ConditionAssertionTopic.Category maps to category + ConditionAssertionTopic.TopicCode maps to code constrain bodySite to 0..0 - ConditionTopic.AnatomicalLocation maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite + ConditionAssertionTopic.AnatomicalLocation maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Encounter maps to context ClinicalStatus maps to clinicalStatus VerificationStatus maps to verificationStatus diff --git a/spec/cimi_topic.txt b/spec/cimi_topic.txt index 70277a06..823e5017 100644 --- a/spec/cimi_topic.txt +++ b/spec/cimi_topic.txt @@ -53,7 +53,7 @@ Description: "The topic composition for laboratory observations. A specimen is r Value: CodeableConcept from DiagnosticServiceVS if covered -Element: ConditionTopic +Element: ConditionAssertionTopic Based on: AssertionTopic Description: "A condition. 'Condition' is interpreted broadly to include disorder, abnormality, problem, injury, complaint, functionality, concern, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble. CIMI deviation: AnatomicalLocation is included here, rather than being a property of FindingSiteAssertionTopic, since it is a common property of conditions." diff --git a/spec/shr_condition.txt b/spec/shr_condition.txt index 4627a471..0ecda959 100644 --- a/spec/shr_condition.txt +++ b/spec/shr_condition.txt @@ -7,32 +7,31 @@ CodeSystem: SCT = http://snomed.info/sct CodeSystem: MTH = http://ncimeta.nci.nih.gov // -Abstract Element: BodyStructureTopic -Based on: ConditionTopic +Abstract Element: FindingSiteConditionTopic +Based on: ConditionAssertionTopic Concept: MTH#C1268086 Description: "Presence (or absence) of a distinct anatomical or pathological morphological feature or organizational pattern, acquired or innate. Examples include tissue types, tumors, and wounds." -0..1 Identifier -0..1 Morphology +0..1 FindingSiteIdentifier 1..* AnatomicalLocation - Element: Morphology - Concept: TBD - Description: "The kind of structure being represented. This can define both normal and abnormal morphologies." - Value: CodeableConcept + Element: FindingSiteIdentifier + Concept: TBD + Description: "A human-readable identifier for the condition at the finding site, for example, a wound number or tumor identifier." + Value: string -EntryElement: BodyStructurePresenceStatement +EntryElement: FindingSiteConditionPresenceStatement Based on: ConditionPresenceStatement Concept: TBD Description: "Presence of a distinct anatomical or pathological morphological feature or organizational pattern, acquired or innate. Examples include tissue types, tumors, and wounds. Body structures are continuants that allow observations of the same body structure to be related to be tracked over time." - StatementTopic is type BodyStructureTopic + StatementTopic is type FindingSiteConditionTopic -EntryElement: BodyStructureAbsenceStatement // AssertionOfAbsenceStatement? +EntryElement: FindingSiteConditionAbsenceStatement // AssertionOfAbsenceStatement? Based on: ConditionAbsenceStatement Concept: TBD Description: "Absence of a distinct anatomical or pathological morphological feature or organizational pattern, acquired or innate. Examples include tissue types, tumors, and wounds. Body structures are continuants that allow observations of the same body structure to be related to be tracked over time." - StatementTopic is type BodyStructureTopic + StatementTopic is type FindingSiteConditionTopic EntryElement: DiseaseProgression Based on: Observation diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index 8c084f8b..51d8c965 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -42,10 +42,10 @@ EntryElement: BreastCancerPresenceStatement Based on: ConditionPresenceStatement Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." - ConditionTopic.TopicCode from BreastCancerTypeVS + ConditionAssertionTopic.TopicCode from BreastCancerTypeVS Stage.StageDetail value is type BreastCancerStage - ConditionTopic.FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding - ConditionTopic.AnatomicalLocation is type BreastSite + ConditionAssertionTopic.FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding + ConditionAssertionTopic.AnatomicalLocation is type BreastSite 0..1 MorphologyBehavior from MorphologyBehaviorVS Element: MorphologyBehavior diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index aa1890e4..232f08c2 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -132,71 +132,66 @@ Observation: 72287-6 Wound size observation */ Abstract Element: WoundTopic -Based on: BodyStructureTopic -Description: "A topic concerning a wound of being present or absent." -1..1 TopicCode from http://loinc.org/LL2215-3 if covered // 72300-7 Wound type +Based on: FindingSiteConditionTopic +Description: "A topic concerning a wound being present or absent." +1..1 TopicCode is type WoundType 1..1 Category is OBSCAT#exam -1..1 Identifier is type WoundNumber // 81666-0 Wound number [Identifier] - Morphology from WoundMorphologyVS - ConditionCause is type InjuryCause // 11373-8 "Injury cause" -1..1 AnatomicalLocation +1..1 FindingSiteIdentifier is type WoundIdentifier // in this context, a wound number 81666-0. However it is not clear how to associate a more specific meaning + ConditionCause is type WoundTypeEtiology +1..1 AnatomicalLocation is type WoundAnatomicLocation 0..0 Device 0..0 Precondition - Element: WoundNumber - Based on: Identifier + Element: WoundType + Based on: TopicCode + Concept: LNC#72300-7 + Description: "A type code describing the wound or skin injury. + Differentiating pressure ulcers and other types of wounds is important for an accurate count of their number and for identifying appropriate wound treatment. The values will be used for documenting and retrieving data regarding the number and types of wounds present. " + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion + + Element: WoundIdentifier + Based on: FindingSiteIdentifier Concept: LNC#81666-0 - 0..0 Purpose - Type is LNC#81666-0 // not sure this is necessary - 0..0 CodeSystem // why do we have this attribute on Identifier? - 0..1 EffectiveTimePeriod - 0..1 Issuer + Description: "A human-readable identifier for the lesion; e.g., a letter or integer." + Value: string - Element: InjuryCause + Element: WoundTypeEtiology Based on: ConditionCause Concept: LNC#11373-8 "Injury cause" - Value: CodeableConcept should be from http://loinc.org/LL4936-2 + Description: "A specialization of condition cause, specific to the causes of injuries." + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.3/definition // should be from http://loinc.org/vs/LL4936-2 + Element: WoundAnatomicLocation + Based on: AnatomicalLocation + Concept: LNC#39111-0 "Body Site" + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.14/definition + 1..1 Laterality + 0..0 AnatomicalDirection +//------------- Wound Absence or Presence --------------- EntryElement: WoundPresenceStatement -Based on: BodyStructurePresenceStatement +Based on: FindingSiteConditionPresenceStatement Concept: SCT#416462003 "Wound (disorder)" Description: "A determination that a wound that exists at a particular body site. Multiple wound assessments can be associated with a single wound." -// LOINC: Some of the features of a wound are recorded once, such as the cause, onset, presence on admission, etc. These should be part of the initial assertion that a wound exists. Other parts of the LOINC panel are observed repeatedly throughout the treatment of the wound. These are part of the wound evaluation. These parts can be linked by wound number or direct references in the model. - BodyStructureTopic is type WoundTopic + FindingSiteConditionTopic is type WoundTopic Onset value is type dateTime // 85585-8 Date of Onset {mm/dd/yyyy} Abatement value is type dateTime // 88878-4 Date of abatement {mm/dd/yyyy} - ClinicalStatus is type EpisodeOfWound // 89252-1 Episode of Wound (aka ClinicalStatus) - Stage is type PressureUlcerStageNPUAP -0..0 Severity // not sure if this should be prohibited, but it is not part of LOINC panel +0..0 Severity // not sure if zeroing it out should be prohibited, but it is not part of LOINC panel 0..0 Criticality 0..0 Certainty - Element: PressureUlcerStageNPUAP - Based on: Stage - Concept: LNC#72527-5 - Value: CodeableConcept from http://loinc.org/vs/LL2337-5 - 0..0 StageDetail - - Element: EpisodeOfWound - Based on: ClinicalStatus - Concept: LNC#89252-1 "Episode of Wound" - Value: code from http://hl7.org/fhir/ValueSet/condition-clinical // wrong value set, preferred is LL4937-0 - -/* Hold off for now -EntryElement: WoundAbsenceStatement -Based on: BodyStructureAbsenceStatement -Concept: TBD +/* EntryElement: WoundAbsenceStatement +Based on: FindingSiteConditionAbsenceStatement Description: "Documents the absence of a wounds of a particular type at a given body site. if the Value is SCT#416462003 (Wound) then there is no wound of any type at the site." - BodyStructureTopic is type WoundTopic -*/ + FindingSiteConditionTopic is type WoundTopic*/ + +//--------------- Wound Assessment ------------------------- -// This is the main event -EntryElement: WoundEvaluationSummaryPanel +EntryElement: WoundAssessmentPanel Based on: NonLaboratoryObservation -Concept: LNC#54574-9 +Concept: LNC#39135-9 Description: "Group of observations regarding the properties and severity of a wound." StatementTopic is type WoundEvaluationResultTopic Interpretation is type WoundAssessmentInterpretation @@ -214,17 +209,18 @@ Description: "Group of observations regarding the properties and severity of a w Based on: DeltaFlag Concept: LNC#89253-9 Description: "Whether a condition is improving, worsening, stable, or resolved." - Value: CodeableConcept should be from http://loinc.org/vs/LL4938-8 // improved, deteriorated, stablized or resolved + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.5/definition // should be from http://loinc.org/vs/LL4938-8 with values improved, deteriorated, stablized or resolved. Resolved is missing from the VS in VSAC Abstract Element: WoundEvaluationResultTopic Based on: ObservationTopic Description: "Topic for wound assessments." - TopicCode is LNC#54574-9 + TopicCode is LNC#39135-9 0..0 ReferenceRange - Focus value is type Identifier // WoundNumber + Focus value is type string // WoundNumber Media is type PhotographicImage // 72170-4 Photographic image [Media] EvaluationComponent +includes 0..1 EpisodeOfWound // very similar to Episodicity or ClinicalStatus, but value set is different. includes 0..1 PeriwoundDescription // 72301-5 Description of Periwound includes 0..* VisibleInternalStructure //89250-5 Device or anatomic structure visible in wound includes 0..1 PresenceOfWoundTunneling // 72298-3 Tunneling of Wound R present/absent @@ -239,17 +235,25 @@ includes 0..* WoundUnderminingObservation // 89258-8 Wound undermining observa includes 0..1 WoundExudateObservation // 72292-6 Wound exudate observation includes 0..1 WoundSizeObservation // 72287-6 Wound size observation + Element: EpisodeOfWound + Based on: CodedEvaluationComponent + Concept: LNC#89252-1 "Episode of Wound" + Description: "Wound episode refers to a period of the wound, an incident in the course of a wound" + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.4/definition + Element: PeriwoundDescription Based on: CodedEvaluationComponent Concept: LNC#72301-5 Description: "A description of the skin around the wound (periwound). Color, induration, warmth and edema should be assessed. Redness of the surrounding skin can be indicative of unrelieved pressure. Irritation of the surrounding skin can result from exposure to feces or urine, a reaction to the dressing or tape, or inappropriate removal of dressing or tape. Redness, tenderness, warmth and swelling are classical clinical signs of infection. [Reference: Brown, P., 2009]" - Value: CodeableConcept could be from http://loinc.org/vs/LL2216-1 // example + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.2/definition + //could be from http://loinc.org/vs/LL2216-1 Element: VisibleInternalStructure Based on: CodedEvaluationComponent Concept: LNC#89250-5 Description: "Exposed body structures, devices, and/or foreign bodies visible by the naked eye in a wound." - Value: CodeableConcept should be from http://loinc.org/vs/LL4935-4 // preferred + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.1/definition +// should be from http://loinc.org/vs/LL4935-4 Element: PresenceOfWoundTunneling Based on: CodedEvaluationComponent @@ -257,7 +261,6 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Description: "The presence or absence of wound tunneling." Value: CodeableConcept from PresentAbsentVS // LOINC: should re-use the same Snomed codes for Present-Absent - // LOINC: why preferred? why not required? Element: PresenceOfWoundUndermining Based on: CodedEvaluationComponent @@ -271,7 +274,7 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Description: "The presence or absence of wound exudate." Value: CodeableConcept from PresentAbsentVS -// LOINC: The wound bed panel has to be factored in a way that the percentages pair unambiguously with the color/appearances. It should be a set of 2-tuples (pairs). The way it is done in LOINC doesn't allow pairing +// LOINC: The wound bed panel is factored so the percentages pair unambiguously with the color/appearances. It should be a set of 2-tuples (pairs). The way it is done in LOINC doesn't allow pairing EntryElement: WoundBedAppearanceObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89254-7 @@ -284,7 +287,7 @@ includes 1..1 WoundBedAppearancePercentage Based on: CodedEvaluationComponent Concept: LNC#72371-8 Description: "Appearance of wound base (bed)." - Value: CodeableConcept could be from http://loinc.org/vs/LL2237-7 + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.6/definition //could be from http://loinc.org/vs/LL2237-7 Element: WoundBedAppearancePercentage Based on: EvaluationComponent @@ -305,7 +308,7 @@ includes 1..1 WoundBedColorAreaPercentage Based on: CodedEvaluationComponent Concept: LNC#39132-6 Description: "Color of Wound base (bed)." - Value: CodeableConcept could be from http://loinc.org/vs/LL2338-3 + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.7/definition //could be from http://loinc.org/vs/LL2338-3 // LOINC: Why precoordinate a general concept such as 'percentage of area' with the concept of wound bed? Element: WoundBedColorAreaPercentage @@ -328,7 +331,7 @@ includes 0..1 WoundEdgeColor Based on: CodedEvaluationComponent Concept: LNC#72304-9 Description: "Edge of wound description." - Value: CodeableConcept could be from http://loinc.org/vs/LL2230-2 + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.8/definition // could be from http://loinc.org/vs/LL2230-2 Element: WoundEdgeColor Based on: CodedEvaluationComponent @@ -387,35 +390,44 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72292-6 Description: "Description of the fluid produced by a wound." ObservationTopic.EvaluationComponent -includes 0..1 ExudateDrainageAmount -includes 0..1 ExudateOdor -includes 1..1 ExudateColor +includes 0..1 WoundExudateAmount +includes 0..1 WoundExudateVolume includes 1..1 ExudateAppearance +includes 1..1 ExudateColor +includes 0..1 ExudateOdor + // LOINC: Wound area should be in wound size panel, not wound exudate panel - Element: ExudateDrainageAmount + Element: WoundExudateAmount Based on: CodedEvaluationComponent Concept: LNC#39116-9 Description:"Drainage amount of wound" - Value: CodeableConcept could be from http://loinc.org/vs/LL2222-9 + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.10/definition //could be from http://loinc.org/vs/LL2222-9 - Element: ExudateOdor + Element: WoundExudateVolume + Based on: EvaluationComponent + Concept: LNC#39122-7 + Description:"Appearance of exudate from wound" + Value: Quantity with units UCUM#mL + + Element: ExudateAppearance Based on: CodedEvaluationComponent - Concept: LNC#72288-4 - Description:"Odor of exudate from wound" - // LOINC: no value set for exudate odor defined + Concept: LNC#72290-0 + Description:"Appearance of exudate from wound" + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.11/definition //could be from http://loinc.org/vs/LL2220-3 Element: ExudateColor Based on: CodedEvaluationComponent Concept: LNC#72289-2 Description:"Color of exudate from wound" - Value: CodeableConcept could be from http://loinc.org/vs/LL2219-5 + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.12/definition + // could be from http://loinc.org/vs/LL2219-5 - Element: ExudateAppearance + Element: ExudateOdor Based on: CodedEvaluationComponent - Concept: LNC#72290-0 - Description:"Appearance of exudate from wound" - Value: CodeableConcept could be from http://loinc.org/vs/LL2220-3 + Concept: LNC#72288-4 + Description:"Odor of exudate from wound" + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.13/definition EntryElement: WoundSizeObservation diff --git a/spec/shr_wound_vs.txt b/spec/shr_wound_vs.txt index 6c53dafb..881af3a9 100644 --- a/spec/shr_wound_vs.txt +++ b/spec/shr_wound_vs.txt @@ -1,14 +1,21 @@ Grammar: ValueSet 5.0 Namespace: shr.wound -ValueSet: WoundMorphologyVS -Description: "The shape and nature of a wound." -Includes codes descending from SCT#13924000 "Wound (morphological abnormality)" +//ValueSet: WoundMorphologyVS +//Description: "The shape and nature of a wound." +//Includes codes descending from SCT#13924000 "Wound (morphological abnormality)" -ValueSet: WoundTypeVS -Description: "Disorders classified as types of wounds." -Includes codes descending from SCT#416462003 "Wound (disorder)" +//ValueSet: WoundTypeVS +//Description: "Disorders classified as types of wounds." +//Includes codes descending from SCT#416462003 "Wound (disorder)" +/* +SCT#241000205101 "Wound exudate quantity - none (finding)" +SCT#251000205103 "Wound exudate quantity - scant (finding)" +SCT#261000205100 "Wound exudate quantity - small (finding)" +SCT#291000205107 "Wound exudate quantity - moderate (finding)" +SCT#271000205108 "Wound exudate quantity - large (finding)" +*/ /* Old stuff ValueSet: WoundBodySiteVS From c4d1361c6ace8d59bcebef5b14e45550b043eff1 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 27 Jul 2018 21:19:16 -0400 Subject: [PATCH 012/289] Added PressureUlcerAssociation --- spec/shr_wound.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 232f08c2..02b4b6a1 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -223,6 +223,7 @@ Description: "Topic for wound assessments." includes 0..1 EpisodeOfWound // very similar to Episodicity or ClinicalStatus, but value set is different. includes 0..1 PeriwoundDescription // 72301-5 Description of Periwound includes 0..* VisibleInternalStructure //89250-5 Device or anatomic structure visible in wound +includes 0..1 PressureUlcerAssociation // missing LOINC code includes 0..1 PresenceOfWoundTunneling // 72298-3 Tunneling of Wound R present/absent includes 0..1 PresenceOfWoundUndermining // 72295-9 Undermining of Wound R includes 0..1 PresenceOfWoundExudate // 89259-6 Presence of wound exudate @@ -255,6 +256,12 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.1/definition // should be from http://loinc.org/vs/LL4935-4 + Element: PressureUlcerAssociation + Based on: CodedEvaluationComponent + Concept: TBD + Description: "Is the wound associated with a device or pressure point?" + Value: CodeableConcept from YesNoUnknownVS + Element: PresenceOfWoundTunneling Based on: CodedEvaluationComponent Concept: LNC#72298-3 From 15adf4f4a2493a4d3eaea18f525728a088bdc89b Mon Sep 17 00:00:00 2001 From: Chris Moesel Date: Mon, 6 Aug 2018 15:03:03 -0400 Subject: [PATCH 013/289] Updates to ODH and BC configs Occupational Data for Health: - Change project name to match Ballot Desktop name - Change shorthand to ODH - Change URLs to canonical forms assigned by HL7 - Added NPM name - Added version Breast Cancer config changes: - Change "Release 2" to "Release 1" to match ballot desktop - Change "Draft for Comment" to "Draft for Comment 2" - Change NPM name to "hl7.fhir.us.breastcancer" per Grahame's request - Changed filter strategy to filter on shr.oncology namespace - Changed publisher info to indicate CIIC --- spec/ig-breast-config.json | 29 +++++++++++++++++------------ spec/ig-odh-config.json | 18 ++++++++++-------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/spec/ig-breast-config.json b/spec/ig-breast-config.json index 09cf24fc..748d6d38 100644 --- a/spec/ig-breast-config.json +++ b/spec/ig-breast-config.json @@ -1,32 +1,37 @@ { - "projectName": "Standard Health Record", - "projectShorthand": "SHR", - "projectURL": "http://standardhealthrecord.org", - "fhirURL": "http://standardhealthrecord.org/fhir", - "entryTypeURL": "http://standardhealthrecord.org/spec/", - "implementationGuide": + "projectName": "HL7 FHIR Implementation Guide: Breast Cancer Data, Release 1 - US Realm (Draft for Comment 2)", + "projectShorthand": "BC", + "projectURL": "http://hl7.org/fhir/us/breastcancer/", + "fhirURL": "http://hl7.org/fhir/us/breastcancer/", + "entryTypeURL": "http://hl7.org/fhir/us/breastcancer/spec/", + "implementationGuide": { + "npmName": "hl7.fhir.us.breastcancer", + "version": "0.2.0", "includeLogicalModels": true, "includeModelDoc": true, - "indexContent": "LandingPageBreastCancer.html", - "primarySelectionStrategy": + "indexContent": "LandingPageBreastCancer.html", + "historyLink": "http://hl7.org/fhir/us/breastcancer/history.html", + "primarySelectionStrategy": { - "strategy": "entry" + "strategy": "namespace", + "primary": ["shr.oncology"], + "hideSupporting": true } - }, + }, "filterStrategy": { "filter": true, "strategy": "namespace", "target": ["shr.oncology"] }, - "publisher": "The MITRE Corporation: Standard Health Record Collaborative", + "publisher": "The HL7 Cancer Interoperability Group sponsored by Clinical Interoperability Council Work Group (CIC)", "contact": [ { "telecom": [ { "system": "url", - "value": "http://standardhealthrecord.org" + "value": "http://www.hl7.org/Special/committees/cic/index.cfm" } ] } diff --git a/spec/ig-odh-config.json b/spec/ig-odh-config.json index a6583598..7c4d1e90 100644 --- a/spec/ig-odh-config.json +++ b/spec/ig-odh-config.json @@ -1,20 +1,22 @@ { - "projectName": "Standard Health Record", - "projectShorthand": "SHR", - "projectURL": "http://standardhealthrecord.org", - "fhirURL": "http://standardhealthrecord.org/fhir", - "entryTypeURL": "http://standardhealthrecord.org/spec/", - "implementationGuide": + "projectName": "HL7 FHIR Profile: Occupational Data for Health (ODH), Release 1 (Standard for Trial Use)", + "projectShorthand": "ODH", + "projectURL": "http://hl7.org/fhir/us/odh", + "fhirURL": "http://hl7.org/fhir/us/odh", + "entryTypeURL": "http://hl7.org/fhir/us/odh/spec", + "implementationGuide": { + "npmName": "hl7.fhir.us.odh", + "version": "1.0.0", "includeLogicalModels": true, "includeModelDoc": false, "indexContent": "LandingPageOccupation.html", - "primarySelectionStrategy": + "primarySelectionStrategy": { "strategy": "namespace", "primary": ["shr.occupation"] } - }, + }, "filterStrategy": { "filter": true, From 02c50bcb31156013e52059f3f87a4249ac8e0c16 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 6 Aug 2018 15:39:51 -0400 Subject: [PATCH 014/289] Removed ObservationTopic - major change Also removed ref(Specimen) for Specimen and ref(Device) for Device --- spec/cimi_medication.txt | 6 +- spec/cimi_statement.txt | 69 +++++++++-------- spec/cimi_statement_map.txt | 40 +++++----- spec/cimi_topic.txt | 15 ---- spec/shr_condition.txt | 12 +-- spec/shr_occupation.txt | 60 +++++++-------- spec/shr_occupation_map.txt | 36 ++++----- spec/shr_oncology.txt | 145 +++++++++++++++++------------------- spec/shr_wound.txt | 48 ++++++------ 9 files changed, 205 insertions(+), 226 deletions(-) diff --git a/spec/cimi_medication.txt b/spec/cimi_medication.txt index f4f76009..4b533df1 100644 --- a/spec/cimi_medication.txt +++ b/spec/cimi_medication.txt @@ -132,9 +132,9 @@ Based on: SimpleCodedNonLaboratoryObservation Concept: MTH#C2364172 Description: "The degree (frequency) that the stated treatment plan, prescription, or protocol was followed. A statement of the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency." ResultValue from QualitativeFrequencyVS - ObservationTopic.TopicCode is MTH#C2364172 - ObservationTopic.Focus value is type ref(EntityOrRole) - ObservationTopic.Focus.EntityOrRole is type ref(Medication) + TopicCode is MTH#C2364172 + Focus value is type ref(EntityOrRole) + Focus.EntityOrRole is type ref(Medication) 0..* MedicationNonAdherenceReason Element: MedicationNonAdherenceReason diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index b7bd799e..9e19b5a3 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -193,35 +193,33 @@ Element: AssertionTopic Based on: FindingTopic Description: "The base topic for conditions, allergies, adverse events, etc. These are things that are asserted to exist or not. The Value is interpreted in the context of the class; for an AdverseSensitivityToSubstance, the value is the substance, for a Condition, the Value represents the type of condition found." -Element: ObservationTopic -// All attributes of observation are defined at this level. Any subclass uses subtractive methods to define relevant attributes -Based on: FindingTopic -Concept: MTH#C1554188 -Description: "The base class, independent of context for evaluations (measurements, tests, or questions). The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered -0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? -0..1 Focus -0..1 ref(Device) -0..1 ref(Specimen) -0..* Precondition -0..* ReferenceRange // applies to a quantitative measurement only -0..* EvaluationComponent -0..1 PanelMembers EntryElement: Observation // TODO: be consistent, or stop using the word "Statement" in class names Based on: FindingStatement Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." +1..1 TopicCode 1..1 PersonOfRecord ContextCode is SCT#424975005 "Record Entity" SourceOfInformation value is type AnyPersonOrOrganization // mapped to performer (who made the observation) - StatementTopic is type ObservationTopic 0..1 ResultValue 0..1 ExceptionValue from ExceptionValueVS if covered 0..1 DeltaFlag 0..1 Issued 0..* Observer +1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered +0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? +0..1 Focus +0..1 Device +0..1 Specimen +0..* Precondition +0..* ReferenceRange // applies to a quantitative measurement only +0..* EvaluationComponent +0..1 PanelMembers +0..1 FindingMethod +0..1 Details +0..* Media Element: Focus Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. For example, the finding could deal with a condition, a behavior, a wound, or tumor. These are entities that are implied by clinical statements (see cimi.entity.MaterializedAssertion)" @@ -299,69 +297,76 @@ Observation has a value representing the result (answer), or an ExceptionValue i EntryElement: NonLaboratoryObservation Based on: Observation Description: "An observation not based on a specimen." -0..0 ObservationTopic.Specimen +0..0 Specimen EntryElement: SimpleNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation having no components or panel members" -0..0 ObservationTopic.EvaluationComponent -0..0 ObservationTopic.PanelMembers +0..0 EvaluationComponent +0..0 PanelMembers EntryElement: CodedNonLaboratoryObservation Based on: NonLaboratoryObservation Concept: TBD Description: "The result of evaluations (measurements, tests, or questions) whose answer is expressed as a code." ResultValue value is type CodeableConcept -0..0 ObservationTopic.ReferenceRange +0..0 ReferenceRange EntryElement: SimpleCodedNonLaboratoryObservation Based on: CodedNonLaboratoryObservation Description: "An observation whose result is a code, and also having no components or panel members" -0..0 ObservationTopic.EvaluationComponent -0..0 ObservationTopic.PanelMembers +0..0 EvaluationComponent +0..0 PanelMembers EntryElement: ComponentOnlyNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation with components, but without a result value or panel members." 0..0 ResultValue 0..0 ExceptionValue -0..0 ObservationTopic.PanelMembers -0..0 ObservationTopic.ReferenceRange +0..0 PanelMembers +0..0 ReferenceRange EntryElement: PanelOnlyNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation with panel members, but without a result value or components." 0..0 ResultValue 0..0 ExceptionValue -0..0 ObservationTopic.ReferenceRange -0..0 ObservationTopic.EvaluationComponent -1..1 ObservationTopic.PanelMembers +0..0 ReferenceRange +0..0 EvaluationComponent +1..1 PanelMembers // Laboratory Measurements and Results EntryElement: LaboratoryObservation Based on: Observation Description: "A coded finding based on a specimen collected from a patient." - ObservationTopic is type LaboratoryObservationTopic +1..1 Specimen +0..0 AnatomicalLocation // AnatomicalLocation is Specimen.CollectionSite + Category is OBSCAT#laboratory +0..* DiagnosticService + Element: DiagnosticService + Concept: TBD + Description: "The service completing the observations, e.g. biochemistry, microbiology, blood bank, etc." + Value: CodeableConcept from DiagnosticServiceVS if covered EntryElement: CodedLaboratoryObservation Based on: LaboratoryObservation Description: "A coded finding from a laboratory test." ResultValue value is type CodeableConcept -0..0 LaboratoryObservationTopic.ReferenceRange +0..0 ReferenceRange EntryElement: SimpleLaboratoryObservation Based on: LaboratoryObservation Description: "A coded finding from a laboratory test without further panel members or components." -0..0 LaboratoryObservationTopic.EvaluationComponent -0..0 LaboratoryObservationTopic.PanelMembers +0..0 EvaluationComponent +0..0 PanelMembers EntryElement: SimpleCodedLaboratoryObservation Based on: CodedLaboratoryObservation Description: "A coded finding from a laboratory test without further panel members or components." -0..0 LaboratoryObservationTopic.EvaluationComponent -0..0 LaboratoryObservationTopic.PanelMembers +0..0 EvaluationComponent +0..0 PanelMembers //---------- Assertions ------------- diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index c41edf98..1bfe52e3 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -12,29 +12,29 @@ Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-obse // RecordStatus maps to extension // Cosigned maps to extension // Verified maps to extension - ObservationTopic.TopicCode maps to code - ObservationTopic.FindingMethod maps to method - ObservationTopic.Details maps to comment + TopicCode maps to code + FindingMethod maps to method + Details maps to comment // Media maps to extension - ObservationTopic.Category maps to category - ObservationTopic.AnatomicalLocation maps to bodySite - ObservationTopic.Device maps to device - ObservationTopic.Specimen maps to specimen + Category maps to category + AnatomicalLocation maps to bodySite + Device maps to device + Specimen maps to specimen // Precondition maps to extension - ObservationTopic.ReferenceRange maps to referenceRange - ObservationTopic.ReferenceRange.Range.LowerBound maps to referenceRange.low - ObservationTopic.ReferenceRange.Range.UpperBound maps to referenceRange.high - ObservationTopic.ReferenceRange.Type maps to referenceRange.type - ObservationTopic.ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo - ObservationTopic.ReferenceRange.ApplicableAgeRange maps to referenceRange.age - ObservationTopic.EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) - ObservationTopic.EvaluationComponent._Concept maps to component.code - ObservationTopic.EvaluationComponent.Value maps to component.value[x] - ObservationTopic.EvaluationComponent.ExceptionValue maps to component.dataAbsentReason - ObservationTopic.EvaluationComponent.Interpretation maps to component.interpretation - ObservationTopic.EvaluationComponent.ReferenceRange maps to component.referenceRange + ReferenceRange maps to referenceRange + ReferenceRange.Range.LowerBound maps to referenceRange.low + ReferenceRange.Range.UpperBound maps to referenceRange.high + ReferenceRange.Type maps to referenceRange.type + ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo + ReferenceRange.ApplicableAgeRange maps to referenceRange.age + EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) + EvaluationComponent._Concept maps to component.code + EvaluationComponent.Value maps to component.value[x] + EvaluationComponent.ExceptionValue maps to component.dataAbsentReason + EvaluationComponent.Interpretation maps to component.interpretation + EvaluationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member - ObservationTopic.PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) + PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) ResultValue maps to value[x] ExceptionValue maps to dataAbsentReason Interpretation maps to interpretation diff --git a/spec/cimi_topic.txt b/spec/cimi_topic.txt index 823e5017..2f477981 100644 --- a/spec/cimi_topic.txt +++ b/spec/cimi_topic.txt @@ -38,21 +38,6 @@ The subject of a finding can be the entire patient, or an entity such as a locat Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." Value: CodeableConcept should be from http://loinc.org - -Element: LaboratoryObservationTopic -Based on: ObservationTopic -Description: "The topic composition for laboratory observations. A specimen is required, anatomical location is excluded (since the specimen indicates the collection body site). Also includes a diagnostic service (indicating the type of laboratory), not present in general observations." -1..1 ref(Specimen) -0..0 AnatomicalLocation // AnatomicalLocation is where the Specimen was collected - Category is OBSCAT#laboratory -0..* DiagnosticService - - Element: DiagnosticService - Concept: TBD - Description: "The service completing the observations, e.g. biochemistry, microbiology, blood bank, etc." - Value: CodeableConcept from DiagnosticServiceVS if covered - - Element: ConditionAssertionTopic Based on: AssertionTopic Description: "A condition. 'Condition' is interpreted broadly to include disorder, abnormality, problem, injury, complaint, functionality, concern, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble. diff --git a/spec/shr_condition.txt b/spec/shr_condition.txt index 0ecda959..2b5649ec 100644 --- a/spec/shr_condition.txt +++ b/spec/shr_condition.txt @@ -39,14 +39,14 @@ Concept: MTH#C0421176 "Progression" Description: "A finding related to the current trend of a particular existing disease. This concept is most often used for chronic and incurable diseases where the status and trendline of the disease is an important determinant of therapy and prognosis. The specific disorder being evaluated must be cited in the Focus_Reference or Focus_CodeableConcept as a reference to a Condition." ResultValue value is type CodeableConcept ResultValue from ProgressionVS - ObservationTopic.TopicCode is MTH#C0421176 "Progression" + TopicCode is MTH#C0421176 "Progression" 0..* ProgressionEvidence // "ProgressionEvidence" is somewhat related to FindingMethod, which represents the test or procedure used to generate the result; it is typically a LOINC code (0..1) - ObservationTopic.Focus.CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered -0..0 ObservationTopic.Specimen -0..0 ObservationTopic.EvaluationComponent -0..0 ObservationTopic.Precondition -0..0 ObservationTopic.ReferenceRange // applies to a quantitative measurement only + Focus.CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered +0..0 Specimen +0..0 EvaluationComponent +0..0 Precondition +0..0 ReferenceRange // applies to a quantitative measurement only Element: ProgressionEvidence Description: "The type of evidence considered in determining disease progression." diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 037138d4..bd2ad94f 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -30,11 +30,11 @@ Concept: LNC#74165-2 "HistoryOfEmploymentStatus" Description: "A person’s state of being employed during the time period specified. Generally, employment status refers to whether or not a person has a job (e.g. employed, unemployed, not in labor force). In a healthcare setting employment status may be used to determine appropriate probing questions for occupational hazards and occupational history. For example, someone who is unemployed or has chosen not to work may be prompted to provide information about previous jobs. Employment status is not the same as work classification, which describes characteristics of a given job such as self-employed." 0..0 SubjectIfNotPersonOfRecord - ObservationTopic.TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" + TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" ResultValue value is type CodeableConcept ResultValue from EmploymentStatusVS // ResultValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 -0..0 ObservationTopic.EvaluationComponent +0..0 EvaluationComponent EntryElement: DateOfRetirement Based on: SocialHistoryObservation @@ -42,22 +42,22 @@ Concept: LNC#87510-4 "Date of Retirement" Description: "If present, the patient is retired, and this observation records the retirement date. This is a self-identified statement about the date of being retired as self-identified by the patient. A person can be both retired and employed; most often, a person would be retired from one job and employed in another job." 0..0 SubjectIfNotPersonOfRecord - ObservationTopic.TopicCode is LNC#87510-4 "Date of Retirement" + TopicCode is LNC#87510-4 "Date of Retirement" ResultValue value is type dateTime -0..0 ObservationTopic.EvaluationComponent +0..0 EvaluationComponent 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. -0..0 ObservationTopic.Focus +0..0 Focus EntryElement: CombatZonePeriod Based on: SocialHistoryObservation Concept: LNC#87511-2 Description: "Indicates the date range(s) an individual hs worked in what is considered a combat or hazardous duty zone; both civilian and military." 0..0 SubjectIfNotPersonOfRecord - ObservationTopic.TopicCode is LNC#87511-2 + TopicCode is LNC#87511-2 ResultValue value is type TimePeriod -0..0 ObservationTopic.EvaluationComponent +0..0 EvaluationComponent 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. -0..0 ObservationTopic.Focus // only patient +0..0 Focus // only patient EntryElement: UsualOccupation @@ -65,12 +65,12 @@ Based on: CodedSocialHistoryObservation Concept: LNC#21843-8 Description: "The type of work a person has held for the longest duration during his or her working history at the point in time the statement is recorded." // We'll need to determine the fix here -- US Core requires Subject to be a patient, but ODH allows patient or related person - ObservationTopic.TopicCode is LNC#21843-8 + TopicCode is LNC#21843-8 ResultValue could be from OccupationVS // ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 - ObservationTopic.Focus value is type CodeableConcept - ObservationTopic.Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype - ObservationTopic.EvaluationComponent + Focus value is type CodeableConcept + Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype + EvaluationComponent includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration 1..1 RelevantTime @@ -96,13 +96,13 @@ EntryElement: PastOrPresentOccupation Based on: CodedSocialHistoryObservation Concept: LNC#11341-5 "History of Occupation" Description: "A single job, past or present. The relevant time is the period the job was held." - ObservationTopic.TopicCode is LNC#11341-5 "History of Occupation" + TopicCode is LNC#11341-5 "History of Occupation" ResultValue could be from OccupationVS // ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization - ObservationTopic.Focus value is type CodeableConcept - ObservationTopic.Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype - ObservationTopic.EvaluationComponent + Focus value is type CodeableConcept + Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype + EvaluationComponent includes 0..1 PastOrPresentIndustry includes 0..1 WorkClassification includes 0..1 SupervisoryLevel @@ -198,16 +198,16 @@ Description: "A simplified observation for social histories." 0..0 ContextCode 0..0 SourceOfInformation SubjectIfNotPersonOfRecord value is type ref(RelatedPerson) - ObservationTopic.Category is OBSCAT#social-history -0..0 ObservationTopic.FindingMethod -0..0 ObservationTopic.AnatomicalLocation -0..0 ObservationTopic.Precondition -0..0 ObservationTopic.Focus -0..0 ObservationTopic.ReferenceRange -0..0 ObservationTopic.PanelMembers -0..0 ObservationTopic.Device -0..0 ObservationTopic.Specimen -0..0 ObservationTopic.Media + Category is OBSCAT#social-history +0..0 FindingMethod +0..0 AnatomicalLocation +0..0 Precondition +0..0 Focus +0..0 ReferenceRange +0..0 PanelMembers +0..0 Device +0..0 Specimen +0..0 Media 0..0 ExceptionValue 0..0 Interpretation 0..0 Encounter @@ -218,7 +218,7 @@ Element: CodedSocialHistoryObservation Based on: SocialHistoryObservation Description: "The result of social history questions, whose answer is expressed as a code." ResultValue value is type CodeableConcept -0..0 ObservationTopic.ReferenceRange +0..0 ReferenceRange @@ -232,9 +232,9 @@ Description: "The result of social history questions, whose answer is expressed EntryElement: MilitaryServiceHistory Based on: CodedSocialHistoryObservation Description: "History of service in the US military." - ObservationTopic.Category is OBSCAT#social-history - ObservationTopic.TopicCode is MTH#C3714797 - ObservationTopic.EvaluationComponent + Category is OBSCAT#social-history + TopicCode is MTH#C3714797 + EvaluationComponent includes 1..1 MilitaryStatus includes 0..1 MilitaryServiceDischargeStatus includes 0..1 MilitaryBranch diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index ca42d18b..16de434b 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -6,24 +6,24 @@ Target: FHIR_STU_3 SocialHistoryObservation maps to Observation: PersonOfRecord maps to subject // SubjectIfNotPersonOfRecord.RelationshipToPersonOfRecord maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject - ObservationTopic.TopicCode maps to code - ObservationTopic.FindingMethod maps to method - ObservationTopic.Details maps to comment -// ObservationTopic.Media maps to extension - ObservationTopic.Category maps to category -// ObservationTopic.Precondition maps to extension - ObservationTopic.ReferenceRange maps to referenceRange - ObservationTopic.ReferenceRange.Range.LowerBound maps to referenceRange.low - ObservationTopic.ReferenceRange.Range.UpperBound maps to referenceRange.high - ObservationTopic.ReferenceRange.Type maps to referenceRange.type - ObservationTopic.ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo - ObservationTopic.ReferenceRange.ApplicableAgeRange maps to referenceRange.age - ObservationTopic.EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) - ObservationTopic.EvaluationComponent._Concept maps to component.code - ObservationTopic.EvaluationComponent.Value maps to component.value[x] - ObservationTopic.EvaluationComponent.ExceptionValue maps to component.dataAbsentReason - ObservationTopic.EvaluationComponent.Interpretation maps to component.interpretation - ObservationTopic.EvaluationComponent.ReferenceRange maps to component.referenceRange + TopicCode maps to code + FindingMethod maps to method + Details maps to comment +// Media maps to extension + Category maps to category +// Precondition maps to extension + ReferenceRange maps to referenceRange + ReferenceRange.Range.LowerBound maps to referenceRange.low + ReferenceRange.Range.UpperBound maps to referenceRange.high + ReferenceRange.Type maps to referenceRange.type + ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo + ReferenceRange.ApplicableAgeRange maps to referenceRange.age + EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) + EvaluationComponent._Concept maps to component.code + EvaluationComponent.Value maps to component.value[x] + EvaluationComponent.ExceptionValue maps to component.dataAbsentReason + EvaluationComponent.Interpretation maps to component.interpretation + EvaluationComponent.ReferenceRange maps to component.referenceRange constrain related to 0..0 // ContextCode maps to nothing // drop ResultValue maps to value[x] diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index 51d8c965..ecd337b2 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -29,7 +29,7 @@ Description: "Specimen resulting from biopsy or excision of breast and surroundi Type from BreastSpecimenTypeVS CollectionSite value is type BreastSite CollectionMethod from BreastSpecimenCollectionMethodVS - SourceSpecimen value is type BreastSpecimen + SourceSpecimen value is type ref(BreastSpecimen) 0..1 ColdIschemiaTime Element: ColdIschemiaTime @@ -53,13 +53,14 @@ Description: "Diagnosis of cancer originating in the tissues of the breast, and Description: "A description of the morphology and behavioral characteristics of the cancer." Value: CodeableConcept -// We need to add an example to the IG! -// Perhaps move timing prefix to component -// Perhaps make T, N, M separate observations -// Do we want to follow Travis' approach of putting the Cancer Staging Encounter Phase in Encounter? -Element: BreastCancerStageTopic -Based on: ObservationTopic -Description: "The topic class for describing a breast cancer staging observation." + + +EntryElement: BreastCancerStage +Based on: Observation +Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. +Description: "The stage of a breast cancer. Different staging systems use different staging groups, so there are currently no terminology bindings associated with this class." + ResultValue value is type CodeableConcept + ResultValue should be from http://loinc.org/LL240-3 TopicCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" 0..1 StageTimingPrefix EvaluationComponent @@ -73,8 +74,8 @@ includes 0..1 ProgesteroneReceptorStatus includes 0..1 DCISNuclearGrade includes 0..1 BreastCancerHistologicGrade 0..0 Focus -0..0 ref(Device) -0..0 ref(Specimen) +0..0 Device +0..0 Specimen 0..0 Precondition 0..0 ReferenceRange @@ -106,15 +107,7 @@ includes 0..1 BreastCancerHistologicGrade Concept: SCT#277208005 "M category (observable entity)" //RMB: was LNC#59522-3, which is specific to AJCC 7th edition Based on: CodedEvaluationComponent Description: "The presence of distant metastases, based on criteria defined by the staging system being used." - Value: CodeableConcept - -EntryElement: BreastCancerStage -Based on: Observation -Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. -Description: "The stage of a breast cancer. Different staging systems use different staging groups, so there are currently no terminology bindings associated with this class." - ObservationTopic is type BreastCancerStageTopic - ResultValue value is type CodeableConcept - ResultValue should be from http://loinc.org/LL240-3 + Value: CodeableConcept EntryElement: DCISNuclearGrade @@ -123,9 +116,9 @@ Based on: SimpleCodedLaboratoryObservation Description: "An evaluation of the size and shape of the nucleus in tumor cells and the percentage of tumor cells that are in the process of dividing or growing. Cancers with low nuclear grade grow and spread less quickly than cancers with high nuclear grade." ResultValue value is type CodeableConcept ResultValue.CodeableConcept from NuclearGradeVS - LaboratoryObservationTopic.Specimen is type BreastSpecimen - LaboratoryObservationTopic.TopicCode is MTH#C18513 - LaboratoryObservationTopic.DiagnosticService is #pathology + Specimen is type BreastSpecimen + TopicCode is MTH#C18513 + DiagnosticService is #pathology EntryElement: BreastCancerHistologicGrade @@ -135,14 +128,14 @@ Description: "The Elston Grade/Nottingham Score, representative of the aggressiv ResultValue value is type CodeableConcept ResultValue.CodeableConcept from NottinghamCombinedGradeVS ExceptionValue from NottinghamNullVS - LaboratoryObservationTopic.TopicCode is LNC#44648-4 - LaboratoryObservationTopic.Specimen is type BreastSpecimen - LaboratoryObservationTopic.DiagnosticService is #pathology - LaboratoryObservationTopic.EvaluationComponent + TopicCode is LNC#44648-4 + Specimen is type BreastSpecimen + DiagnosticService is #pathology + EvaluationComponent includes 0..1 TubuleFormationScore includes 0..1 NuclearPleomorphismScore includes 0..1 MitoticCountScore -0..0 LaboratoryObservationTopic.PanelMembers +0..0 PanelMembers //RMB: the CAP form has two additional options for each of these subcomponents: "only microinvasion present" and "no residual invasive carcinoma", both of which are situations where a histologic grade wouldn't be assigned. Because the our exceptions value set doesn't handle these options (and possibly others related to other data elements, should we allow for a string option to contain reasons for missing data? Otherwise the expection value set might become unruly. Element: TubuleFormationScore @@ -173,13 +166,13 @@ Description: "Estrogen receptor alpha is the predominant estrogen receptor expre The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." ResultValue value is type CodeableConcept ResultValue.CodeableConcept from PositiveNegativeVS - LaboratoryObservationTopic.TopicCode is LNC#16112-5 - LaboratoryObservationTopic.DiagnosticService is #pathology - LaboratoryObservationTopic.Specimen is type BreastSpecimen - LaboratoryObservationTopic.EvaluationComponent + TopicCode is LNC#16112-5 + DiagnosticService is #pathology + Specimen is type BreastSpecimen + EvaluationComponent includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity -0..0 LaboratoryObservationTopic.PanelMembers +0..0 PanelMembers /* additional components from CAP form includes 0..1 StainingControl includes 0..1 PrimaryAntibody //from EstrogenAntibodyVS if covered @@ -196,13 +189,13 @@ Description: "Progesterone receptor status is a factor in determining prognosis Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." ResultValue value is type CodeableConcept ResultValue.CodeableConcept from PositiveNegativeVS - LaboratoryObservationTopic.TopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" - LaboratoryObservationTopic.DiagnosticService is #pathology - LaboratoryObservationTopic.Specimen is type BreastSpecimen - LaboratoryObservationTopic.EvaluationComponent + TopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" + DiagnosticService is #pathology + Specimen is type BreastSpecimen + EvaluationComponent includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity -0..0 LaboratoryObservationTopic.PanelMembers +0..0 PanelMembers Element: NuclearPositivity Based on: EvaluationComponent @@ -223,13 +216,13 @@ Based on: CodedLaboratoryObservation Concept: LNC#48676-1 "HER2 [Interpretation] in Tissue" Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." ResultValue.CodeableConcept from PositiveNegativeEquivocalVS - LaboratoryObservationTopic.TopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" - LaboratoryObservationTopic.DiagnosticService is #pathology - LaboratoryObservationTopic.Specimen is type BreastSpecimen -0..0 LaboratoryObservationTopic.Precondition -0..0 LaboratoryObservationTopic.FindingMethod -0..0 LaboratoryObservationTopic.EvaluationComponent - LaboratoryObservationTopic.PanelMembers.Observation + TopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" + DiagnosticService is #pathology + Specimen is type BreastSpecimen +0..0 Precondition +0..0 FindingMethod +0..0 EvaluationComponent + PanelMembers.Observation includes 0..* HER2byIHC includes 0..* HER2byFISH @@ -241,14 +234,14 @@ Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (I ResultValue.CodeableConcept from HER2byIHCScoreVS ExceptionValue from HER2byIHCScoreNullVS Interpretation from PositiveNegativeEquivocalVS - LaboratoryObservationTopic.TopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" -0..0 LaboratoryObservationTopic.FindingMethod // pre-coordinated in the TopicCode - LaboratoryObservationTopic.DiagnosticService is #pathology -0..0 LaboratoryObservationTopic.Precondition - LaboratoryObservationTopic.Specimen is type BreastSpecimen - LaboratoryObservationTopic.EvaluationComponent + TopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" +0..0 FindingMethod // pre-coordinated in the TopicCode + DiagnosticService is #pathology +0..0 Precondition + Specimen is type BreastSpecimen + EvaluationComponent includes 0..1 CompleteMembraneStainingPercent -0..0 LaboratoryObservationTopic.PanelMembers +0..0 PanelMembers Element: CompleteMembraneStainingPercent Based on: EvaluationComponent @@ -264,17 +257,17 @@ Concept: LNC#85318-4 // Corrected 5/12/2018 by MK Description: "HER2 receptor status as determined by single-probe or dual-probe Fluorescence In Situ Hybridization (FISH)." 0..0 ResultValue 0..0 ExceptionValue - LaboratoryObservationTopic.TopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" - LaboratoryObservationTopic.FindingMethod from HER2FISHMethodVS // single or double probe + TopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" + FindingMethod from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS - LaboratoryObservationTopic.DiagnosticService is #pathology -0..0 LaboratoryObservationTopic.Precondition - LaboratoryObservationTopic.Specimen is type BreastSpecimen - LaboratoryObservationTopic.EvaluationComponent + DiagnosticService is #pathology +0..0 Precondition + Specimen is type BreastSpecimen + EvaluationComponent includes 0..1 AverageHER2SignalsPerCell includes 0..1 AverageCEP17SignalsPerCell includes 0..1 HER2toCEP17Ratio -0..0 LaboratoryObservationTopic.PanelMembers +0..0 PanelMembers Element: AverageHER2SignalsPerCell Based on: EvaluationComponent @@ -304,10 +297,10 @@ Description: "The Oncotype DX test for invasive breast cancer examines the activ No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" ResultValue value is type Quantity ResultValue.Quantity with units UCUM#1 - LaboratoryObservationTopic.TopicCode is MTH#C1709318 + TopicCode is MTH#C1709318 Interpretation from RecurrenceRiskScoreInterpretationVS - LaboratoryObservationTopic.DiagnosticService is #pathology - LaboratoryObservationTopic.Specimen is type BreastSpecimen + DiagnosticService is #pathology + Specimen is type ref(BreastSpecimen) EntryElement: OncotypeDxDCISRecurrenceScore @@ -317,10 +310,10 @@ Description: "The Oncotype DX test for DCIS (Ductal Carcinoma in Situ) breast ca No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" ResultValue value is type Quantity ResultValue.Quantity with units UCUM#1 - LaboratoryObservationTopic.TopicCode is MTH#C3898101 + TopicCode is MTH#C3898101 Interpretation from RecurrenceRiskScoreInterpretationVS - LaboratoryObservationTopic.DiagnosticService is #pathology - LaboratoryObservationTopic.Specimen is type BreastSpecimen + DiagnosticService is #pathology + Specimen is type BreastSpecimen EntryElement: ProsignaRecurrenceScore Based on: SimpleLaboratoryObservation @@ -329,10 +322,10 @@ Description: "Breast cancer genomic signature assay for 10-year risk of distant The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Risk of Recurrence Score in the literature), which is correlated with the probability of distant recurrence at ten years for post-menopausal women with hormone receptor positive, early stage breast cancer." ResultValue value is type Quantity ResultValue.Quantity with units UCUM#1 - LaboratoryObservationTopic.TopicCode is LNC#76544-6 + TopicCode is LNC#76544-6 Interpretation from RecurrenceRiskScoreInterpretationVS - LaboratoryObservationTopic.DiagnosticService is #pathology - LaboratoryObservationTopic.Specimen is type BreastSpecimen + DiagnosticService is #pathology + Specimen is type BreastSpecimen EntryElement: MammaprintRecurrenceScore Based on: SimpleLaboratoryObservation @@ -341,10 +334,10 @@ Description: "Breast cancer genomic signature assay for 10-year risk of distant In the United States, MammaPrint can only be used on cancers that are stage I or stage II, invasive, smaller than 5 centimeters, and estrogen-receptor-positive or -negative. Scores range from -1.0 to +1.0, with scores less than 0 indicating high risk, and scores greater than 0 indicating low risk. The is currently no LOINC code for Mammaprint test." ResultValue value is type Quantity - LaboratoryObservationTopic.TopicCode is MTH#C2827401 + TopicCode is MTH#C2827401 Interpretation from RecurrenceRiskScoreInterpretationVS - LaboratoryObservationTopic.DiagnosticService is #pathology - LaboratoryObservationTopic.Specimen is type BreastSpecimen + DiagnosticService is #pathology + Specimen is type BreastSpecimen /* @@ -413,7 +406,7 @@ Based on: SimpleCodedObservation Concept: MTH#C4086369 0..0 Value TopicCode is TBD#TBD - ObservationTopic.DiagnosticService is #pathology + DiagnosticService is #pathology EvaluationComponent includes 0..1 TumorPrimaryDimensionSize includes 0..1 TumorSecondaryDimensionSize @@ -444,7 +437,7 @@ Concept: MTH#C4086369 Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." Value: CodeableConcept from PositiveNegativeVS TopicCode is MTH#C4086369 - ObservationTopic.DiagnosticService is #pathology + DiagnosticService is #pathology EvaluationComponent includes 0..1 TumorMarginDescription includes 0..1 Cellularity // not sure this belongs here @@ -477,7 +470,7 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Description: "Ki-67 is a protein phosphatase whose expression is strongly associated with cell proliferation and encoded by the MKI67 gene. The Ki67 labeling index is the fraction of Ki-67-positive cells to total cells in a tumor specimen and may be useful for determining prognosis with respect to survival and disease recurrence. The more positive cells there are, the more quickly they are dividing and forming new cells. ReferenceRange: Low <10, Intermediate 10-20, >20 High" Value: Quantity with units UCUM#% TopicCode is LNC#29593-1 - ObservationTopic.DiagnosticService is #pathology + DiagnosticService is #pathology EvaluationComponent includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered @@ -486,7 +479,7 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Concept: MTH#C0812425 Description: "An expression of the number of mitoses found in a stated number of cells. The S-phase fraction number tells you what percentage of cells in the tissue sample are in the process of copying their genetic information (DNA). This S-phase, short for synthesis phase, happens just before a cell divides into two new cells. ReferenceRange: Low <6, Intermediate 6-10, >10 High." Value: Quantity with units UCUM#% - ObservationTopic.DiagnosticService is #pathology + DiagnosticService is #pathology TopicCode is LNC#29593-1 EntryElement: GeneticVariant @@ -495,7 +488,7 @@ Concept: MTH#C0678941 Description: "Whether a subject carries a mutation in a particular gene." Value: CodeableConcept from PositiveNegativeVS Focus.CodeableConcept from GeneIdentifierVS - ObservationTopic.DiagnosticService is #genetics + DiagnosticService is #genetics 0..0 Precondition 0..0 ReferenceRange 0..0 DeltaFlag @@ -514,7 +507,7 @@ Concept: TBD Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." Observation.TopicCode is TBD#TBD - ObservationTopic.DiagnosticService is #genetics + DiagnosticService is #genetics 0..0 EvaluationComponent PanelMembers.EvaluationresultRecorded includes 1..1 BRCA1Variant diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 02b4b6a1..ec390a66 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -193,32 +193,14 @@ EntryElement: WoundAssessmentPanel Based on: NonLaboratoryObservation Concept: LNC#39135-9 Description: "Group of observations regarding the properties and severity of a wound." - StatementTopic is type WoundEvaluationResultTopic Interpretation is type WoundAssessmentInterpretation DeltaFlag is type WoundTrend 0..0 ResultValue 0..0 ExceptionValue - - Element: WoundAssessmentInterpretation - Based on: Interpretation - Concept: LNC#80338-7 - Description: "Overall assessement of whether the wound is within normal parameters." - Value: CodeableConcept from http://loinc.org/vs/LL3816-7 if covered // underpowered? 'normal' and 'other' - - Element: WoundTrend - Based on: DeltaFlag - Concept: LNC#89253-9 - Description: "Whether a condition is improving, worsening, stable, or resolved." - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.5/definition // should be from http://loinc.org/vs/LL4938-8 with values improved, deteriorated, stablized or resolved. Resolved is missing from the VS in VSAC - - -Abstract Element: WoundEvaluationResultTopic -Based on: ObservationTopic -Description: "Topic for wound assessments." TopicCode is LNC#39135-9 0..0 ReferenceRange Focus value is type string // WoundNumber - Media is type PhotographicImage // 72170-4 Photographic image [Media] + Media is type PhotographicImage // 72170-4 Photographic image [Media] EvaluationComponent includes 0..1 EpisodeOfWound // very similar to Episodicity or ClinicalStatus, but value set is different. includes 0..1 PeriwoundDescription // 72301-5 Description of Periwound @@ -281,12 +263,26 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Description: "The presence or absence of wound exudate." Value: CodeableConcept from PresentAbsentVS + + Element: WoundAssessmentInterpretation + Based on: Interpretation + Concept: LNC#80338-7 + Description: "Overall assessement of whether the wound is within normal parameters." + Value: CodeableConcept from http://loinc.org/vs/LL3816-7 if covered // underpowered? 'normal' and 'other' + + Element: WoundTrend + Based on: DeltaFlag + Concept: LNC#89253-9 + Description: "Whether a condition is improving, worsening, stable, or resolved." + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.5/definition // should be from http://loinc.org/vs/LL4938-8 with values improved, deteriorated, stablized or resolved. Resolved is missing from the VS in VSAC + + // LOINC: The wound bed panel is factored so the percentages pair unambiguously with the color/appearances. It should be a set of 2-tuples (pairs). The way it is done in LOINC doesn't allow pairing EntryElement: WoundBedAppearanceObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89254-7 Description: "The appearance of the base (bed) of the wound, together with the percentage of the bed with each type of appearance." - ObservationTopic.EvaluationComponent + EvaluationComponent includes 1..1 WoundBedAppearance includes 1..1 WoundBedAppearancePercentage @@ -306,7 +302,7 @@ EntryElement: WoundBedColorObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: TBD Description: "Color of part or all of the wound base (bed), and the percentage of the area with that color." - ObservationTopic.EvaluationComponent + EvaluationComponent includes 1..1 WoundBedColor includes 1..1 WoundBedColorAreaPercentage @@ -328,7 +324,7 @@ EntryElement: WoundEdgeObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89256-2 Description: "The state of the tissue at the edge of the wound." - ObservationTopic.EvaluationComponent + EvaluationComponent includes 1..1 WoundEdgeDescription includes 0..1 WoundEdgeColor // LOINC:Is the entire edge of the wound described by one color? Or should it be by percentage, similar to the wound bed? @@ -350,7 +346,7 @@ EntryElement: WoundTunnelingObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89257-0 Description: "A discharging blind-ended track that extends from the surface of an organ to an underlying area or abscess cavity. The track is invariably lined with granulation tissue. In chronic cases this may be augmented with epithelial tissue." - ObservationTopic.EvaluationComponent + EvaluationComponent includes 0..1 WoundTunnelLength includes 0..1 WoundTunnelClockDirection @@ -375,7 +371,7 @@ EntryElement: WoundUnderminingObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89258-8 Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage around the wound margin. Undermining are narrow sinus tracts away from the wound margins and go downward into the wound." - ObservationTopic.EvaluationComponent + EvaluationComponent includes 0..1 WoundUnderminingLength includes 0..1 WoundUnderminingClockDirection @@ -396,7 +392,7 @@ EntryElement: WoundExudateObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72292-6 Description: "Description of the fluid produced by a wound." - ObservationTopic.EvaluationComponent + EvaluationComponent includes 0..1 WoundExudateAmount includes 0..1 WoundExudateVolume includes 1..1 ExudateAppearance @@ -441,7 +437,7 @@ EntryElement: WoundSizeObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72287-6 Description: "The estimated or measured dimensions of a wound." - ObservationTopic.EvaluationComponent + EvaluationComponent includes 1..1 WoundLength includes 1..1 WoundWidth includes 1..1 WoundDepth From 83af45e832ec8aef90cd582d63d605472e77a15e Mon Sep 17 00:00:00 2001 From: Chris Moesel Date: Mon, 6 Aug 2018 17:56:36 -0400 Subject: [PATCH 015/289] Hide supporting profiles for ODH --- spec/ig-odh-config.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/ig-odh-config.json b/spec/ig-odh-config.json index 7c4d1e90..5655fe88 100644 --- a/spec/ig-odh-config.json +++ b/spec/ig-odh-config.json @@ -14,7 +14,8 @@ "primarySelectionStrategy": { "strategy": "namespace", - "primary": ["shr.occupation"] + "primary": ["shr.occupation"], + "hideSupporting": true } }, "filterStrategy": From e23c0cbb6441f89af4cdcd3f671f957fdb3bb0f6 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 7 Aug 2018 08:07:00 -0400 Subject: [PATCH 016/289] Shlock - knocking out things that shouldn't appear in ODH Suppressing the logical model entirely. This is real schlock. --- spec/cimi_allergy.txt | 2 +- spec/cimi_statement.txt | 43 +++++++++++++------------------------ spec/cimi_statement_map.txt | 8 +++---- spec/ig-odh-config.json | 6 +++--- spec/shr_occupation.txt | 7 ++++-- spec/shr_occupation_map.txt | 17 +-------------- 6 files changed, 29 insertions(+), 54 deletions(-) diff --git a/spec/cimi_allergy.txt b/spec/cimi_allergy.txt index 3f5b9ba7..af9c6507 100644 --- a/spec/cimi_allergy.txt +++ b/spec/cimi_allergy.txt @@ -31,7 +31,7 @@ Description: "A finding related to the presence or absence of an individual's ri Signed.Attribution.EntityOrRole is type PatientOrPractitioner // to facilitate mapping to FHIR, which only allows Patient or Practitioner as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) StatementTopic is type AdverseSensitivityTopic 1..1 StatementTopic.AllergenIrritant // US Core requirement. See http://hl7.org/fhir/us/core/StructureDefinition-us-core-allergyintolerance.html - StatementTopic.TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" +1..1 StatementTopic.TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" // not needed AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution value is type CodeableConcept 0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status 1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 9e19b5a3..4d01e944 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -16,7 +16,7 @@ Concept: TBD Description: "A special type of information entry consisting of a topic and a context. The ClinicalStatement class provides the core pattern for more specific clinical statement classes, such as a statement that a finding has been found in a patient or that a procedure has been proposed by a clinical decision support system. The ClinicalStatement pattern defines the core attributes common to most clinical statements and specifies a composition pattern that encourage model component reuse and better alignment with the SNOMED CT Concept Model." 0..1 ContextCode -1..1 StatementTopic +0..1 StatementTopic 0..1 Encounter // clinical statements are often associated with specific encounters Element: ContextCode @@ -31,6 +31,7 @@ Abstract Element: ActionStatement Based on: ClinicalStatement Description: "Abstract class representing any type of action." 1..1 PersonOfRecord +1..1 StatementTopic StatementTopic is type ActionTopic 0..* Reason @@ -168,9 +169,9 @@ Description: "Abstract class representing a request to not perform any type of Abstract Element: FindingStatement Based on: ClinicalStatement Description: "Any clinical statement representing a finding." -1..1 PersonOfRecord +0..1 PersonOfRecord 0..1 Interpretation -1..1 FindingStatus +//1..1 FindingStatus 0..1 RelevantTime // CIMI's ClinicallyRelevantTime isn't a good name when it comes to employment and other life history events Element: Interpretation @@ -199,15 +200,16 @@ Based on: FindingStatement Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." +0..0 PersonOfRecord // just use FHIR +0..0 StatementTopic 1..1 TopicCode -1..1 PersonOfRecord ContextCode is SCT#424975005 "Record Entity" SourceOfInformation value is type AnyPersonOrOrganization // mapped to performer (who made the observation) 0..1 ResultValue -0..1 ExceptionValue from ExceptionValueVS if covered +0..1 ExceptionValue from http://hl7.org/fhir/ValueSet/data-absent-reason if covered 0..1 DeltaFlag -0..1 Issued -0..* Observer +//0..1 Issued +//0..* Observer 1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered 0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? 0..1 Focus @@ -283,9 +285,9 @@ Observation has a value representing the result (answer), or an ExceptionValue i Description: "Indicator of significant change (delta) from the last or previous measurement." Value: CodeableConcept from DeltaFlagVS - Element: Issued - Description: "The date and time this observation was made available to providers, typically after the results have been reviewed and verified." - Value: instant +// Element: Issued +// Description: "The date and time this observation was made available to providers, typically after the results have been reviewed and verified." +// Value: instant Element: Observer Description: "The person or organization who observed or informed the reporter about the characteristic, potentially the clinician, the patient, or a related person." @@ -373,6 +375,8 @@ Description: "A coded finding from a laboratory test without further panel membe Abstract Element: AssertionStatement Based on: FindingStatement Description: "A clinical statement that asserts presence or absence." +1..1 PersonOfRecord +1..1 StatementTopic Abstract Element: AssertionPresenceStatement // AssertPresence Based on: AssertionStatement @@ -473,6 +477,7 @@ EntryElement: ClinicalNote Based on: FindingStatement Concept: MTH#C0747978 "Progress Note" Description: "An entry concerning a patient where the result is a narrative text. Can be related to a specific Focus, such as a condition; and evidence and interpretation from FindingTopic." +1..1 PersonOfRecord ContextCode is SCT#424975005 "Record Entity" 1..1 Details // TODO: change to "description" to synch with CIMI @@ -481,21 +486,3 @@ Based on: AssertionStatement Concept: TBD Description: "Indicates the finding in question is either known absent (ruled out), not suspected, or unknown." - -Element: AtRiskStatement -Based on: FindingStatement -Concept: SCT#410519009 -Description: "At risk indicates the finding should be interpreted as a future possibility or expectation." - ContextCode from AtRiskContextVS - -Element: ExpectationStatement -Based on: FindingStatement -Concept: SCT#410517006 -Description: "A context indicating the finding is an expectation, prognosis, or likely outcome." - ContextCode from ExpectationContextVS - -Element: GoalStatement -Based on: FindingStatement -Concept: SCT#410518001 -Description: "A hypothetical or future finding that represents an objective or goal." - ContextCode from GoalContextVS \ No newline at end of file diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index 1bfe52e3..f18295c9 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 ClinicalStatement maps to DomainResource: Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: - PersonOfRecord maps to subject +// PersonOfRecord maps to subject // SubjectIfNotPersonOfRecord.RelationshipToPersonOfRecord maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject // CodeableConcept // SourceOfInformation.Value maps to performer // Why doesn't this work??? // Annotation maps to extension @@ -38,15 +38,15 @@ Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-obse ResultValue maps to value[x] ExceptionValue maps to dataAbsentReason Interpretation maps to interpretation - Issued maps to issued - FindingStatus maps to status +// Issued maps to issued +// FindingStatus maps to status RelevantTime maps to effective[x] Encounter maps to context DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta ConditionPresenceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: // _Entry.CreationTime maps to assertedDate // why doesn't this work? - PersonOfRecord maps to subject +// PersonOfRecord maps to subject // SourceOfInformation.Value maps to asserter // why doesn't this work? ConditionAssertionTopic.Category maps to category ConditionAssertionTopic.TopicCode maps to code diff --git a/spec/ig-odh-config.json b/spec/ig-odh-config.json index a6583598..91673db9 100644 --- a/spec/ig-odh-config.json +++ b/spec/ig-odh-config.json @@ -1,12 +1,12 @@ { - "projectName": "Standard Health Record", - "projectShorthand": "SHR", + "projectName": "Occupational Data for Health", + "projectShorthand": "ODH", "projectURL": "http://standardhealthrecord.org", "fhirURL": "http://standardhealthrecord.org/fhir", "entryTypeURL": "http://standardhealthrecord.org/spec/", "implementationGuide": { - "includeLogicalModels": true, + "includeLogicalModels": false, "includeModelDoc": false, "indexContent": "LandingPageOccupation.html", "primarySelectionStrategy": diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index bd2ad94f..d8a8ca85 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -192,13 +192,14 @@ includes 0..1 DailyWorkHours Element: SocialHistoryObservation Based on: Observation Description: "A simplified observation for social histories." + SubjectIfNotPersonOfRecord value is type ref(RelatedPerson) + Category is OBSCAT#social-history // Get rid of some unnecessary CIMI-isms +0..0 PersonOfRecord // just use FHIR default patient 0..0 Recorded 0..0 Signed 0..0 ContextCode 0..0 SourceOfInformation - SubjectIfNotPersonOfRecord value is type ref(RelatedPerson) - Category is OBSCAT#social-history 0..0 FindingMethod 0..0 AnatomicalLocation 0..0 Precondition @@ -212,6 +213,8 @@ Description: "A simplified observation for social histories." 0..0 Interpretation 0..0 Encounter 0..0 DeltaFlag +0..0 Details +//0..0 FindingStatus Element: CodedSocialHistoryObservation diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index 16de434b..b61507b9 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -4,20 +4,9 @@ Target: FHIR_STU_3 // do not map to US Core Results -- Brett says that is only for labs SocialHistoryObservation maps to Observation: - PersonOfRecord maps to subject -// SubjectIfNotPersonOfRecord.RelationshipToPersonOfRecord maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject +// PersonOfRecord maps to subject TopicCode maps to code - FindingMethod maps to method - Details maps to comment -// Media maps to extension Category maps to category -// Precondition maps to extension - ReferenceRange maps to referenceRange - ReferenceRange.Range.LowerBound maps to referenceRange.low - ReferenceRange.Range.UpperBound maps to referenceRange.high - ReferenceRange.Type maps to referenceRange.type - ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo - ReferenceRange.ApplicableAgeRange maps to referenceRange.age EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) EvaluationComponent._Concept maps to component.code EvaluationComponent.Value maps to component.value[x] @@ -25,11 +14,7 @@ SocialHistoryObservation maps to Observation: EvaluationComponent.Interpretation maps to component.interpretation EvaluationComponent.ReferenceRange maps to component.referenceRange constrain related to 0..0 -// ContextCode maps to nothing // drop ResultValue maps to value[x] ExceptionValue maps to dataAbsentReason - Interpretation maps to interpretation - Issued maps to issued - FindingStatus maps to status RelevantTime maps to effective[x] Encounter maps to context From 2d140d24da7384be1a72ff8101a5ba1d3d25ffee Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 7 Aug 2018 12:24:57 -0400 Subject: [PATCH 017/289] fixed ODH value sets --- spec/ig-odh-config.json | 3 ++- spec/shr_core.txt | 4 ++-- spec/shr_occupation.txt | 33 +++++++++++++++++---------------- spec/shr_occupation_vs.txt | 4 ++-- 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/spec/ig-odh-config.json b/spec/ig-odh-config.json index 91673db9..24e173aa 100644 --- a/spec/ig-odh-config.json +++ b/spec/ig-odh-config.json @@ -7,7 +7,8 @@ "implementationGuide": { "includeLogicalModels": false, - "includeModelDoc": false, + "includeModelDoc": false, + "hideSupporting": true, "indexContent": "LandingPageOccupation.html", "primarySelectionStrategy": { diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 9c81395a..66277f4f 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -363,12 +363,12 @@ Description: "An address expressed using postal conventions (as opposed to GP 0..1 Purpose from http://hl7.org/fhir/ValueSet/address-use 0..1 Type from http://hl7.org/fhir/ValueSet/address-type 0..1 DisplayText -0..2 AddressLine +0..* AddressLine 0..1 City 0..1 District 0..1 State 0..1 PostalCode -1..1 Country +0..1 Country 0..1 EffectiveTimePeriod Element: AddressLine diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index d8a8ca85..b27fd2f7 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -32,8 +32,8 @@ Generally, employment status refers to whether or not a person has a job (e.g. e 0..0 SubjectIfNotPersonOfRecord TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" ResultValue value is type CodeableConcept - ResultValue from EmploymentStatusVS -// ResultValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 +// ResultValue from EmploymentStatusVS + ResultValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 0..0 EvaluationComponent EntryElement: DateOfRetirement @@ -66,8 +66,8 @@ Concept: LNC#21843-8 Description: "The type of work a person has held for the longest duration during his or her working history at the point in time the statement is recorded." // We'll need to determine the fix here -- US Core requires Subject to be a patient, but ODH allows patient or related person TopicCode is LNC#21843-8 - ResultValue could be from OccupationVS -// ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 +// ResultValue could be from OccupationVS + ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 Focus value is type CodeableConcept Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype EvaluationComponent @@ -81,8 +81,9 @@ includes 0..1 UsualOccupationDuration Concept: LNC#21844-6 "History of Usual industry" Description: "The industry (type of business) which the subject has worked in for the longest duration while in the usual occupation. For example, a person who has spent 30 years as a secretary in various industries, but mostly in construction, would record a usual occupation of secretary and a usual industry of construction." // "A history of this observation is not retained. Actually past versions of the observation could be retained, but the panel should refer to the latest one only. - Value: CodeableConcept could be from IndustryVS - //Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 + //Value: CodeableConcept could be from IndustryVS + Value: CodeableConcept could be from + https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 TopicCode is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration @@ -97,8 +98,8 @@ Based on: CodedSocialHistoryObservation Concept: LNC#11341-5 "History of Occupation" Description: "A single job, past or present. The relevant time is the period the job was held." TopicCode is LNC#11341-5 "History of Occupation" - ResultValue could be from OccupationVS -// ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 +// ResultValue could be from OccupationVS + ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization Focus value is type CodeableConcept Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype @@ -125,8 +126,8 @@ includes 0..1 DailyWorkHours Based on: CodedEvaluationComponent Concept: LNC#86188-0 Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." - Value: CodeableConcept could be from IndustryVS -// Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.5.315 +// Value: CodeableConcept could be from IndustryVS + Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 TopicCode is LNC#86188-0 Element: WorkClassification @@ -134,16 +135,16 @@ includes 0..1 DailyWorkHours Concept: LNC#85104-8 "Compensation and sector employment type" Description: "Employment attributes for a given job. This specifies information about the worker’s job, such as self-employed or unpaid, and is similar to the U.S. Bureau of Labor Statistics ‘class of worker’ and the International Labor Organization ‘classification of status in employment’. Knowing a patient is self-employed, for example, can assist in discussing return-to-work options." - Value: CodeableConcept could be from WorkClassificationVS - //Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 + //Value: CodeableConcept could be from WorkClassificationVS + Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 TopicCode is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel Based on: CodedEvaluationComponent Concept: LNC#87707-6 Description: "The supervisory or management responsibilities for an individual’s job. For military jobs, this is pay grade." - Value: CodeableConcept could be from SupervisoryLevelVS - //Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 + //Value: CodeableConcept could be from SupervisoryLevelVS + Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 TopicCode is LNC#87707-6 Element: JobDuty @@ -168,8 +169,8 @@ includes 0..1 DailyWorkHours Concept: LNC#74159-5 Description: "An individual's typical arrangement of working hours for an occupation. For example, work schedule may capture that an individual typically works a regular day shift, evening shift, or night shift. It can also specify if an individual has another type of schedule, such as a rotating shift, split shift, etc." - Value: CodeableConcept could be from WorkScheduleVS - //Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 + //Value: CodeableConcept could be from WorkScheduleVS + Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 TopicCode is LNC#74159-5 Element: WeeklyWorkDays diff --git a/spec/shr_occupation_vs.txt b/spec/shr_occupation_vs.txt index 54c610ea..c7da7212 100644 --- a/spec/shr_occupation_vs.txt +++ b/spec/shr_occupation_vs.txt @@ -1,7 +1,7 @@ Grammar: ValueSet 5.0 Namespace: shr.occupation - +/* CodeSystem: EMPLOYCDC = urn:oid:2.16.840.1.114222.4.11.7129 CodeSystem: INDUSTRYCDC = urn:oid:2.16.840.1.114222.4.5.315 CodeSystem: OCCUPATIONCDC = urn:oid:2.16.840.1.114222.4.11.7186 @@ -26,7 +26,7 @@ Includes codes from SUPERLEVELCDC ValueSet: WorkScheduleVS Includes codes from WORKSCHEDCDC - +*/ /*ValueSet: MilitaryStatusVS Description: "The current status of the person in armed services." From 800727e58408bc43d1591d8eb98dd61a0e4cb228 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 7 Aug 2018 12:29:20 -0400 Subject: [PATCH 018/289] Accepted Chris' changes --- spec/ig-odh-config.json | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/spec/ig-odh-config.json b/spec/ig-odh-config.json index 8552a5b8..8336ceaf 100644 --- a/spec/ig-odh-config.json +++ b/spec/ig-odh-config.json @@ -1,16 +1,4 @@ { -<<<<<<< HEAD - "projectName": "Occupational Data for Health", - "projectShorthand": "ODH", - "projectURL": "http://standardhealthrecord.org", - "fhirURL": "http://standardhealthrecord.org/fhir", - "entryTypeURL": "http://standardhealthrecord.org/spec/", - "implementationGuide": - { - "includeLogicalModels": false, - "includeModelDoc": false, - "hideSupporting": true, -======= "projectName": "HL7 FHIR Profile: Occupational Data for Health (ODH), Release 1 (Standard for Trial Use)", "projectShorthand": "ODH", "projectURL": "http://hl7.org/fhir/us/odh", @@ -20,9 +8,8 @@ { "npmName": "hl7.fhir.us.odh", "version": "1.0.0", - "includeLogicalModels": true, + "includeLogicalModels": false, "includeModelDoc": false, ->>>>>>> c7b7b879748556b72c51b53732a84ce53c0a6c5a "indexContent": "LandingPageOccupation.html", "primarySelectionStrategy": { From 8af78e459fa4896124580ea1af92ff21272d4a20 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 7 Aug 2018 16:16:24 -0400 Subject: [PATCH 019/289] Defaulted back to FHIR VS for data absent reason --- spec/cimi_statement.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 4d01e944..c0a509b1 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -231,9 +231,9 @@ Observation has a value representing the result (answer), or an ExceptionValue i Description: "A simplified, non-separable evaluation consisting of a finding code (represented by the Concept), value (or exception value), reference range, and interpretation. The subject of the evaluation component is the same as in the parent evaluation." Value: (Quantity or CodeableConcept or string or Range or Ratio or Media or time or dateTime or TimePeriod or IntegerQuantity) 0..1 TopicCode - 0..1 ExceptionValue from ExceptionValueVS if covered + 0..1 ExceptionValue from http://hl7.org/fhir/ValueSet/data-absent-reason if covered 0..1 Interpretation - 0..* ReferenceRange + 0..* ReferenceRange Element: CodedEvaluationComponent Based on: EvaluationComponent From cb95ad20131654d63fa9e03bb9a32d236ddfd110 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 7 Aug 2018 16:22:01 -0400 Subject: [PATCH 020/289] Changing to OccupationalDataSummary --- spec/shr_core_vs.txt | 1 + spec/shr_occupation.txt | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/spec/shr_core_vs.txt b/spec/shr_core_vs.txt index 74066178..1ea08daa 100644 --- a/spec/shr_core_vs.txt +++ b/spec/shr_core_vs.txt @@ -10,6 +10,7 @@ CodeSystem: SCT = http://snomed.info/sct CodeSystem: CURRENCY = urn:iso:std:iso:4217 ValueSet: AllUnitsVS +Description: "Includes all codes from UCUM and monetary units from ISO." Includes codes from UCUM Includes codes from CURRENCY diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index b27fd2f7..d5f99df7 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -7,7 +7,7 @@ CodeSystem: LNC = http://loinc.org CodeSystem: UCUM = http://unitsofmeasure.org CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category -EntryElement: OccupationalDataComposition +EntryElement: OccupationalDataSummary Concept: LNC#74166-0 Based on: Composition Description: "Current and past activities for profit, wages, salary, or as a service to others." @@ -16,7 +16,7 @@ Description: "Current and past activities for profit, wages, salary, or as a ser Element: OccupationalDataSection Concept: TBD Based on: Section -Description: "Single section in the current OccupationalDataComposition, containing the person's history of employment and occupation, past and present." +Description: "Single section in the current OccupationalDataSummary, containing the person's history of employment and occupation, past and present." ClinicalStatement includes 0..* HistoryOfEmploymentStatus includes 0..* DateOfRetirement From b7ab8ecad91b2898af1c67bf740bbd3beec19bf8 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 7 Aug 2018 23:00:08 -0400 Subject: [PATCH 021/289] Enough damage for tonight Trying to make the ODH IG look right. --- spec/ig-odh-config.json | 4 +-- spec/shr_occupation.txt | 54 ++++++++++++++++++++++++------------- spec/shr_occupation_map.txt | 24 ++++++++++++++--- spec/shr_occupation_vs.txt | 2 +- 4 files changed, 60 insertions(+), 24 deletions(-) diff --git a/spec/ig-odh-config.json b/spec/ig-odh-config.json index 8336ceaf..5e75f389 100644 --- a/spec/ig-odh-config.json +++ b/spec/ig-odh-config.json @@ -14,7 +14,7 @@ "primarySelectionStrategy": { "strategy": "namespace", - "primary": ["shr.occupation"], + "primary": ["odh"], "hideSupporting": true } }, @@ -22,7 +22,7 @@ { "filter": true, "strategy": "namespace", - "target": ["shr.occupation"] + "target": ["odh"] }, "publisher": "HL7", "contact": [ diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index d5f99df7..05d5220c 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -1,21 +1,32 @@ Grammar: DataElement 5.0 -Namespace: shr.occupation +Namespace: odh Description: "Patient’s or family member's work information." Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.composition, cimi.entity, cimi.element, cimi.encounter CodeSystem: LNC = http://loinc.org CodeSystem: UCUM = http://unitsofmeasure.org CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category +CodeSystem: V2 = http://hl7.org/fhir/v2/0131 + +Element: SocialHistoryComposition +Based on: Composition +Description: "A composition represents a document such as a patient record, a knowledge artifact, or a catalog definition." + Section is type SocialHistorySection + + Element: SocialHistorySection + Based on: Section + Description: "Represents a section containing entries in a social history composition." + ClinicalStatement is type SocialHistoryObservation EntryElement: OccupationalDataSummary Concept: LNC#74166-0 -Based on: Composition +Based on: SocialHistoryComposition Description: "Current and past activities for profit, wages, salary, or as a service to others." -1..1 Section is type OccupationalDataSection +1..1 SocialHistorySection is type OccupationalDataSection Element: OccupationalDataSection Concept: TBD -Based on: Section +Based on: SocialHistorySection Description: "Single section in the current OccupationalDataSummary, containing the person's history of employment and occupation, past and present." ClinicalStatement includes 0..* HistoryOfEmploymentStatus @@ -29,35 +40,33 @@ Based on: CodedSocialHistoryObservation Concept: LNC#74165-2 "HistoryOfEmploymentStatus" Description: "A person’s state of being employed during the time period specified. Generally, employment status refers to whether or not a person has a job (e.g. employed, unemployed, not in labor force). In a healthcare setting employment status may be used to determine appropriate probing questions for occupational hazards and occupational history. For example, someone who is unemployed or has chosen not to work may be prompted to provide information about previous jobs. Employment status is not the same as work classification, which describes characteristics of a given job such as self-employed." -0..0 SubjectIfNotPersonOfRecord TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" ResultValue value is type CodeableConcept // ResultValue from EmploymentStatusVS ResultValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 0..0 EvaluationComponent +0..0 FocalSubject EntryElement: DateOfRetirement Based on: SocialHistoryObservation Concept: LNC#87510-4 "Date of Retirement" Description: "If present, the patient is retired, and this observation records the retirement date. This is a self-identified statement about the date of being retired as self-identified by the patient. A person can be both retired and employed; most often, a person would be retired from one job and employed in another job." -0..0 SubjectIfNotPersonOfRecord TopicCode is LNC#87510-4 "Date of Retirement" ResultValue value is type dateTime 0..0 EvaluationComponent 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. -0..0 Focus +0..0 FocalSubject EntryElement: CombatZonePeriod Based on: SocialHistoryObservation Concept: LNC#87511-2 Description: "Indicates the date range(s) an individual hs worked in what is considered a combat or hazardous duty zone; both civilian and military." -0..0 SubjectIfNotPersonOfRecord TopicCode is LNC#87511-2 ResultValue value is type TimePeriod 0..0 EvaluationComponent 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. -0..0 Focus // only patient +0..0 FocalSubject // only patient EntryElement: UsualOccupation @@ -67,9 +76,7 @@ Description: "The type of work a person has held for the longest duration during // We'll need to determine the fix here -- US Core requires Subject to be a patient, but ODH allows patient or related person TopicCode is LNC#21843-8 // ResultValue could be from OccupationVS - ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 - Focus value is type CodeableConcept - Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype + ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 EvaluationComponent includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration @@ -101,8 +108,6 @@ Description: "A single job, past or present. The relevant time is the period the // ResultValue could be from OccupationVS ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization - Focus value is type CodeableConcept - Focus from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype EvaluationComponent includes 0..1 PastOrPresentIndustry includes 0..1 WorkClassification @@ -120,7 +125,14 @@ includes 0..1 DailyWorkHours Based on: Role Concept: SCT#394571004 "Employer (person)" Description: "A person or organization that hires the services of another." - Value: ref(Person) or ref(Organization) + Value: ref(EmployerPerson) or ref(EmployerOrganization) + + Element: EmployerPerson + Description: "A related person who is an employer" + 1..1 RelationshipToPersonOfRecord is V2#E + + Element: EmployerOrganization + Description: "An Organization as defined in FHIR" Element: PastOrPresentIndustry Based on: CodedEvaluationComponent @@ -193,10 +205,12 @@ includes 0..1 DailyWorkHours Element: SocialHistoryObservation Based on: Observation Description: "A simplified observation for social histories." - SubjectIfNotPersonOfRecord value is type ref(RelatedPerson) +0..0 SubjectIfNotPersonOfRecord // value is type ref(RelatedPerson) +0..0 PersonOfRecord +0..0 Focus Category is OBSCAT#social-history +0..1 FocalSubject // Get rid of some unnecessary CIMI-isms -0..0 PersonOfRecord // just use FHIR default patient 0..0 Recorded 0..0 Signed 0..0 ContextCode @@ -204,7 +218,6 @@ Description: "A simplified observation for social histories." 0..0 FindingMethod 0..0 AnatomicalLocation 0..0 Precondition -0..0 Focus 0..0 ReferenceRange 0..0 PanelMembers 0..0 Device @@ -217,6 +230,10 @@ Description: "A simplified observation for social histories." 0..0 Details //0..0 FindingStatus + Element: FocalSubject + Description: "The focus of the observation, if someone other than the person of record (subject)." + 1..1 RelationshipToPersonOfRecord from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype + Element: CodedSocialHistoryObservation Based on: SocialHistoryObservation @@ -225,6 +242,7 @@ Description: "The result of social history questions, whose answer is expressed 0..0 ReferenceRange + /* UsualOccupation is in the value element Element: UsualOccupation diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index b61507b9..0c82f188 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -1,10 +1,10 @@ Grammar: Map 5.1 -Namespace: shr.occupation +Namespace: odh Target: FHIR_STU_3 -// do not map to US Core Results -- Brett says that is only for labs +// do not map to US Core Results -- Brett says that's only for labs SocialHistoryObservation maps to Observation: -// PersonOfRecord maps to subject + PersonOfRecord maps to subject TopicCode maps to code Category maps to category EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) @@ -18,3 +18,21 @@ SocialHistoryObservation maps to Observation: ExceptionValue maps to dataAbsentReason RelevantTime maps to effective[x] Encounter maps to context + Focus maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject +// constrain implicitRules to 0..0 +// constrain contained to 0..0 +// constrain modifierExtension to 0..0 + constrain basedOn to 0..0 + constrain bodySite to 0..0 + constrain method to 0..0 + constrain specimen to 0..0 + constrain device to 0..0 + constrain referenceRange to 0..0 + +EmployerOrganization maps to Organization: + +EmployerPerson maps to RelatedPerson: + RelationshipToPersonOfRecord maps to relationship + +FocalSubject maps to RelatedPerson: + RelationshipToPersonOfRecord maps to relationship \ No newline at end of file diff --git a/spec/shr_occupation_vs.txt b/spec/shr_occupation_vs.txt index c7da7212..eb8688a8 100644 --- a/spec/shr_occupation_vs.txt +++ b/spec/shr_occupation_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: shr.occupation +Namespace: odh /* CodeSystem: EMPLOYCDC = urn:oid:2.16.840.1.114222.4.11.7129 From c71bdf19b75eb4c220eb288b2bdad3219b7c1a71 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 8 Aug 2018 08:21:56 -0400 Subject: [PATCH 022/289] Final tweeks on definitions; added Logical model back in --- spec/cimi_core.txt | 2 +- spec/ig-odh-config.json | 2 +- spec/shr_core.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/cimi_core.txt b/spec/cimi_core.txt index 2d9890a7..3c5f3bad 100644 --- a/spec/cimi_core.txt +++ b/spec/cimi_core.txt @@ -58,7 +58,7 @@ Description: "An entry in a patient record or in a report, generally used for th Element: RelationshipToPersonOfRecord Concept: MTH#C0015608 - Description: "The relationship of the SubjectIfNotPersonOfRecord to the subject of record." + Description: "The relationship to the person of record." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered Element: RecordStatus diff --git a/spec/ig-odh-config.json b/spec/ig-odh-config.json index 5e75f389..e1ef206f 100644 --- a/spec/ig-odh-config.json +++ b/spec/ig-odh-config.json @@ -8,7 +8,7 @@ { "npmName": "hl7.fhir.us.odh", "version": "1.0.0", - "includeLogicalModels": false, + "includeLogicalModels": true, "includeModelDoc": false, "indexContent": "LandingPageOccupation.html", "primarySelectionStrategy": diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 66277f4f..ded13ac5 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -707,6 +707,6 @@ Value: string Element: Category Concept: TBD -Description: "A class or division of people or things having particular shared characteristics" +Description: "The type, kind, or class of this item." Value: CodeableConcept From 571adc5377f6fcdffbb7ebacddd958baefb3a8a2 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 8 Aug 2018 16:12:43 -0400 Subject: [PATCH 023/289] hold point --- spec/ig-wound-config.json | 29 +++++++++++++++++------------ spec/shr_occupation_map.txt | 6 +++--- spec/shr_wound.txt | 2 +- spec/shr_wound_vs.txt | 2 +- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/spec/ig-wound-config.json b/spec/ig-wound-config.json index 312bf446..23b2835a 100644 --- a/spec/ig-wound-config.json +++ b/spec/ig-wound-config.json @@ -1,24 +1,29 @@ { - "projectName": "Skin and Wound", - "projectShorthand": "SW", - "projectURL": "http://standardhealthrecord.org", - "fhirURL": "http://standardhealthrecord.org/fhir", - "entryTypeURL": "http://standardhealthrecord.org/spec/", - "implementationGuide": + "projectName": "HL7 FHIR Profile: Skin and Wound Assessment (SW), Release 1 (For Comment)", + "projectShorthand": "SWA", + "projectURL": "http://hl7.org/fhir/us/swa", + "fhirURL": "http://hl7.org/fhir/us/swa", + "entryTypeURL": "http://hl7.org/fhir/us/swa/spec", + + "implementationGuide": { + "npmName": "hl7.fhir.us.swa", + "version": "1.0.0", "includeLogicalModels": true, - "includeModelDoc": true, + "includeModelDoc": false, "indexContent": "LandingPageWound.html", - "primarySelectionStrategy": + "primarySelectionStrategy": { - "strategy": "entry" + "strategy": "namespace", + "primary": ["swa"], + "hideSupporting": true } - }, + }, "filterStrategy": { "filter": true, - "strategy": "namespace", - "target": ["shr.wound"] + "strategy": "namespace", + "target": ["swa"] }, "publisher": "HL7 Patient Care and Clinical Information Modeling Initiative Work Groups", "contact": [ diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index 0c82f188..a1eebe60 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -22,12 +22,12 @@ SocialHistoryObservation maps to Observation: // constrain implicitRules to 0..0 // constrain contained to 0..0 // constrain modifierExtension to 0..0 - constrain basedOn to 0..0 +// constrain basedOn to 0..0 constrain bodySite to 0..0 - constrain method to 0..0 +// constrain method to 0..0 constrain specimen to 0..0 constrain device to 0..0 - constrain referenceRange to 0..0 +// constrain referenceRange to 0..0 EmployerOrganization maps to Organization: diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index ec390a66..b4e393b5 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -1,5 +1,5 @@ Grammar: DataElement 5.0 -Namespace: shr.wound +Namespace: swa Description: "SHR implementation of the HL7 Pressure Ulcer Prevention Domain Analysis Model (May, 2011)." Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition diff --git a/spec/shr_wound_vs.txt b/spec/shr_wound_vs.txt index 881af3a9..32148b2a 100644 --- a/spec/shr_wound_vs.txt +++ b/spec/shr_wound_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: shr.wound +Namespace: swa //ValueSet: WoundMorphologyVS //Description: "The shape and nature of a wound." From 33843d5e2f9ccb85c5eee35e13a101752c10b879 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 8 Aug 2018 17:28:19 -0400 Subject: [PATCH 024/289] relax 0..0 constraints Following Lloyd's suggestion to not set things to 0..0 --- spec/shr_occupation_map.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index a1eebe60..d6dca512 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -13,7 +13,7 @@ SocialHistoryObservation maps to Observation: EvaluationComponent.ExceptionValue maps to component.dataAbsentReason EvaluationComponent.Interpretation maps to component.interpretation EvaluationComponent.ReferenceRange maps to component.referenceRange - constrain related to 0..0 +// constrain related to 0..0 ResultValue maps to value[x] ExceptionValue maps to dataAbsentReason RelevantTime maps to effective[x] From 3d266e830d3356c44107781bf0770e360d127fbc Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 8 Aug 2018 20:56:42 -0400 Subject: [PATCH 025/289] update wound config --- spec/ig-wound-config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/ig-wound-config.json b/spec/ig-wound-config.json index 23b2835a..0e42e6ae 100644 --- a/spec/ig-wound-config.json +++ b/spec/ig-wound-config.json @@ -10,7 +10,7 @@ "npmName": "hl7.fhir.us.swa", "version": "1.0.0", "includeLogicalModels": true, - "includeModelDoc": false, + "includeModelDoc": true, "indexContent": "LandingPageWound.html", "primarySelectionStrategy": { From f744fc71ec3d7b07b171eda313202db207e8ddb9 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 8 Aug 2018 21:43:43 -0400 Subject: [PATCH 026/289] Corrected vsac paths --- spec/shr_wound.txt | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index b4e393b5..343255dd 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -159,12 +159,12 @@ Description: "A topic concerning a wound being present or absent." Based on: ConditionCause Concept: LNC#11373-8 "Injury cause" Description: "A specialization of condition cause, specific to the causes of injuries." - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.3/definition // should be from http://loinc.org/vs/LL4936-2 + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.3/expansion // should be from http://loinc.org/vs/LL4936-2 Element: WoundAnatomicLocation Based on: AnatomicalLocation Concept: LNC#39111-0 "Body Site" - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.14/definition + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.14/expansion 1..1 Laterality 0..0 AnatomicalDirection @@ -222,20 +222,20 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Based on: CodedEvaluationComponent Concept: LNC#89252-1 "Episode of Wound" Description: "Wound episode refers to a period of the wound, an incident in the course of a wound" - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.4/definition + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.4/expansion Element: PeriwoundDescription Based on: CodedEvaluationComponent Concept: LNC#72301-5 Description: "A description of the skin around the wound (periwound). Color, induration, warmth and edema should be assessed. Redness of the surrounding skin can be indicative of unrelieved pressure. Irritation of the surrounding skin can result from exposure to feces or urine, a reaction to the dressing or tape, or inappropriate removal of dressing or tape. Redness, tenderness, warmth and swelling are classical clinical signs of infection. [Reference: Brown, P., 2009]" - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.2/definition + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.2/expansion //could be from http://loinc.org/vs/LL2216-1 Element: VisibleInternalStructure Based on: CodedEvaluationComponent Concept: LNC#89250-5 Description: "Exposed body structures, devices, and/or foreign bodies visible by the naked eye in a wound." - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.1/definition + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.1/expansion // should be from http://loinc.org/vs/LL4935-4 Element: PressureUlcerAssociation @@ -274,7 +274,7 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Based on: DeltaFlag Concept: LNC#89253-9 Description: "Whether a condition is improving, worsening, stable, or resolved." - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.5/definition // should be from http://loinc.org/vs/LL4938-8 with values improved, deteriorated, stablized or resolved. Resolved is missing from the VS in VSAC + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.5/expansion // should be from http://loinc.org/vs/LL4938-8 with values improved, deteriorated, stablized or resolved. Resolved is missing from the VS in VSAC // LOINC: The wound bed panel is factored so the percentages pair unambiguously with the color/appearances. It should be a set of 2-tuples (pairs). The way it is done in LOINC doesn't allow pairing @@ -290,7 +290,7 @@ includes 1..1 WoundBedAppearancePercentage Based on: CodedEvaluationComponent Concept: LNC#72371-8 Description: "Appearance of wound base (bed)." - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.6/definition //could be from http://loinc.org/vs/LL2237-7 + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.6/expansion //could be from http://loinc.org/vs/LL2237-7 Element: WoundBedAppearancePercentage Based on: EvaluationComponent @@ -311,7 +311,7 @@ includes 1..1 WoundBedColorAreaPercentage Based on: CodedEvaluationComponent Concept: LNC#39132-6 Description: "Color of Wound base (bed)." - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.7/definition //could be from http://loinc.org/vs/LL2338-3 + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.7/expansion //could be from http://loinc.org/vs/LL2338-3 // LOINC: Why precoordinate a general concept such as 'percentage of area' with the concept of wound bed? Element: WoundBedColorAreaPercentage @@ -334,7 +334,7 @@ includes 0..1 WoundEdgeColor Based on: CodedEvaluationComponent Concept: LNC#72304-9 Description: "Edge of wound description." - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.8/definition // could be from http://loinc.org/vs/LL2230-2 + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.8/expansion // could be from http://loinc.org/vs/LL2230-2 Element: WoundEdgeColor Based on: CodedEvaluationComponent @@ -405,7 +405,7 @@ includes 0..1 ExudateOdor Based on: CodedEvaluationComponent Concept: LNC#39116-9 Description:"Drainage amount of wound" - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.10/definition //could be from http://loinc.org/vs/LL2222-9 + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.10/expansion //could be from http://loinc.org/vs/LL2222-9 Element: WoundExudateVolume Based on: EvaluationComponent @@ -417,20 +417,20 @@ includes 0..1 ExudateOdor Based on: CodedEvaluationComponent Concept: LNC#72290-0 Description:"Appearance of exudate from wound" - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.11/definition //could be from http://loinc.org/vs/LL2220-3 + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.11/expansion //could be from http://loinc.org/vs/LL2220-3 Element: ExudateColor Based on: CodedEvaluationComponent Concept: LNC#72289-2 Description:"Color of exudate from wound" - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.12/definition + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.12/expansion // could be from http://loinc.org/vs/LL2219-5 Element: ExudateOdor Based on: CodedEvaluationComponent Concept: LNC#72288-4 Description:"Odor of exudate from wound" - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.13/definition + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.13/expansion EntryElement: WoundSizeObservation From 34fa07f0d742b24386a0bae6e7e9d121df1575e9 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 10 Aug 2018 18:34:07 -0400 Subject: [PATCH 027/289] Got rid of StatementTopic for Wound --- spec/cimi_adverse.txt | 2 +- spec/cimi_allergy.txt | 3 +- spec/cimi_entity.txt | 6 -- spec/cimi_statement.txt | 36 ++++++---- spec/cimi_statement_map.txt | 6 +- spec/cimi_topic.txt | 18 ----- spec/ig-wound-config.json | 14 ++-- spec/shr_condition.txt | 20 ++---- spec/shr_oncology.txt | 6 +- spec/shr_wound.txt | 137 +++++++++--------------------------- spec/shr_wound_vs.txt | 2 +- 11 files changed, 78 insertions(+), 172 deletions(-) diff --git a/spec/cimi_adverse.txt b/spec/cimi_adverse.txt index 600599ca..9966f59a 100644 --- a/spec/cimi_adverse.txt +++ b/spec/cimi_adverse.txt @@ -64,7 +64,7 @@ Description: "An instance of a negative response to a substance." EntryElement: AdverseReactionPresenceStatement Based on: AssertionPresenceStatement - StatementTopic is type AdverseReactionTopic +1..1 StatementTopic is type AdverseReactionTopic // AdverseReactionTopic.CausalAttribution value is type CodeableConcept // mapping to FHIR diff --git a/spec/cimi_allergy.txt b/spec/cimi_allergy.txt index af9c6507..3721ac78 100644 --- a/spec/cimi_allergy.txt +++ b/spec/cimi_allergy.txt @@ -26,10 +26,9 @@ EntryElement: AdverseSensitivityToSubstanceStatement Based on: AssertionPresenceStatement Concept: SCT#473010000 "Hypersensitivity condition (disorder)" // or SCT#420134006 "Propensity to adverse reactions (disorder)"? Description: "A finding related to the presence or absence of an individual's risk or sensitivity to a substance or class of substances. A finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time." - SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson Signed.Attribution.EntityOrRole is type PatientOrPractitioner // to facilitate mapping to FHIR, which only allows Patient or Practitioner as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) - StatementTopic is type AdverseSensitivityTopic +1..1 StatementTopic is type AdverseSensitivityTopic 1..1 StatementTopic.AllergenIrritant // US Core requirement. See http://hl7.org/fhir/us/core/StructureDefinition-us-core-allergyintolerance.html 1..1 StatementTopic.TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" // not needed AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution value is type CodeableConcept diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index d61b8d98..83cd00c8 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -639,10 +639,4 @@ Description: "Direct container of specimen (tube/slide, etc.)" // BALLOT: Why is SpecimenContainer.SequenceNumber a CodeableConcept? It should be an integer or a string. I don't think the sequence number will ever be coded, and CodeableConcept datatype is specifically designed for code mapping. -Element: MaterializedAssertion -Based on: Entity -Description: "A thing whose existence is implied by an assertion of presence. For example, a wound presence assertion implies there is a physical wound that exists. Observation of a tumor implies there is a tumor that exists. Assertion of a condition in a patient implies there is one more countable instance (case) of that condition in the world. The MaterializedAssertion allows one to refer to the implied entity as an actual entity. In other words, MaterializedAssertion represents the reification of a clinical statement. -CIMI Alignment: not part of CIMI." -Value: ref(ConditionPresenceStatement) - diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index c0a509b1..e90e3511 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -173,6 +173,9 @@ Description: "Any clinical statement representing a finding." 0..1 Interpretation //1..1 FindingStatus 0..1 RelevantTime // CIMI's ClinicallyRelevantTime isn't a good name when it comes to employment and other life history events +0..1 FindingMethod +0..1 Details +0..* Media Element: Interpretation Concept: MTH#C0420833 @@ -190,10 +193,15 @@ Description: "Any clinical statement representing a finding." The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." Value: dateTime or TimePeriod + Element: FindingMethod + Concept: TBD + Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." + Value: CodeableConcept should be from http://loinc.org + + Element: AssertionTopic Based on: FindingTopic -Description: "The base topic for conditions, allergies, adverse events, etc. These are things that are asserted to exist or not. The Value is interpreted in the context of the class; for an AdverseSensitivityToSubstance, the value is the substance, for a Condition, the Value represents the type of condition found." - +Description: "The base topic for allergies, adverse events, etc. These are things that are asserted to exist or not. The Value is interpreted in the context of the class; for an AdverseSensitivityToSubstance, the value is the substance, for a Condition, the Value represents the type of condition found. NO LONGER USED IN FHIMI FOR CONDITION ASSERTION." EntryElement: Observation // TODO: be consistent, or stop using the word "Statement" in class names Based on: FindingStatement @@ -201,7 +209,7 @@ Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." 0..0 PersonOfRecord // just use FHIR -0..0 StatementTopic +0..0 StatementTopic // eliminate to avoid making everything more complicated 1..1 TopicCode ContextCode is SCT#424975005 "Record Entity" SourceOfInformation value is type AnyPersonOrOrganization // mapped to performer (who made the observation) @@ -224,7 +232,7 @@ Observation has a value representing the result (answer), or an ExceptionValue i 0..* Media Element: Focus - Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. For example, the finding could deal with a condition, a behavior, a wound, or tumor. These are entities that are implied by clinical statements (see cimi.entity.MaterializedAssertion)" + Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. For example, the finding could deal with a condition, a behavior, a wound, or tumor." Value: string or CodeableConcept or Identifier or ref(EntityOrRole) Element: EvaluationComponent @@ -376,7 +384,6 @@ Abstract Element: AssertionStatement Based on: FindingStatement Description: "A clinical statement that asserts presence or absence." 1..1 PersonOfRecord -1..1 StatementTopic Abstract Element: AssertionPresenceStatement // AssertPresence Based on: AssertionStatement @@ -420,7 +427,10 @@ Based on: AssertionPresenceStatement Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson - StatementTopic is type ConditionAssertionTopic +1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered +1..* Category from ConditionCategoryVS +0..* AnatomicalLocation +0..* ConditionCause 1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical 0..1 WhenClinicallyRecognized 0..1 Preexisting @@ -428,6 +438,11 @@ Description: "A condition that is or may be present in a subject. 'Condition' is 0..1 Criticality from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality 0..1 Stage + Element: ConditionCause + Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" + Value: CodeableConcept or ref(Entity) or ref(ClinicalStatement) + // probably other attributes needed, such as likelihood or type of cause + Element: ClinicalStatus Concept: TBD Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." @@ -466,12 +481,13 @@ Description: "A condition that is or may be present in a subject. 'Condition' is - EntryElement: ConditionAbsenceStatement Based on: AssertionAbsenceStatement Concept: MTH#C0277541 "no disease present" Description: "A finding that a condition is or was not present in the subject at a certain time, not necessarily the time the information is gathered." - StatementTopic is type ConditionAssertionTopic +1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered +1..* Category from ConditionCategoryVS +0..* AnatomicalLocation EntryElement: ClinicalNote Based on: FindingStatement @@ -481,8 +497,4 @@ Description: "An entry concerning a patient where the result is a narrative text ContextCode is SCT#424975005 "Record Entity" 1..1 Details // TODO: change to "description" to synch with CIMI -Element: AbsenceStatement -Based on: AssertionStatement -Concept: TBD -Description: "Indicates the finding in question is either known absent (ruled out), not suspected, or unknown." diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index f18295c9..56facbf2 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -48,10 +48,10 @@ ConditionPresenceStatement maps to http://hl7.org/fhir/us/core/StructureDefiniti // _Entry.CreationTime maps to assertedDate // why doesn't this work? // PersonOfRecord maps to subject // SourceOfInformation.Value maps to asserter // why doesn't this work? - ConditionAssertionTopic.Category maps to category - ConditionAssertionTopic.TopicCode maps to code + Category maps to category + TopicCode maps to code constrain bodySite to 0..0 - ConditionAssertionTopic.AnatomicalLocation maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite + AnatomicalLocation maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Encounter maps to context ClinicalStatus maps to clinicalStatus VerificationStatus maps to verificationStatus diff --git a/spec/cimi_topic.txt b/spec/cimi_topic.txt index 2f477981..3f790b4e 100644 --- a/spec/cimi_topic.txt +++ b/spec/cimi_topic.txt @@ -33,24 +33,6 @@ The subject of a finding can be the entire patient, or an entity such as a locat 0..1 Details 0..* Media - Element: FindingMethod - Concept: TBD - Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." - Value: CodeableConcept should be from http://loinc.org - -Element: ConditionAssertionTopic -Based on: AssertionTopic -Description: "A condition. 'Condition' is interpreted broadly to include disorder, abnormality, problem, injury, complaint, functionality, concern, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble. -CIMI deviation: AnatomicalLocation is included here, rather than being a property of FindingSiteAssertionTopic, since it is a common property of conditions." - TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered -1..* Category from ConditionCategoryVS -0..* AnatomicalLocation -0..* ConditionCause - - Element: ConditionCause - Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" - Value: CodeableConcept or ref(Entity) or ref(ClinicalStatement) - // probably other attributes needed, such as likelihood or type of cause diff --git a/spec/ig-wound-config.json b/spec/ig-wound-config.json index 0e42e6ae..ae35d8ed 100644 --- a/spec/ig-wound-config.json +++ b/spec/ig-wound-config.json @@ -1,9 +1,9 @@ { - "projectName": "HL7 FHIR Profile: Skin and Wound Assessment (SW), Release 1 (For Comment)", - "projectShorthand": "SWA", - "projectURL": "http://hl7.org/fhir/us/swa", - "fhirURL": "http://hl7.org/fhir/us/swa", - "entryTypeURL": "http://hl7.org/fhir/us/swa/spec", + "projectName": "HL7 FHIR Profile: Skin and Wound Assessment, Release 1 (For Comment)", + "projectShorthand": "SW", + "projectURL": "http://hl7.org/fhir/us/sw", + "fhirURL": "http://hl7.org/fhir/us/sw", + "entryTypeURL": "http://hl7.org/fhir/us/sw/spec", "implementationGuide": { @@ -15,7 +15,7 @@ "primarySelectionStrategy": { "strategy": "namespace", - "primary": ["swa"], + "primary": ["sw"], "hideSupporting": true } }, @@ -23,7 +23,7 @@ { "filter": true, "strategy": "namespace", - "target": ["swa"] + "target": ["sw"] }, "publisher": "HL7 Patient Care and Clinical Information Modeling Initiative Work Groups", "contact": [ diff --git a/spec/shr_condition.txt b/spec/shr_condition.txt index 2b5649ec..acbdbc14 100644 --- a/spec/shr_condition.txt +++ b/spec/shr_condition.txt @@ -6,32 +6,24 @@ Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.stateme CodeSystem: SCT = http://snomed.info/sct CodeSystem: MTH = http://ncimeta.nci.nih.gov -// -Abstract Element: FindingSiteConditionTopic -Based on: ConditionAssertionTopic + +EntryElement: FindingSiteConditionPresenceStatement +Based on: ConditionPresenceStatement Concept: MTH#C1268086 -Description: "Presence (or absence) of a distinct anatomical or pathological morphological feature or organizational pattern, acquired or innate. Examples include tissue types, tumors, and wounds." +Description: "Presence of a distinct anatomical or pathological morphological feature or organizational pattern, acquired or innate. Examples include tissue types, tumors, and wounds. Body structures are continuants that allow observations of the same body structure to be related to be tracked over time." 0..1 FindingSiteIdentifier 1..* AnatomicalLocation - Element: FindingSiteIdentifier + Element: FindingSiteIdentifier Concept: TBD Description: "A human-readable identifier for the condition at the finding site, for example, a wound number or tumor identifier." Value: string - -EntryElement: FindingSiteConditionPresenceStatement -Based on: ConditionPresenceStatement -Concept: TBD -Description: "Presence of a distinct anatomical or pathological morphological feature or organizational pattern, acquired or innate. Examples include tissue types, tumors, and wounds. Body structures are continuants that allow observations of the same body structure to be related to be tracked over time." - StatementTopic is type FindingSiteConditionTopic - - EntryElement: FindingSiteConditionAbsenceStatement // AssertionOfAbsenceStatement? Based on: ConditionAbsenceStatement Concept: TBD Description: "Absence of a distinct anatomical or pathological morphological feature or organizational pattern, acquired or innate. Examples include tissue types, tumors, and wounds. Body structures are continuants that allow observations of the same body structure to be related to be tracked over time." - StatementTopic is type FindingSiteConditionTopic +1..* AnatomicalLocation EntryElement: DiseaseProgression Based on: Observation diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index ecd337b2..12036368 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -42,10 +42,10 @@ EntryElement: BreastCancerPresenceStatement Based on: ConditionPresenceStatement Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." - ConditionAssertionTopic.TopicCode from BreastCancerTypeVS + TopicCode from BreastCancerTypeVS Stage.StageDetail value is type BreastCancerStage - ConditionAssertionTopic.FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding - ConditionAssertionTopic.AnatomicalLocation is type BreastSite +0..1 FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding + AnatomicalLocation is type BreastSite 0..1 MorphologyBehavior from MorphologyBehaviorVS Element: MorphologyBehavior diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 343255dd..00e389d6 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -1,5 +1,5 @@ Grammar: DataElement 5.0 -Namespace: swa +Namespace: sw Description: "SHR implementation of the HL7 Pressure Ulcer Prevention Domain Analysis Model (May, 2011)." Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition @@ -59,95 +59,41 @@ See https://s.details.loinc.org/LOINC/39135-9.html?sections=Comprehensive 39126-8 Length of Wound R cm 80338-7 Wound assessment [Interpretation] - -========================== - -Wound ASSERTION -- ONE ASSERTION PER WOUND - 0..1 72300-7 Wound type R - 0..1 89251-3 Condition present on admission - 0..1 11373-8 Injury cause - 0..1 85585-8 Date of Onset of Impairment {mm/dd/yyyy} - 0..1 88878-4 Date of condition abatement {mm/dd/yyyy} - 1..1 81666-0 Wound number [Identifier] - 1..1? 89252-1 Episode of Wound (aka ClinicalStatus) - 1..1 72369-2 Anatomical Location - 0..1 72527-5 Pressure ulcer stage NPUAP - -========================== - -Wound ASSESSMENT PANEL (MULTIPLE PANELS PER WOUND) -1..1 81666-0 Wound number [Identifier] -------> REFERENCE TO Wound Assertion -0..1 89253-9 Trend -0..* 72170-4 Photographic image [Media] -0..1 80338-7 Wound assessment [Interpretation] -Components: -0..1 72301-5 Description of Periwound -0..* 89250-5 Device or anatomic structure visible in wound -1..1 72298-3 Presence of Tunneling of Wound R -1..1 72295-9 Presence of Undermining of Wound R -1..1 89259-6 Presence of wound exudate -MemberObservations: - 0..* 89254-7 Wound bed appearance observation - 0..* xxxx Wound bed color observation - 0..1? 89256-2 Wound edge observation - 0..* 89257-0 Wound tunneling observation - 0..* 89258-8 Wound undermining observation - 0..1 72292-6 Wound exudate observation - 0..1 72287-6 Wound size observation - -=========================== - -Observation: 89254-7 Wound bed appearance observation - COMPONENT: 72371-8 Appearance of Wound base (bed) R - COMPONENT: 72370-0 Area of wound bed appearance/Entire ​Area of wound bed C % - -Observation: xxxx Wound bed color observation - COMPONENT: 39132-6 Color of Wound base O - COMPONENT: 89255-4 Wound bed area identified by color/​Area of wound bed % - -Observation: 89256-2 Wound edge observation - COMPONENT: 72304-9 Edge of wound description O - COMPONENT: 39133-4 Color of Wound edge O - -Observation: 89257-0 Wound tunneling observation - COMPONENT: 72296-7 Tunneling [Length] of Wound C cm - COMPONENT: 72297-5 Tunneling clock position of Wound C - -Observation: 89258-8 Wound undermining observation - COMPONENT: 72293-4 Undermining [Length] of Wound C cm - COMPONENT: 72294-2 Undermining clock position of Wound C - -Observation: 72292-6 Wound exudate observation - COMPONENT: 39116-9 Drainage amount of Wound C - COMPONENT: 72288-4 Odor of Exudate from wound O - COMPONENT: 72289-2 Color of Exudate from wound R - COMPONENT: 72290-0 Appearance of Exudate from wound R - -Observation: 72287-6 Wound size observation - COMPONENT: 39125-0 Width of Wound R cm - COMPONENT: 39127-6 Depth of Wound R cm - COMPONENT: 39126-8 Length of Wound R cm - COMPONENT: 89260-4 Area of wound cm2 - */ -Abstract Element: WoundTopic -Based on: FindingSiteConditionTopic -Description: "A topic concerning a wound being present or absent." -1..1 TopicCode is type WoundType + +//------------- Wound Absence or Presence --------------- +EntryElement: WoundPresenceAssertion +Based on: FindingSiteConditionPresenceStatement +Concept: SCT#416462003 "Wound (disorder)" +Description: "A determination that a wound that exists at a particular body site. Multiple wound assessments can be associated with a single wound." + Onset value is type dateTime // 85585-8 Date of Onset {mm/dd/yyyy} + Abatement value is type dateTime // 88878-4 Date of abatement {mm/dd/yyyy} 1..1 Category is OBSCAT#exam -1..1 FindingSiteIdentifier is type WoundIdentifier // in this context, a wound number 81666-0. However it is not clear how to associate a more specific meaning - ConditionCause is type WoundTypeEtiology -1..1 AnatomicalLocation is type WoundAnatomicLocation +1..1 TopicCode is SCT#416462003 "Wound (disorder)" +1..1 WoundType +1..1 WoundIdentifier +0..1 WoundTypeEtiology +1..1 WoundAnatomicLocation +0..0 Severity // not sure if zeroing it out should be prohibited, but it is not part of LOINC panel +0..0 Criticality +0..0 Certainty 0..0 Device 0..0 Precondition +EntryElement: WoundAbsenceAssertion +Based on: FindingSiteConditionAbsenceStatement +Description: "Documents the absence of a wounds of a particular type at a given body site. If the topic is SCT#416462003 (Wound) then there is no wound of any type at the site. No wounds anywhere on the body can be indicated using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicLocation (the entire skin code should be added to the wound anatomic location value set)." +1..1 TopicCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered +1..1 Category is OBSCAT#exam +1..1 WoundAnatomicLocation + Element: WoundType Based on: TopicCode Concept: LNC#72300-7 Description: "A type code describing the wound or skin injury. Differentiating pressure ulcers and other types of wounds is important for an accurate count of their number and for identifying appropriate wound treatment. The values will be used for documenting and retrieving data regarding the number and types of wounds present. " - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion + Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered Element: WoundIdentifier Based on: FindingSiteIdentifier @@ -158,7 +104,7 @@ Description: "A topic concerning a wound being present or absent." Element: WoundTypeEtiology Based on: ConditionCause Concept: LNC#11373-8 "Injury cause" - Description: "A specialization of condition cause, specific to the causes of injuries." + Description: "A specialization of condition cause, specific to the causes of injuries (or not having injury in the wound absent context)." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.3/expansion // should be from http://loinc.org/vs/LL4936-2 Element: WoundAnatomicLocation @@ -168,24 +114,6 @@ Description: "A topic concerning a wound being present or absent." 1..1 Laterality 0..0 AnatomicalDirection -//------------- Wound Absence or Presence --------------- -EntryElement: WoundPresenceStatement -Based on: FindingSiteConditionPresenceStatement -Concept: SCT#416462003 "Wound (disorder)" -Description: "A determination that a wound that exists at a particular body site. Multiple wound assessments can be associated with a single wound." - FindingSiteConditionTopic is type WoundTopic - Onset value is type dateTime // 85585-8 Date of Onset {mm/dd/yyyy} - Abatement value is type dateTime // 88878-4 Date of abatement {mm/dd/yyyy} -0..0 Severity // not sure if zeroing it out should be prohibited, but it is not part of LOINC panel -0..0 Criticality -0..0 Certainty - - - -/* EntryElement: WoundAbsenceStatement -Based on: FindingSiteConditionAbsenceStatement -Description: "Documents the absence of a wounds of a particular type at a given body site. if the Value is SCT#416462003 (Wound) then there is no wound of any type at the site." - FindingSiteConditionTopic is type WoundTopic*/ //--------------- Wound Assessment ------------------------- @@ -206,9 +134,9 @@ includes 0..1 EpisodeOfWound // very similar to Episodicity or ClinicalStatus, includes 0..1 PeriwoundDescription // 72301-5 Description of Periwound includes 0..* VisibleInternalStructure //89250-5 Device or anatomic structure visible in wound includes 0..1 PressureUlcerAssociation // missing LOINC code -includes 0..1 PresenceOfWoundTunneling // 72298-3 Tunneling of Wound R present/absent -includes 0..1 PresenceOfWoundUndermining // 72295-9 Undermining of Wound R -includes 0..1 PresenceOfWoundExudate // 89259-6 Presence of wound exudate +includes 0..1 TunnelingPresentOrAbsent // 72298-3 Tunneling of Wound R present/absent +includes 0..1 UnderminingPresentOrAbsent // 72295-9 Undermining of Wound R +includes 0..1 ExudatePresentOrAbsent // 89259-6 Presence of wound exudate PanelMembers.Observation includes 0..* WoundBedAppearanceObservation //89254-7 Wound bed appearance observation includes 0..* WoundBedColorObservation // xxxx Wound color observation @@ -244,26 +172,25 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Description: "Is the wound associated with a device or pressure point?" Value: CodeableConcept from YesNoUnknownVS - Element: PresenceOfWoundTunneling + Element: TunnelingPresentOrAbsent Based on: CodedEvaluationComponent Concept: LNC#72298-3 Description: "The presence or absence of wound tunneling." Value: CodeableConcept from PresentAbsentVS // LOINC: should re-use the same Snomed codes for Present-Absent - Element: PresenceOfWoundUndermining + Element: UnderminingPresentOrAbsent Based on: CodedEvaluationComponent Concept: LNC#72295-9 Description: "The presence or absence of wound undermining." Value: CodeableConcept from PresentAbsentVS - Element: PresenceOfWoundExudate + Element: ExudatePresentOrAbsent Based on: CodedEvaluationComponent Concept: LNC#89259-6 Description: "The presence or absence of wound exudate." Value: CodeableConcept from PresentAbsentVS - Element: WoundAssessmentInterpretation Based on: Interpretation Concept: LNC#80338-7 diff --git a/spec/shr_wound_vs.txt b/spec/shr_wound_vs.txt index 32148b2a..a7c0beb6 100644 --- a/spec/shr_wound_vs.txt +++ b/spec/shr_wound_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: swa +Namespace: sw //ValueSet: WoundMorphologyVS //Description: "The shape and nature of a wound." From 43894ddd585b4afa91c36b476183c851488781c0 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sat, 11 Aug 2018 17:13:19 -0400 Subject: [PATCH 028/289] Misc fixes - moved files out of spec --- spec/cimi_adverse.txt => cimi_adverse.txt | 0 ...mi_adverse_map.txt => cimi_adverse_map.txt | 0 ...cimi_adverse_vs.txt => cimi_adverse_vs.txt | 0 spec/cimi_allergy.txt => cimi_allergy.txt | 7 ++- ...mi_allergy_map.txt => cimi_allergy_map.txt | 4 +- ...cimi_allergy_vs.txt => cimi_allergy_vs.txt | 0 ...cimi_medication.txt => cimi_medication.txt | 4 +- ...ication_map.txt => cimi_medication_map.txt | 4 +- ...edication_vs.txt => cimi_medication_vs.txt | 0 ...r_immunization.txt => shr_immunization.txt | 2 +- ...zation_map.txt => shr_immunization_map.txt | 0 ...nization_vs.txt => shr_immunization_vs.txt | 0 spec/LandingPageWound.html | 6 +- spec/cimi_core.txt | 9 ++- spec/cimi_encounter.txt | 5 -- spec/cimi_entity.txt | 1 + spec/cimi_statement.txt | 22 ++++++- spec/cimi_topic_vs.txt | 1 + spec/shr_condition.txt | 53 ----------------- spec/shr_condition_vs.txt | 42 -------------- spec/shr_core.txt | 4 +- spec/shr_occupation.txt | 6 +- spec/shr_occupation_map.txt | 6 +- spec/shr_oncology.txt | 22 +++++++ spec/shr_oncology_vs.txt | 16 ++++++ spec/shr_wound.txt | 57 +++++++++++-------- 26 files changed, 118 insertions(+), 153 deletions(-) rename spec/cimi_adverse.txt => cimi_adverse.txt (100%) rename spec/cimi_adverse_map.txt => cimi_adverse_map.txt (100%) rename spec/cimi_adverse_vs.txt => cimi_adverse_vs.txt (100%) rename spec/cimi_allergy.txt => cimi_allergy.txt (95%) rename spec/cimi_allergy_map.txt => cimi_allergy_map.txt (95%) rename spec/cimi_allergy_vs.txt => cimi_allergy_vs.txt (100%) rename spec/cimi_medication.txt => cimi_medication.txt (98%) rename spec/cimi_medication_map.txt => cimi_medication_map.txt (95%) rename spec/cimi_medication_vs.txt => cimi_medication_vs.txt (100%) rename spec/shr_immunization.txt => shr_immunization.txt (98%) rename spec/shr_immunization_map.txt => shr_immunization_map.txt (100%) rename spec/shr_immunization_vs.txt => shr_immunization_vs.txt (100%) delete mode 100644 spec/shr_condition.txt delete mode 100644 spec/shr_condition_vs.txt diff --git a/spec/cimi_adverse.txt b/cimi_adverse.txt similarity index 100% rename from spec/cimi_adverse.txt rename to cimi_adverse.txt diff --git a/spec/cimi_adverse_map.txt b/cimi_adverse_map.txt similarity index 100% rename from spec/cimi_adverse_map.txt rename to cimi_adverse_map.txt diff --git a/spec/cimi_adverse_vs.txt b/cimi_adverse_vs.txt similarity index 100% rename from spec/cimi_adverse_vs.txt rename to cimi_adverse_vs.txt diff --git a/spec/cimi_allergy.txt b/cimi_allergy.txt similarity index 95% rename from spec/cimi_allergy.txt rename to cimi_allergy.txt index 3721ac78..c3c80942 100644 --- a/spec/cimi_allergy.txt +++ b/cimi_allergy.txt @@ -10,6 +10,7 @@ Element: AdverseSensitivityTopic Based on: AssertionTopic Concept: TBD Description: "A finding related to the presence or absence of an individual's risk or sensitivity to a substance or class of substances. A finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time." +1..1 TopicCode 0..1 AllergenIrritant 0..* SubstanceCategory from http://hl7.org/fhir/ValueSet/allergy-intolerance-category 0..1 Type from http://hl7.org/fhir/ValueSet/allergy-intolerance-type @@ -26,7 +27,7 @@ EntryElement: AdverseSensitivityToSubstanceStatement Based on: AssertionPresenceStatement Concept: SCT#473010000 "Hypersensitivity condition (disorder)" // or SCT#420134006 "Propensity to adverse reactions (disorder)"? Description: "A finding related to the presence or absence of an individual's risk or sensitivity to a substance or class of substances. A finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time." - SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson +// SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson Signed.Attribution.EntityOrRole is type PatientOrPractitioner // to facilitate mapping to FHIR, which only allows Patient or Practitioner as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) 1..1 StatementTopic is type AdverseSensitivityTopic 1..1 StatementTopic.AllergenIrritant // US Core requirement. See http://hl7.org/fhir/us/core/StructureDefinition-us-core-allergyintolerance.html @@ -56,9 +57,9 @@ Description: "A finding related to the presence or absence of an individual's ri EntryElement: NoAdverseSensitivityToSubstanceStatement Based on: AssertionAbsenceStatement Description: "Used to record that a particular substance or class of substances does not pose a known elevated risk to the subject." - SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson +// SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson Signed.Attribution.EntityOrRole is type PatientOrPractitioner - StatementTopic is type AdverseSensitivityTopic +1..1 StatementTopic is type AdverseSensitivityTopic AdverseSensitivityTopic.TopicCode is SCT#716186003 "No known allergy (situation)" StatementTopic.TopicCode from NoKnownAllergyVS diff --git a/spec/cimi_allergy_map.txt b/cimi_allergy_map.txt similarity index 95% rename from spec/cimi_allergy_map.txt rename to cimi_allergy_map.txt index 0bc6d54f..63ab100f 100644 --- a/spec/cimi_allergy_map.txt +++ b/cimi_allergy_map.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 AdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: PersonOfRecord maps to patient - SourceOfInformation.Value maps to asserter +// SourceOfInformation.Value maps to asserter Signed.Value.EntityOrRole maps to recorder _Entry.CreationTime maps to assertedDate AdverseSensitivityTopic.AllergenIrritant maps to code @@ -26,7 +26,7 @@ AdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/Struc NoAdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: PersonOfRecord maps to patient - SourceOfInformation.Value maps to asserter +// SourceOfInformation.Value maps to asserter Signed.Value.EntityOrRole maps to recorder _Entry.CreationTime maps to assertedDate AdverseSensitivityTopic.TopicCode maps to code diff --git a/spec/cimi_allergy_vs.txt b/cimi_allergy_vs.txt similarity index 100% rename from spec/cimi_allergy_vs.txt rename to cimi_allergy_vs.txt diff --git a/spec/cimi_medication.txt b/cimi_medication.txt similarity index 98% rename from spec/cimi_medication.txt rename to cimi_medication.txt index 4b533df1..55002bb8 100644 --- a/spec/cimi_medication.txt +++ b/cimi_medication.txt @@ -121,7 +121,7 @@ EntryElement: MedicationUsedStatement Based on: ActionPerformedStatement Concept: TBD Description: "A record of the use of a medication." - SourceOfInformation value is type AnyPersonOrOrganization +// SourceOfInformation value is type AnyPersonOrOrganization StatementTopic is type MedicationUseTopic 0..1 MedicationUseTopic.Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category Status from http://hl7.org/fhir/ValueSet/medication-statement-status @@ -146,7 +146,7 @@ EntryElement: MedicationNotUsedStatement Based on: ActionNotPerformedStatement Concept: TBD Description: "A record of a medication NOT used. Although usually not required, a medication not used is sometimes reported when deviating from normal expectation or care plan." - SourceOfInformation value is type AnyPersonOrOrganization +// SourceOfInformation value is type AnyPersonOrOrganization StatementTopic is type MedicationUseTopic 0..1 MedicationUseTopic.Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category 0..0 MedicationUseTopic.Dosage diff --git a/spec/cimi_medication_map.txt b/cimi_medication_map.txt similarity index 95% rename from spec/cimi_medication_map.txt rename to cimi_medication_map.txt index f3240efe..ece4e2db 100644 --- a/spec/cimi_medication_map.txt +++ b/cimi_medication_map.txt @@ -14,7 +14,7 @@ Dosage maps to Dosage: MaximumDosePerTimePeriod maps to maxDosePerPeriod MedicationUsedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: - SourceOfInformation.Value maps to informationSource +// SourceOfInformation.Value maps to informationSource _Entry.CreationTime maps to dateAsserted // date asserted and date recorded may not be the same constrain reasonNotTaken to 0..0 constrain dosage to 0..1 @@ -27,7 +27,7 @@ MedicationUsedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/ Status maps to status MedicationNotUsedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: - SourceOfInformation.Value maps to informationSource +// SourceOfInformation.Value maps to informationSource _Entry.CreationTime maps to dateAsserted MedicationUseTopic.Medication maps to medication[x] MedicationUseTopic.Category maps to category diff --git a/spec/cimi_medication_vs.txt b/cimi_medication_vs.txt similarity index 100% rename from spec/cimi_medication_vs.txt rename to cimi_medication_vs.txt diff --git a/spec/shr_immunization.txt b/shr_immunization.txt similarity index 98% rename from spec/shr_immunization.txt rename to shr_immunization.txt index ccd0376b..f669a6d9 100644 --- a/spec/shr_immunization.txt +++ b/shr_immunization.txt @@ -37,7 +37,7 @@ Based on: ProcedurePerformedStatement // Note: Can't inherit from MedicationUsedStatement because Status is bound to http://hl7.org/fhir/ValueSet/medication-statement-status in that class, can't be overriden to http://hl7.org/fhir/ValueSet/immunization-status Concept: MTH#C0580520 Description: "A vaccination administered to the subject." - SourceOfInformation value is type AnyPersonOrOrganization +// SourceOfInformation value is type AnyPersonOrOrganization StatementTopic is type ImmunizationTopic Status from http://hl7.org/fhir/ValueSet/immunization-status OccurrenceTimeOrPeriod value is type dateTime diff --git a/spec/shr_immunization_map.txt b/shr_immunization_map.txt similarity index 100% rename from spec/shr_immunization_map.txt rename to shr_immunization_map.txt diff --git a/spec/shr_immunization_vs.txt b/shr_immunization_vs.txt similarity index 100% rename from spec/shr_immunization_vs.txt rename to shr_immunization_vs.txt diff --git a/spec/LandingPageWound.html b/spec/LandingPageWound.html index a6f7f181..5d798752 100644 --- a/spec/LandingPageWound.html +++ b/spec/LandingPageWound.html @@ -1,13 +1,13 @@

- This is a preliminary version of the Skin and Wound FHIR Implementation Guide, based on the Clinical Information Modeling Initative (CIMI) class structure, and including CIMI logical models, FHIR profiles, value sets, and extensions.
+ This is the "CIMI-Lite" version of the Skin and Wound FHIR Implementation Guide, based on a simplified version of the CIMI class hierarchy.

Skin and Wound CIMI-FHIR Implementation Guide (IG)

-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non lacus tellus. Mauris in luctus ex. Donec nec leo mauris. Suspendisse nec velit ullamcorper, condimentum neque vel, consequat massa. Ut mattis fermentum facilisis. Etiam ut tortor tortor. Nam eget egestas dolor. Pellentesque dignissim purus mauris, id auctor purus iaculis sit amet. +Patient Care Work Group and the Clinical Information Modeling Initiative (CIMI) are conducting a demonstration project involving Skin and Wound (SW) Assessment clinical domain. The purpose of this project is to compare different ways to model and develop FHIR profiles for the SW domain. Several groups, using different modeling tools, are participating in this demonstation. The goal is to learn what tools and modeling styles are most effective.

Background

-Quisque sagittis viverra lorem eget blandit. Morbi laoreet nulla ac metus accumsan, ac tristique urna molestie. Aenean ut tortor vitae nulla luctus suscipit. Proin augue risus, laoreet sed fringilla a, cursus sollicitudin ligula. Donec sed accumsan magna. Duis at molestie ex. Sed id condimentum massa. Nam quis metus et orci tincidunt aliquam at ac ipsum. Aliquam nec enim diam. Donec ante metus, fermentum eu massa ac, lobortis mattis velit. +For several years and in the course of several for-comment ballots, CIMI has been developing class hierarchies with the intent of establishing a common basis for logical models of healthcare entities and statements. Up to this point, these models have remained largely in the realm of theory. Recognizing the importance of

Scope

diff --git a/spec/cimi_core.txt b/spec/cimi_core.txt index 3c5f3bad..5c347772 100644 --- a/spec/cimi_core.txt +++ b/spec/cimi_core.txt @@ -30,8 +30,7 @@ Based on: Content Concept: MTH#C1705654 Description: "An entry in a patient record or in a report, generally used for the documentation of clinical information about a subject of information such as a patient or a relative of the patient, asserted by a particular source, recorded, and potentially verified." 0..1 PersonOfRecord -0..1 SubjectIfNotPersonOfRecord -0..1 SourceOfInformation // should this be 0..*? +//0..1 SourceOfInformation //0..* Annotation //0..1 RecordStatus 0..1 Recorded @@ -44,18 +43,18 @@ Description: "An entry in a patient record or in a report, generally used for th Description: "The person this entry belongs to." Value: ref(Patient) - Element: SubjectIfNotPersonOfRecord +/* Element: SubjectIfNotPersonOfRecord Concept: MTH#C0449416 Description: "The subject of the observation, if someone other than the person of record (the patient) is the subject, for example, a relative of the person of record." Value: 0..1 ref(EntityOrRole) //string or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) 0..1 RelationshipToPersonOfRecord - + Element: SourceOfInformation Concept: MTH#C0449416 Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." Value: ref(EntityOrRole) //string or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) 0..1 RelationshipToPersonOfRecord - +*/ Element: RelationshipToPersonOfRecord Concept: MTH#C0015608 Description: "The relationship to the person of record." diff --git a/spec/cimi_encounter.txt b/spec/cimi_encounter.txt index b57d1b0d..f54c4ccd 100644 --- a/spec/cimi_encounter.txt +++ b/spec/cimi_encounter.txt @@ -16,11 +16,6 @@ Description: "A description of an interaction between a patient and healthcare p 0..* Diagnosis // SHR Extension 0..1 ref(ClinicalNote) - - Element: PatientOrGroup - Based on: SubjectIfNotPersonOfRecord - Description: "A subject of information that is constrained to be either a patient or a group." - Value: ref(Patient) or ref(Group) Element: EncounterClass Description: "Concepts representing classification of patient encounter such as ambulatory (outpatient), inpatient, emergency, home health or others due to local variations." diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index 83cd00c8..adfc92ae 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -19,6 +19,7 @@ Based on: EntityOrRole Concept: TBD Description: "Root class for entities such as people, organizations, and devices that have a separately identifiable existence." + EntryElement: Patient Based on: Role Concept: MTH#C1299487 diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index e90e3511..eeb48056 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -212,7 +212,7 @@ Observation has a value representing the result (answer), or an ExceptionValue i 0..0 StatementTopic // eliminate to avoid making everything more complicated 1..1 TopicCode ContextCode is SCT#424975005 "Record Entity" - SourceOfInformation value is type AnyPersonOrOrganization // mapped to performer (who made the observation) +//0..0 SourceOfInformation value is type AnyPersonOrOrganization // mapped to performer (who made the observation) 0..1 ResultValue 0..1 ExceptionValue from http://hl7.org/fhir/ValueSet/data-absent-reason if covered 0..1 DeltaFlag @@ -426,7 +426,7 @@ EntryElement: ConditionPresenceStatement Based on: AssertionPresenceStatement Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." - SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson +//0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson 1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation @@ -498,3 +498,21 @@ Description: "An entry concerning a patient where the result is a narrative text 1..1 Details // TODO: change to "description" to synch with CIMI + +EntryElement: FindingSiteConditionPresenceStatement +Based on: ConditionPresenceStatement +Concept: MTH#C1268086 +Description: "Presence of a distinct anatomical or pathological morphological feature or organizational pattern, acquired or innate. Examples include tissue types, tumors, and wounds. Body structures are continuants that allow observations of the same body structure to be related to be tracked over time." +0..1 FindingSiteIdentifier +1..* AnatomicalLocation + + Element: FindingSiteIdentifier + Concept: TBD + Description: "A human-readable identifier for the condition at the finding site, for example, a wound number or tumor identifier." + Value: string + +EntryElement: FindingSiteConditionAbsenceStatement // AssertionOfAbsenceStatement? +Based on: ConditionAbsenceStatement +Concept: TBD +Description: "Absence of a distinct anatomical or pathological morphological feature or organizational pattern, acquired or innate. Examples include tissue types, tumors, and wounds. Body structures are continuants that allow observations of the same body structure to be related to be tracked over time." +1..* AnatomicalLocation diff --git a/spec/cimi_topic_vs.txt b/spec/cimi_topic_vs.txt index 2014be2c..e27ff2d1 100644 --- a/spec/cimi_topic_vs.txt +++ b/spec/cimi_topic_vs.txt @@ -6,6 +6,7 @@ CodeSystem: LNC = http://loinc.org ValueSet: ConditionCategoryVS +Description: "A category assigned to the condition, for example, a disease, concern, symptom, adverse reaction, functional impairment, or structural abnormality." #disease "A disorder of structure or function in a human, animal, or plant, especially one that produces specific signs or symptoms or that affects a specific location and is not simply a direct result of physical injury." #functional_impairment "A disability experienced by the subject." #structural_abnormality "An abnormality of physiologic structure." diff --git a/spec/shr_condition.txt b/spec/shr_condition.txt deleted file mode 100644 index acbdbc14..00000000 --- a/spec/shr_condition.txt +++ /dev/null @@ -1,53 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: shr.condition -Description: "The SHR Condition domain contains additional definitions used to capture assessments, diagnoses, and judgments related to problems reported or experienced by a subject." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity - -CodeSystem: SCT = http://snomed.info/sct -CodeSystem: MTH = http://ncimeta.nci.nih.gov - - -EntryElement: FindingSiteConditionPresenceStatement -Based on: ConditionPresenceStatement -Concept: MTH#C1268086 -Description: "Presence of a distinct anatomical or pathological morphological feature or organizational pattern, acquired or innate. Examples include tissue types, tumors, and wounds. Body structures are continuants that allow observations of the same body structure to be related to be tracked over time." -0..1 FindingSiteIdentifier -1..* AnatomicalLocation - - Element: FindingSiteIdentifier - Concept: TBD - Description: "A human-readable identifier for the condition at the finding site, for example, a wound number or tumor identifier." - Value: string - -EntryElement: FindingSiteConditionAbsenceStatement // AssertionOfAbsenceStatement? -Based on: ConditionAbsenceStatement -Concept: TBD -Description: "Absence of a distinct anatomical or pathological morphological feature or organizational pattern, acquired or innate. Examples include tissue types, tumors, and wounds. Body structures are continuants that allow observations of the same body structure to be related to be tracked over time." -1..* AnatomicalLocation - -EntryElement: DiseaseProgression -Based on: Observation -Concept: MTH#C0421176 "Progression" -Description: "A finding related to the current trend of a particular existing disease. This concept is most often used for chronic and incurable diseases where the status and trendline of the disease is an important determinant of therapy and prognosis. The specific disorder being evaluated must be cited in the Focus_Reference or Focus_CodeableConcept as a reference to a Condition." - ResultValue value is type CodeableConcept - ResultValue from ProgressionVS - TopicCode is MTH#C0421176 "Progression" -0..* ProgressionEvidence -// "ProgressionEvidence" is somewhat related to FindingMethod, which represents the test or procedure used to generate the result; it is typically a LOINC code (0..1) - Focus.CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered -0..0 Specimen -0..0 EvaluationComponent -0..0 Precondition -0..0 ReferenceRange // applies to a quantitative measurement only - - Element: ProgressionEvidence - Description: "The type of evidence considered in determining disease progression." - Value: CodeableConcept from ProgressionEvidenceVS - - - - -// - - - \ No newline at end of file diff --git a/spec/shr_condition_vs.txt b/spec/shr_condition_vs.txt deleted file mode 100644 index d49a63e4..00000000 --- a/spec/shr_condition_vs.txt +++ /dev/null @@ -1,42 +0,0 @@ -Grammar: ValueSet 5.0 -Namespace: shr.condition - -CodeSystem: SCT = http://snomed.info/sct -CodeSystem: MTH = http://ncimeta.nci.nih.gov - - -ValueSet: ProgressionVS -MTH#C0677874 "Complete response or remission; no measurable or observable evidence of cancer." -MTH#C0015250 "Complete resection/excision of cancerous tumor" -MTH#C1272745 "Improving, responding to treatment" -MTH#C0205360 "Stable, neither improving nor worsening" -MTH#C1546960 "Worsening, disease progressing" -MTH#C3858734 "Insufficient evidence" - -ValueSet: ProgressionEvidenceVS -MTH#C0011923 "Progression determined based on imaging" -MTH#C0030664 "Progression determined based on pathology" -MTH#C1457887 "Progression determined based on physical signs or symptoms" -MTH#C0031809 "Progression determined based on physical examination" -MTH#C0005516 "Progression determined based on biomarkers" - - - -/* Save for later -ValueSet: AssessmentTypeVS -Description: "A code describing the type of assessment activity, e.g. diagnosis, prognosis, disease progression, healing, toxicity, treatment efficacy." -MTH#C0033325 "Prognosis - a prediction of the probable outcome of a disease based on a individual's condition and the usual course of the disease as seen in similar situations" -MTH#C0011900 "Diagnosis - The determination of the nature and/or extent of a disease or condition, or the distinguishing of one disease or condition from another. The assessment may be made through physical examination, laboratory tests, or the likes. Computerized programs may be used to enhance the decision-making process." -MTH#C0421176 "Assessment of disease progression" -MTH#C2004454 "Assessment of recovery process, from surgery, therapy, or similar treatment." -MTH#C0879626 "Assessment of adverse effects of a treatment." -MTH#C0087113 "Assessment of the effectiveness of a treatment." -MTH#C4040556 "Assessment of risk for a disease." - - -ValueSet: EvidenceQualityVS -#compelling_evidence "Compelling evidence; indicates that assessments are based on high-quality information from multiple sources. High quality evidence does not imply that the assessment is a fact or certainty." -#suggestive_evidence "Suggestive evidence; indicates that assessments are based on credible and plausible information, but not of sufficient quality or corroborated sufficiently to warrant a higher level of confidence." -#weak_evidence "Weak evidence, its credibility and/or plausibility is uncertain, fragmented or poorly corroborated to make solid judgments." -MTH#C0332125 "No evidence" -*/ \ No newline at end of file diff --git a/spec/shr_core.txt b/spec/shr_core.txt index ded13ac5..a9b6936d 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -175,8 +175,8 @@ Description: "An interval defined by a quantitative upper and/or lower bound. On Element: Ratio Concept: MTH#C0456603 Description: "A unit of measurement for the quotient of the amount of one entity to another." -1..1 Numerator -1..1 Denominator +0..1 Numerator +0..1 Denominator Element: Numerator Concept: MTH#C2825219 diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 05d5220c..180dabcf 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -205,7 +205,6 @@ includes 0..1 DailyWorkHours Element: SocialHistoryObservation Based on: Observation Description: "A simplified observation for social histories." -0..0 SubjectIfNotPersonOfRecord // value is type ref(RelatedPerson) 0..0 PersonOfRecord 0..0 Focus Category is OBSCAT#social-history @@ -214,7 +213,7 @@ Description: "A simplified observation for social histories." 0..0 Recorded 0..0 Signed 0..0 ContextCode -0..0 SourceOfInformation +//0..0 SourceOfInformation 0..0 FindingMethod 0..0 AnatomicalLocation 0..0 Precondition @@ -232,14 +231,13 @@ Description: "A simplified observation for social histories." Element: FocalSubject Description: "The focus of the observation, if someone other than the person of record (subject)." - 1..1 RelationshipToPersonOfRecord from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype + 1..1 RelationshipToPersonOfRecord from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered Element: CodedSocialHistoryObservation Based on: SocialHistoryObservation Description: "The result of social history questions, whose answer is expressed as a code." ResultValue value is type CodeableConcept -0..0 ReferenceRange diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index d6dca512..890b883a 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -4,7 +4,7 @@ Target: FHIR_STU_3 // do not map to US Core Results -- Brett says that's only for labs SocialHistoryObservation maps to Observation: - PersonOfRecord maps to subject +// PersonOfRecord maps to subject TopicCode maps to code Category maps to category EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) @@ -15,9 +15,9 @@ SocialHistoryObservation maps to Observation: EvaluationComponent.ReferenceRange maps to component.referenceRange // constrain related to 0..0 ResultValue maps to value[x] - ExceptionValue maps to dataAbsentReason +// ExceptionValue maps to dataAbsentReason RelevantTime maps to effective[x] - Encounter maps to context +// Encounter maps to context Focus maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject // constrain implicitRules to 0..0 // constrain contained to 0..0 diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index 12036368..132b2a96 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -340,6 +340,28 @@ The is currently no LOINC code for Mammaprint test." Specimen is type BreastSpecimen +EntryElement: DiseaseProgression +Based on: Observation +Concept: MTH#C0421176 "Progression" +Description: "A finding related to the current trend of a particular existing disease. This concept is most often used for chronic and incurable diseases where the status and trendline of the disease is an important determinant of therapy and prognosis. The specific disorder being evaluated must be cited in the Focus_Reference or Focus_CodeableConcept as a reference to a Condition." + ResultValue value is type CodeableConcept + ResultValue from ProgressionVS + TopicCode is MTH#C0421176 "Progression" +0..* ProgressionEvidence +// "ProgressionEvidence" is somewhat related to FindingMethod, which represents the test or procedure used to generate the result; it is typically a LOINC code (0..1) + Focus.CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered +0..0 Specimen +0..0 EvaluationComponent +0..0 Precondition +0..0 ReferenceRange // applies to a quantitative measurement only + + Element: ProgressionEvidence + Description: "The type of evidence considered in determining disease progression." + Value: CodeableConcept from ProgressionEvidenceVS + + + + /* Element: Aneusomy Based on: CodedEvaluationComponent diff --git a/spec/shr_oncology_vs.txt b/spec/shr_oncology_vs.txt index a20ac9b5..003c51c5 100644 --- a/spec/shr_oncology_vs.txt +++ b/spec/shr_oncology_vs.txt @@ -212,6 +212,22 @@ SCT#4901000175103 "Moderate intensity (qualifier value)" SCT#450511000124101 "High intensity (qualifier value)" +ValueSet: ProgressionVS +MTH#C0677874 "Complete response or remission; no measurable or observable evidence of cancer." +MTH#C0015250 "Complete resection/excision of cancerous tumor" +MTH#C1272745 "Improving, responding to treatment" +MTH#C0205360 "Stable, neither improving nor worsening" +MTH#C1546960 "Worsening, disease progressing" +MTH#C3858734 "Insufficient evidence" + +ValueSet: ProgressionEvidenceVS +MTH#C0011923 "Progression determined based on imaging" +MTH#C0030664 "Progression determined based on pathology" +MTH#C1457887 "Progression determined based on physical signs or symptoms" +MTH#C0031809 "Progression determined based on physical examination" +MTH#C0005516 "Progression determined based on biomarkers" + + /* NOT USED diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 00e389d6..7c19a48e 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -66,7 +66,9 @@ See https://s.details.loinc.org/LOINC/39135-9.html?sections=Comprehensive EntryElement: WoundPresenceAssertion Based on: FindingSiteConditionPresenceStatement Concept: SCT#416462003 "Wound (disorder)" -Description: "A determination that a wound that exists at a particular body site. Multiple wound assessments can be associated with a single wound." +Description: "A determination that a wound that exists at a particular body site. +The WoundIdentifier serves as a link between this assertion and assessments of the wound that might occur at later times. Multiple wound assessments can be associated with a single wound." +0..0 StatementTopic Onset value is type dateTime // 85585-8 Date of Onset {mm/dd/yyyy} Abatement value is type dateTime // 88878-4 Date of abatement {mm/dd/yyyy} 1..1 Category is OBSCAT#exam @@ -83,8 +85,10 @@ Description: "A determination that a wound that exists at a particular body site EntryElement: WoundAbsenceAssertion Based on: FindingSiteConditionAbsenceStatement -Description: "Documents the absence of a wounds of a particular type at a given body site. If the topic is SCT#416462003 (Wound) then there is no wound of any type at the site. No wounds anywhere on the body can be indicated using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicLocation (the entire skin code should be added to the wound anatomic location value set)." -1..1 TopicCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered +Description: "Documents the absence of a wound at a given body site. +No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicLocation." +0..0 StatementTopic +1..1 TopicCode is SCT#416462003 "Wound (disorder)" 1..1 Category is OBSCAT#exam 1..1 WoundAnatomicLocation @@ -130,13 +134,13 @@ Description: "Group of observations regarding the properties and severity of a w Focus value is type string // WoundNumber Media is type PhotographicImage // 72170-4 Photographic image [Media] EvaluationComponent -includes 0..1 EpisodeOfWound // very similar to Episodicity or ClinicalStatus, but value set is different. -includes 0..1 PeriwoundDescription // 72301-5 Description of Periwound -includes 0..* VisibleInternalStructure //89250-5 Device or anatomic structure visible in wound -includes 0..1 PressureUlcerAssociation // missing LOINC code -includes 0..1 TunnelingPresentOrAbsent // 72298-3 Tunneling of Wound R present/absent -includes 0..1 UnderminingPresentOrAbsent // 72295-9 Undermining of Wound R -includes 0..1 ExudatePresentOrAbsent // 89259-6 Presence of wound exudate +includes 0..1 WoundEpisode // very similar to Episodicity or ClinicalStatus, but value set is different. +includes 0..1 WoundPeriwoundDescription // 72301-5 Description of Periwound +includes 0..* WoundVisibleInternalStructure //89250-5 Device or anatomic structure visible in wound +includes 0..1 WoundPressureUlcerAssociation // missing LOINC code +includes 0..1 WoundTunnelingPresentOrAbsent // 72298-3 Tunneling of Wound R present/absent +includes 0..1 WoundUnderminingPresentOrAbsent // 72295-9 Undermining of Wound R +includes 0..1 WoundExudatePresentOrAbsent // 89259-6 Presence of wound exudate PanelMembers.Observation includes 0..* WoundBedAppearanceObservation //89254-7 Wound bed appearance observation includes 0..* WoundBedColorObservation // xxxx Wound color observation @@ -146,46 +150,46 @@ includes 0..* WoundUnderminingObservation // 89258-8 Wound undermining observa includes 0..1 WoundExudateObservation // 72292-6 Wound exudate observation includes 0..1 WoundSizeObservation // 72287-6 Wound size observation - Element: EpisodeOfWound + Element: WoundEpisode Based on: CodedEvaluationComponent Concept: LNC#89252-1 "Episode of Wound" Description: "Wound episode refers to a period of the wound, an incident in the course of a wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.4/expansion - Element: PeriwoundDescription + Element: WoundPeriwoundDescription Based on: CodedEvaluationComponent Concept: LNC#72301-5 Description: "A description of the skin around the wound (periwound). Color, induration, warmth and edema should be assessed. Redness of the surrounding skin can be indicative of unrelieved pressure. Irritation of the surrounding skin can result from exposure to feces or urine, a reaction to the dressing or tape, or inappropriate removal of dressing or tape. Redness, tenderness, warmth and swelling are classical clinical signs of infection. [Reference: Brown, P., 2009]" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.2/expansion //could be from http://loinc.org/vs/LL2216-1 - Element: VisibleInternalStructure + Element: WoundVisibleInternalStructure Based on: CodedEvaluationComponent Concept: LNC#89250-5 Description: "Exposed body structures, devices, and/or foreign bodies visible by the naked eye in a wound." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.1/expansion // should be from http://loinc.org/vs/LL4935-4 - Element: PressureUlcerAssociation + Element: WoundPressureUlcerAssociation Based on: CodedEvaluationComponent Concept: TBD Description: "Is the wound associated with a device or pressure point?" Value: CodeableConcept from YesNoUnknownVS - Element: TunnelingPresentOrAbsent + Element: WoundTunnelingPresentOrAbsent Based on: CodedEvaluationComponent Concept: LNC#72298-3 Description: "The presence or absence of wound tunneling." Value: CodeableConcept from PresentAbsentVS // LOINC: should re-use the same Snomed codes for Present-Absent - Element: UnderminingPresentOrAbsent + Element: WoundUnderminingPresentOrAbsent Based on: CodedEvaluationComponent Concept: LNC#72295-9 Description: "The presence or absence of wound undermining." Value: CodeableConcept from PresentAbsentVS - Element: ExudatePresentOrAbsent + Element: WoundExudatePresentOrAbsent Based on: CodedEvaluationComponent Concept: LNC#89259-6 Description: "The presence or absence of wound exudate." @@ -251,6 +255,7 @@ EntryElement: WoundEdgeObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89256-2 Description: "The state of the tissue at the edge of the wound." + TopicCode is LNC#89256-2 EvaluationComponent includes 1..1 WoundEdgeDescription includes 0..1 WoundEdgeColor @@ -273,6 +278,7 @@ EntryElement: WoundTunnelingObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89257-0 Description: "A discharging blind-ended track that extends from the surface of an organ to an underlying area or abscess cavity. The track is invariably lined with granulation tissue. In chronic cases this may be augmented with epithelial tissue." + TopicCode is LNC#89257-0 EvaluationComponent includes 0..1 WoundTunnelLength includes 0..1 WoundTunnelClockDirection @@ -298,6 +304,7 @@ EntryElement: WoundUnderminingObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89258-8 Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage around the wound margin. Undermining are narrow sinus tracts away from the wound margins and go downward into the wound." + TopicCode is LNC#89258-8 EvaluationComponent includes 0..1 WoundUnderminingLength includes 0..1 WoundUnderminingClockDirection @@ -319,12 +326,13 @@ EntryElement: WoundExudateObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72292-6 Description: "Description of the fluid produced by a wound." + TopicCode is LNC#72292-6 EvaluationComponent includes 0..1 WoundExudateAmount includes 0..1 WoundExudateVolume -includes 1..1 ExudateAppearance -includes 1..1 ExudateColor -includes 0..1 ExudateOdor +includes 1..1 WoundExudateAppearance +includes 1..1 WoundExudateColor +includes 0..1 WoundExudateOdor // LOINC: Wound area should be in wound size panel, not wound exudate panel @@ -340,20 +348,20 @@ includes 0..1 ExudateOdor Description:"Appearance of exudate from wound" Value: Quantity with units UCUM#mL - Element: ExudateAppearance + Element: WoundExudateAppearance Based on: CodedEvaluationComponent Concept: LNC#72290-0 Description:"Appearance of exudate from wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.11/expansion //could be from http://loinc.org/vs/LL2220-3 - Element: ExudateColor + Element: WoundExudateColor Based on: CodedEvaluationComponent Concept: LNC#72289-2 Description:"Color of exudate from wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.12/expansion // could be from http://loinc.org/vs/LL2219-5 - Element: ExudateOdor + Element: WoundExudateOdor Based on: CodedEvaluationComponent Concept: LNC#72288-4 Description:"Odor of exudate from wound" @@ -364,10 +372,11 @@ EntryElement: WoundSizeObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72287-6 Description: "The estimated or measured dimensions of a wound." + TopicCode is LNC#72287-6 EvaluationComponent includes 1..1 WoundLength includes 1..1 WoundWidth -includes 1..1 WoundDepth +includes 0..1 WoundDepth includes 0..1 WoundArea Element: WoundLength From 74747ee0dd14b0bc831d6be0be94c82284728403 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sat, 11 Aug 2018 21:47:23 -0400 Subject: [PATCH 029/289] Many bug fixes --- cimi_adverse.txt | 4 +- cimi_adverse_map.txt | 2 +- cimi_allergy_map.txt | 2 +- cimi_medication.txt | 3 +- spec/LandingPageWound.html | 12 +++++- spec/cimi_core.txt | 6 +++ spec/cimi_datatypes.txt | 73 +++++++++++++++++++++++++++++++ spec/cimi_datatypes_map.txt | 14 ++++++ spec/cimi_element.txt | 7 ++- spec/cimi_entity.txt | 12 +++--- spec/cimi_entity_map.txt | 2 +- spec/cimi_statement.txt | 31 ++++++-------- spec/cimi_statement_map.txt | 3 +- spec/cimi_statement_vs.txt | 1 + spec/cimi_topic.txt | 3 +- spec/shr_base.txt | 2 +- spec/shr_core.txt | 85 +------------------------------------ spec/shr_core_map.txt | 10 ----- spec/shr_occupation.txt | 7 ++- spec/shr_occupation_map.txt | 1 - spec/shr_oncology.txt | 8 ++-- spec/shr_research.txt | 4 +- spec/shr_research_map.txt | 2 +- spec/shr_wound.txt | 62 +++++++++++++++++++-------- 24 files changed, 194 insertions(+), 162 deletions(-) create mode 100644 spec/cimi_datatypes.txt create mode 100644 spec/cimi_datatypes_map.txt diff --git a/cimi_adverse.txt b/cimi_adverse.txt index 9966f59a..bfac5f52 100644 --- a/cimi_adverse.txt +++ b/cimi_adverse.txt @@ -14,7 +14,7 @@ Description: "An entry in the patient record documenting an untoward or unexpect 1..1 Seriousness from SeriousnessVS // to be replaced with http://hl7.org/fhir/ValueSet/adverse-event-seriousness in FHIR 4 //0..1 TBD "PatternOfEvent" // from STDM 0..1 Outcome from http://hl7.org/fhir/ValueSet/adverse-event-outcome -0..1 Details // aka description +0..1 AdditionalText // aka description 0..* CausalAttribution 0..* ActionTaken 0..1 AssociatedStudy @@ -40,7 +40,7 @@ Description: "An entry in the patient record documenting an untoward or unexpect Element: ActionTaken Concept: TBD Description: "The action taken as a result of the adverse reaction. May include changing or discontinuing medication, reducing dose, etc." - 1..1 Details + 1..1 AdditionalText 0..1 ref(ActionStatement) // such as MedicationChangeStatement Element: AssociatedStudy diff --git a/cimi_adverse_map.txt b/cimi_adverse_map.txt index 8dc60e5d..d1cecc61 100644 --- a/cimi_adverse_map.txt +++ b/cimi_adverse_map.txt @@ -6,7 +6,7 @@ AdverseEventEntry maps to AdverseEvent: Signed.Value.EntityOrRole maps to recorder // EntityOrRole is the name of the property; don't say Signed.Value.Role Type maps to type - Details maps to description + AdditionalText maps to description PersonOfRecord maps to subject AssociatedStudy maps to study Seriousness maps to seriousness diff --git a/cimi_allergy_map.txt b/cimi_allergy_map.txt index 63ab100f..91d4d890 100644 --- a/cimi_allergy_map.txt +++ b/cimi_allergy_map.txt @@ -20,7 +20,7 @@ AdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/Struc AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution.RouteIntoBody maps to reaction.exposureRoute AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution maps to reaction.substance AdverseReactionPresenceStatement.AdverseReactionTopic.Manifestation.Value maps to reaction.manifestation - AdverseReactionPresenceStatement.AdverseReactionTopic.Details maps to reaction.description + AdverseReactionPresenceStatement.AdverseReactionTopic.AdditionalText maps to reaction.description AdverseReactionPresenceStatement.Onset maps to reaction.onset diff --git a/cimi_medication.txt b/cimi_medication.txt index 55002bb8..5b45cded 100644 --- a/cimi_medication.txt +++ b/cimi_medication.txt @@ -133,8 +133,7 @@ Concept: MTH#C2364172 Description: "The degree (frequency) that the stated treatment plan, prescription, or protocol was followed. A statement of the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency." ResultValue from QualitativeFrequencyVS TopicCode is MTH#C2364172 - Focus value is type ref(EntityOrRole) - Focus.EntityOrRole is type ref(Medication) +1..1 Medication 0..* MedicationNonAdherenceReason Element: MedicationNonAdherenceReason diff --git a/spec/LandingPageWound.html b/spec/LandingPageWound.html index 5d798752..eb69b4e1 100644 --- a/spec/LandingPageWound.html +++ b/spec/LandingPageWound.html @@ -18,7 +18,17 @@

Relationship to CIMI

Known Issues and Limitations

-Sed ligula justo, vehicula eu purus et, porttitor congue nibh. Aliquam efficitur eros a nulla varius, in lacinia augue bibendum. In mi erat, rutrum id eleifend eget, scelerisque a arcu. Cras vel posuere urna. Mauris condimentum nunc orci, ut lacinia sem placerat sit amet. Suspendisse congue egestas ipsum quis efficitur.

+ +General attributes are replaced by specific attributes with specific LOINC codes; for example, in WoundPresenceAssertion, the attribute ConditionCause is inherited from ConditionPresenceAssertion. But when applied to wounds, the attribute should be named WoundTypeEtiology and identified by the LOINC code LNC#11373-8 (Injury Cause). It's easy to bind a new value set, but not so easy to change the attribute name or apply the model meaning code in FHIR. + +DeltaFlag (CIMI Name) versus WoundTrend (SW LOINC 89253-9 Trend). WoundTrend answers (LL4938-8) are Improved, Deteriorated, Stablized, Resolved. +DeltaFlag is type WoundTrend +It isn't apparent why WoundTrend would be treated differently that other evaluation components; it is an attribute rather than a component. It is because DeltaFlag is defined in EvaluationResultRecordedContext. Seems rather arbitrary. + +Interpretation is type WoundAssessmentInterpretation + + +

Content of Ballot Documents

Aliquam justo est, mollis vel semper sit amet, consequat eu lorem. Phasellus vitae nunc in nisi hendrerit porttitor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut viverra lacinia consequat. Fusce eget dui sed ex rhoncus mattis. Duis dignissim ut massa consequat tristique. Cras sollicitudin maximus eros at pulvinar. diff --git a/spec/cimi_core.txt b/spec/cimi_core.txt index 5c347772..90addd2c 100644 --- a/spec/cimi_core.txt +++ b/spec/cimi_core.txt @@ -37,6 +37,7 @@ Description: "An entry in a patient record or in a report, generally used for th 0..1 Signed // Author //0..* Cosigned //0..* Verified +0..1 AdditionalText Element: PersonOfRecord Concept: TBD @@ -89,3 +90,8 @@ Description: "An entry in a patient record or in a report, generally used for th Element: RecordedOn Description: "The time of the attribution action." Value: instant + + Element: AdditionalText + Concept: MTH#C0947611 + Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." + Value: string // change to language-text \ No newline at end of file diff --git a/spec/cimi_datatypes.txt b/spec/cimi_datatypes.txt new file mode 100644 index 00000000..7b1c51f7 --- /dev/null +++ b/spec/cimi_datatypes.txt @@ -0,0 +1,73 @@ +Grammar: DataElement 5.0 +Namespace: cimi.datatypes +Description: "The CIMI Data Types are the fundamental non-primitive types of the CIMI model. All data types in CIMI inherit from the non-archetypable DataType abstract class." +Uses: cimi.element, cimi.topic, cimi.statement, shr.core + +Element: EmbeddedContent +Concept: TBD +Description: "Abstract class defining the common metadata of all types of encapsulated data, such as images." + +Element: ParsableContent +Based on: EmbeddedContent +Concept: TBD +Description: "A string that follows a formal syntax and can be analyzed and broken into meaningful parts." +Value: string +1..1 Formalism + + Element: Formalism + Concept: TBD + Description: "The system of formal syntax or interpretation associated with parsable content." + Value: CodeableConcept + +Element: Media +Based on: EmbeddedContent +Concept: TBD +Description: "A file that contains audio, video, image, or similar content." +0..1 BinaryData +0..1 ContentType +0..1 Language +0..1 ResourceLocation +0..1 ResourceSize +0..1 Hash +0..1 Title +0..1 CreationTime + + Element: BinaryData + Concept: TBD + Description: "The data itself." + Value: base64Binary + + Element: ContentType + Concept: TBD + Description: "Mime type of the content, with charset etc." + Value: code + + Element: Language + Concept: MTH#C0023008 + Description: "A human language, spoken or written." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/languages if covered + + Element: ResourceLocation + Concept: TBD + Description: "URI where data can be found." + Value: uri + + Element: ResourceSize + Concept: TBD + Description: "Number of bytes of content in the resource (if url provided)" + Value: unsignedInt + + Element: Hash + Concept: TBD + Description: "A hash code of the data (sha-1, base64ed)" + Value: base64Binary + + Element: CreationTime + Concept: MTH#C3669169 + Description: "The point in time when the information was recorded in the system of record." + Value: dateTime // we can map to instant from dateTime + +Element: PhotographicImage +Based on: Media +Concept: LNC#72170-4 + // ContentType from ImageMimeTypeVS if covered diff --git a/spec/cimi_datatypes_map.txt b/spec/cimi_datatypes_map.txt new file mode 100644 index 00000000..50b8d5c6 --- /dev/null +++ b/spec/cimi_datatypes_map.txt @@ -0,0 +1,14 @@ +Grammar: Map 5.1 +Namespace: cimi.datatypes +Target: FHIR_STU_3 + + +Media maps to Attachment: + BinaryData maps to data + ContentType maps to contentType + Language maps to language + ResourceLocation maps to url + ResourceSize maps to size + Hash maps to hash + Title maps to title + CreationTime maps to creation \ No newline at end of file diff --git a/spec/cimi_element.txt b/spec/cimi_element.txt index f764efce..ff709fa0 100644 --- a/spec/cimi_element.txt +++ b/spec/cimi_element.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.element Description: "The Element Package defines reusable data elements that are used across multiple packages." -Uses: shr.core, shr.base, cimi.core, cimi.entity +Uses: shr.core, shr.base, cimi.core, cimi.entity, cimi.datatypes Element: Annotation @@ -151,3 +151,8 @@ Description: "A name used by a human being, written as it would be typically exp Concept: LNC#45395-1, SCT#715196001 Description: "Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the end of the name." Value: string + +Element: Category +Concept: TBD +Description: "The type, kind, or class of this item." +Value: CodeableConcept diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index adfc92ae..e8ffb228 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -1,12 +1,12 @@ Grammar: DataElement 5.0 Namespace: cimi.entity Description: "The namespace containing definitions for basic classes in CIMI." -Uses: shr.core, cimi.core, cimi.element, cimi.statement +Uses: shr.core, cimi.core, cimi.element, cimi.statement, cimi.datatypes Abstract Element: EntityOrRole Based on: Independent -Description: "Parent class entity and role." +Description: "CIMI parent class for both Entity and Role." //Identifier @@ -34,8 +34,8 @@ Description: "A person in the role of a patient, including extended demographic 0..1 MothersMaidenName 0..1 FathersName 0..1 SocialSecurityNumber -0..1 DriversLicenseNumber -0..* PassportNumber +//0..1 DriversLicenseNumber +//0..* PassportNumber 0..1 MedicalInterpreterNeeded 0..1 Deceased @@ -268,7 +268,7 @@ Description: "Any matter of defined composition that has discrete existence, who 1..1 Type should be from http://hl7.org/fhir/ValueSet/substance-code 0..* Category from http://hl7.org/fhir/ValueSet/substance-category if covered 0..1 ActiveFlagAsaCodeableConcept from http://hl7.org/fhir/ValueSet/substance-status -0..1 Details +0..1 AdditionalText 0..* Ingredient Element: Ingredient @@ -609,7 +609,7 @@ Concept: TBD Description: "Direct container of specimen (tube/slide, etc.)" 0..1 Type //"Kind of container holding the specimen - e.g. a vial or well." 0..1 Identifier -0..1 Details +0..1 AdditionalText 0..1 Capacity 0..1 SpecimenQuantity 0..* Additive diff --git a/spec/cimi_entity_map.txt b/spec/cimi_entity_map.txt index 0a028d1d..dc88c8b1 100644 --- a/spec/cimi_entity_map.txt +++ b/spec/cimi_entity_map.txt @@ -120,7 +120,7 @@ Specimen maps to Specimen: // SpecimenCollectionPerformed.Method maps to collection.method // SpecimenCollectionPerformed.RelatedRequest.Value maps to request SpecimenContainer.Identifier maps to container.identifier - SpecimenContainer.Details maps to container.description + SpecimenContainer.AdditionalText maps to container.description SpecimenContainer.Type maps to container.type SpecimenContainer.Capacity maps to container.capacity SpecimenContainer.SpecimenQuantity maps to container.specimenQuantity diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index eeb48056..da99bd11 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.statement Description: "The namespace containing cimi-derived classes representing complete clinical statements. In this specification, these classes derive from the StatementTopic class hierarchy, not ClinicalStatement, which is a significant departure from CIMI. This simplifies the resulting logical models." -Uses: shr.core, cimi.core, cimi.element, cimi.topic, cimi.entity, cimi.encounter +Uses: shr.core, cimi.core, cimi.element, cimi.topic, cimi.entity, cimi.encounter, cimi.datatypes CodeSystem: SCT = http://snomed.info/sct @@ -174,7 +174,6 @@ Description: "Any clinical statement representing a finding." //1..1 FindingStatus 0..1 RelevantTime // CIMI's ClinicallyRelevantTime isn't a good name when it comes to employment and other life history events 0..1 FindingMethod -0..1 Details 0..* Media Element: Interpretation @@ -219,8 +218,7 @@ Observation has a value representing the result (answer), or an ExceptionValue i //0..1 Issued //0..* Observer 1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered -0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? -0..1 Focus +0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? 0..1 Device 0..1 Specimen 0..* Precondition @@ -228,13 +226,8 @@ Observation has a value representing the result (answer), or an ExceptionValue i 0..* EvaluationComponent 0..1 PanelMembers 0..1 FindingMethod -0..1 Details 0..* Media - Element: Focus - Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. For example, the finding could deal with a condition, a behavior, a wound, or tumor." - Value: string or CodeableConcept or Identifier or ref(EntityOrRole) - Element: EvaluationComponent Description: "A simplified, non-separable evaluation consisting of a finding code (represented by the Concept), value (or exception value), reference range, and interpretation. The subject of the evaluation component is the same as in the parent evaluation." Value: (Quantity or CodeableConcept or string or Range or Ratio or Media or time or dateTime or TimePeriod or IntegerQuantity) @@ -431,9 +424,10 @@ Description: "A condition that is or may be present in a subject. 'Condition' is 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation 0..* ConditionCause +0..1 ConditionIdentifier 1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical 0..1 WhenClinicallyRecognized -0..1 Preexisting +0..1 PresentOnAdmission 0..1 Severity from http://hl7.org/fhir/ValueSet/condition-severity 0..1 Criticality from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality 0..1 Stage @@ -443,6 +437,11 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Value: CodeableConcept or ref(Entity) or ref(ClinicalStatement) // probably other attributes needed, such as likelihood or type of cause + Element: ConditionIdentifier + Concept: TBD + Description: "A human-readable identifier for the condition at the finding site, for example, a wound number or tumor identifier." + Value: string + Element: ClinicalStatus Concept: TBD Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." @@ -453,7 +452,7 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Description: "The time at which a condition or condition was first identified in a healthcare context." Value: date - Element: Preexisting + Element: PresentOnAdmission Concept: LNC#89251-3 "Condition present on admission" Description: "If the problem or condition existed before the current episode of care." Value: CodeableConcept from YesNoUnknownVS @@ -492,10 +491,10 @@ Description: "A finding that a condition is or was not present in the subject at EntryElement: ClinicalNote Based on: FindingStatement Concept: MTH#C0747978 "Progress Note" -Description: "An entry concerning a patient where the result is a narrative text. Can be related to a specific Focus, such as a condition; and evidence and interpretation from FindingTopic." +Description: "An entry concerning a patient where the result is a narrative text." 1..1 PersonOfRecord ContextCode is SCT#424975005 "Record Entity" -1..1 Details // TODO: change to "description" to synch with CIMI +1..1 AdditionalText // make required @@ -503,14 +502,8 @@ EntryElement: FindingSiteConditionPresenceStatement Based on: ConditionPresenceStatement Concept: MTH#C1268086 Description: "Presence of a distinct anatomical or pathological morphological feature or organizational pattern, acquired or innate. Examples include tissue types, tumors, and wounds. Body structures are continuants that allow observations of the same body structure to be related to be tracked over time." -0..1 FindingSiteIdentifier 1..* AnatomicalLocation - Element: FindingSiteIdentifier - Concept: TBD - Description: "A human-readable identifier for the condition at the finding site, for example, a wound number or tumor identifier." - Value: string - EntryElement: FindingSiteConditionAbsenceStatement // AssertionOfAbsenceStatement? Based on: ConditionAbsenceStatement Concept: TBD diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index 56facbf2..7ee950ac 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -14,7 +14,7 @@ Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-obse // Verified maps to extension TopicCode maps to code FindingMethod maps to method - Details maps to comment + AdditionalText maps to comment // Media maps to extension Category maps to category AnatomicalLocation maps to bodySite @@ -34,6 +34,7 @@ Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-obse EvaluationComponent.Interpretation maps to component.interpretation EvaluationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member + PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) ResultValue maps to value[x] ExceptionValue maps to dataAbsentReason diff --git a/spec/cimi_statement_vs.txt b/spec/cimi_statement_vs.txt index 7efeb03a..8206f66d 100644 --- a/spec/cimi_statement_vs.txt +++ b/spec/cimi_statement_vs.txt @@ -86,6 +86,7 @@ ValueSet: DeltaFlagVS Concept: MTH#C1705241 Description: "Indicators for degree of change (delta) from the last or previous measurement." Includes codes descending from SCT#263703002 "Changed status (qualifier value)" +// has values decreased, decreased relative to previous, improved, increased, increased relative to previous, maintained stablized, worse // Also see LOINC #89253-9 Trend ... has values improved, deteriorated, stablized, resolved /* diff --git a/spec/cimi_topic.txt b/spec/cimi_topic.txt index 3f790b4e..bde37a84 100644 --- a/spec/cimi_topic.txt +++ b/spec/cimi_topic.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.topic Description: "The Topic Core package contains the top-level specializations of the Statement Topic class, namely, the FindingTopic, ActionTopic (ProcedureTopic), and EventTopic classes." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.entity, cimi.statement +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.entity, cimi.statement, cimi.datatypes Element: StatementTopic Based on: NonIndependent @@ -30,7 +30,6 @@ Concept: TBD Description: "Base class - - for all kinds of determinations: questions/answers, conditions, observations, allergies, and other findings. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." 0..1 FindingMethod -0..1 Details 0..* Media diff --git a/spec/shr_base.txt b/spec/shr_base.txt index da2fd301..228060ed 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.base Description: "Contains the SHR Entry definition -- the metadata added to any independent item in the SHR." -Uses: shr.core, cimi.entity, cimi.statement +Uses: shr.core, cimi.entity, cimi.statement, cimi.datatypes CodeSystem: MTH = http://ncimeta.nci.nih.gov diff --git a/spec/shr_core.txt b/spec/shr_core.txt index a9b6936d..381d29d5 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.core Description: "The SHR Core domain contains definitions for a variety of general-purpose elements that are used widely in SHR. These include definitions for coding, expressions of time, quantities, addresses, names, and more." -Uses: cimi.element, cimi.topic, cimi.statement +Uses: cimi.element, cimi.topic, cimi.statement, cimi.datatypes Path: FHIR = http://hl7.org/fhir/ValueSet // CodeSystem: CC = http://www.nationsonline.org/oneworld/country_code_list @@ -62,65 +62,6 @@ Concept: TBD Description: "Representation of an amount of currency or monetary value." Units with Coding from CurrencyVS - -//------------- Complex data types in FHIR 3.0 --------------- - -Element: Media -Based on: EmbeddedContent -Concept: TBD -Description: "A file that contains audio, video, image, or similar content." -0..1 BinaryData -0..1 ContentType -0..1 Language -0..1 ResourceLocation -0..1 ResourceSize -0..1 Hash -0..1 Title -0..1 CreationTime - - Element: BinaryData - Concept: TBD - Description: "The data itself." - Value: base64Binary - - Element: ContentType - Concept: TBD - Description: "Mime type of the content, with charset etc." - Value: code - - Element: Language - Concept: MTH#C0023008 - Description: "A human language, spoken or written." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/languages if covered - - Element: ResourceLocation - Concept: TBD - Description: "URI where data can be found." - Value: uri - - Element: ResourceSize - Concept: TBD - Description: "Number of bytes of content in the resource (if url provided)" - Value: unsignedInt - - Element: Hash - Concept: TBD - Description: "A hash code of the data (sha-1, base64ed)" - Value: base64Binary - - Element: CreationTime - Concept: MTH#C3669169 - Description: "The point in time when the information was recorded in the system of record." - Value: dateTime // we can map to instant from dateTime - - Element: PhotographicImage - Based on: Media - Concept: LNC#72170-4 - // ContentType from ImageMimeTypeVS if covered - - -//---- Coding departs from CIMI to align with FHIR - Element: Coding Concept: MTH#C0805701 Description: "Coding of a concept, drawn from a controlled vocabulary. Includes the vocabulary and version, if applicable. May include a display text, and a descriptor expressing the intended interpretation of the code." @@ -419,21 +360,7 @@ Description: "A text written in a human language." Value: string 0..1 Language -Element: EmbeddedContent -Concept: TBD -Description: "Abstract class defining the common metadata of all types of encapsulated data, such as images." - -Element: ParsableContent -Based on: EmbeddedContent -Concept: TBD -Description: "A string that follows a formal syntax and can be analyzed and broken into meaningful parts." -Value: string -1..1 Formalism - Element: Formalism - Concept: TBD - Description: "The system of formal syntax or interpretation associated with parsable content." - Value: CodeableConcept /* No can do! Can't restrict "value is type" to a primitive Element: UnsignedIntegerRange @@ -684,11 +611,6 @@ Concept: MTH#C1262869 Description: "The position or physical attitude of the body." Value: CodeableConcept from BodyPositionVS -Element: Details -Concept: MTH#C0947611 -Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." -Value: string // change to language-text - Element: DisplayText Concept: MTH#C1548311 Description: "A string meant for reading by a person, for example, accompanying a code." @@ -705,8 +627,5 @@ Concept: TBD Description: "A distinguishing word or group of words naming an item." Value: string -Element: Category -Concept: TBD -Description: "The type, kind, or class of this item." -Value: CodeableConcept + diff --git a/spec/shr_core_map.txt b/spec/shr_core_map.txt index 875e52d2..dba2eced 100644 --- a/spec/shr_core_map.txt +++ b/spec/shr_core_map.txt @@ -96,16 +96,6 @@ Timing maps to Timing: RecurrencePattern.LifeEventOffset maps to repeat.offset RecurrencePattern.CountPerInterval.MinCount maps to repeat.frequency RecurrencePattern.CountPerInterval.MaxCount maps to repeat.frequencyMax - -Media maps to Attachment: - BinaryData maps to data - ContentType maps to contentType - Language maps to language - ResourceLocation maps to url - ResourceSize maps to size - Hash maps to hash - Title maps to title - CreationTime maps to creation SampledData maps to SampledData: diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 180dabcf..94746d5c 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: odh Description: "Patient’s or family member's work information." -Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.composition, cimi.entity, cimi.element, cimi.encounter +Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.composition, cimi.entity, cimi.element, cimi.encounter, cimi.datatypes CodeSystem: LNC = http://loinc.org CodeSystem: UCUM = http://unitsofmeasure.org @@ -205,8 +205,7 @@ includes 0..1 DailyWorkHours Element: SocialHistoryObservation Based on: Observation Description: "A simplified observation for social histories." -0..0 PersonOfRecord -0..0 Focus +0..0 PersonOfRecord Category is OBSCAT#social-history 0..1 FocalSubject // Get rid of some unnecessary CIMI-isms @@ -226,7 +225,7 @@ Description: "A simplified observation for social histories." 0..0 Interpretation 0..0 Encounter 0..0 DeltaFlag -0..0 Details +0..0 AdditionalText //0..0 FindingStatus Element: FocalSubject diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index 890b883a..0f026427 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -18,7 +18,6 @@ SocialHistoryObservation maps to Observation: // ExceptionValue maps to dataAbsentReason RelevantTime maps to effective[x] // Encounter maps to context - Focus maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject // constrain implicitRules to 0..0 // constrain contained to 0..0 // constrain modifierExtension to 0..0 diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index 132b2a96..029c6c8e 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -73,7 +73,6 @@ includes 0..1 EstrogenReceptorStatus includes 0..1 ProgesteroneReceptorStatus includes 0..1 DCISNuclearGrade includes 0..1 BreastCancerHistologicGrade -0..0 Focus 0..0 Device 0..0 Specimen 0..0 Precondition @@ -349,7 +348,6 @@ Description: "A finding related to the current trend of a particular existing di TopicCode is MTH#C0421176 "Progression" 0..* ProgressionEvidence // "ProgressionEvidence" is somewhat related to FindingMethod, which represents the test or procedure used to generate the result; it is typically a LOINC code (0..1) - Focus.CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered 0..0 Specimen 0..0 EvaluationComponent 0..0 Precondition @@ -509,7 +507,7 @@ Based on: Observation Concept: MTH#C0678941 Description: "Whether a subject carries a mutation in a particular gene." Value: CodeableConcept from PositiveNegativeVS - Focus.CodeableConcept from GeneIdentifierVS +// Focus.CodeableConcept from GeneIdentifierVS DiagnosticService is #genetics 0..0 Precondition 0..0 ReferenceRange @@ -540,7 +538,7 @@ includes 1..1 BRCA2Variant Based on: GeneticVariant Description: "Whether the patient has a mutation in the BRCA1 gene." Value: CodeableConcept from PositiveNegativeVS - Focus.CodeableConcept is HGNC#BRCA1Gene +// Focus.CodeableConcept is HGNC#BRCA1Gene Element: BRCA2Variant @@ -548,7 +546,7 @@ includes 1..1 BRCA2Variant Based on: GeneticVariant Description: "Whether the patient has a mutation in the BRCA2 gene." Value: CodeableConcept from PositiveNegativeVS - Focus.CodeableConcept is HGNC#BRCA2Gene +// Focus.CodeableConcept is HGNC#BRCA2Gene FHIR Genomics: diff --git a/spec/shr_research.txt b/spec/shr_research.txt index 164241f0..05ffbe52 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -10,7 +10,7 @@ Concept: TBD Description: "A clinical trial or similar research study. Reference: list of FDA data elements describing a research study: prsinfo.clinicaltrials.gov/definitions.html " 1..1 Title 1..1 Identifier -0..1 Details +0..1 AdditionalText 0..* PartOf value is type Study 1..1 Status from http://hl7.org/fhir/ValueSet/research-study-status 0..* Enrollment @@ -55,7 +55,7 @@ Description: "A clinical trial or similar research study. Reference: list of FDA Description: "Arm refers to pre-specified group or subgroup of participant(s) in a clinical trial assigned to receive specific intervention(s) (or no intervention) according to a protocol." 1..1 Title 0..1 Type from StudyArmTypeVS - 0..1 Details + 0..1 AdditionalText EntryElement: ResearchSubject Based on: Entity diff --git a/spec/shr_research_map.txt b/spec/shr_research_map.txt index f3ee8f2f..af43ce2b 100644 --- a/spec/shr_research_map.txt +++ b/spec/shr_research_map.txt @@ -20,7 +20,7 @@ Study maps to ResearchStudy: Annotation maps to note StudyArm.Title maps to arm.name StudyArm.Type maps to arm.code - StudyArm.Details maps to arm.description + StudyArm.AdditionalText maps to arm.description ResearchSubject maps to ResearchSubject: Patient maps to individual diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 7c19a48e..3421e2ae 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: sw Description: "SHR implementation of the HL7 Pressure Ulcer Prevention Domain Analysis Model (May, 2011)." -Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition +Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition, cimi.datatypes CodeSystem: UCUM = http://unitsofmeasure.org CodeSystem: LNC = http://loinc.org @@ -31,6 +31,7 @@ See https://s.details.loinc.org/LOINC/39135-9.html?sections=Comprehensive 89254-7 Wound bed panel 72371-8 Appearance of Wound base R 72370-0 Area of identified wound bed appearance/​Area of wound bed of Wound base C % + **MISSING** Wound bed color panel 39132-6 Color of Wound base O 89255-4 Wound bed area identified by color/​Area of wound bed % 89256-2 Wound edge panel @@ -74,24 +75,15 @@ The WoundIdentifier serves as a link between this assertion and assessments of t 1..1 Category is OBSCAT#exam 1..1 TopicCode is SCT#416462003 "Wound (disorder)" 1..1 WoundType -1..1 WoundIdentifier -0..1 WoundTypeEtiology -1..1 WoundAnatomicLocation +0..1 ConditionIdentifier is type WoundIdentifier +0..1 ConditionCause is type WoundTypeEtiology +1..1 AnatomicalLocation is type WoundAnatomicalLocation 0..0 Severity // not sure if zeroing it out should be prohibited, but it is not part of LOINC panel 0..0 Criticality 0..0 Certainty 0..0 Device 0..0 Precondition -EntryElement: WoundAbsenceAssertion -Based on: FindingSiteConditionAbsenceStatement -Description: "Documents the absence of a wound at a given body site. -No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicLocation." -0..0 StatementTopic -1..1 TopicCode is SCT#416462003 "Wound (disorder)" -1..1 Category is OBSCAT#exam -1..1 WoundAnatomicLocation - Element: WoundType Based on: TopicCode Concept: LNC#72300-7 @@ -100,9 +92,9 @@ No wounds anywhere on the body can be indicated by omitting the anatomical locat Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered Element: WoundIdentifier - Based on: FindingSiteIdentifier + Based on: ConditionIdentifier Concept: LNC#81666-0 - Description: "A human-readable identifier for the lesion; e.g., a letter or integer." + Description: "A human-readable identifier for the lesion; e.g., a letter or integer." Value: string Element: WoundTypeEtiology @@ -111,7 +103,7 @@ No wounds anywhere on the body can be indicated by omitting the anatomical locat Description: "A specialization of condition cause, specific to the causes of injuries (or not having injury in the wound absent context)." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.3/expansion // should be from http://loinc.org/vs/LL4936-2 - Element: WoundAnatomicLocation + Element: WoundAnatomicalLocation Based on: AnatomicalLocation Concept: LNC#39111-0 "Body Site" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.14/expansion @@ -119,19 +111,30 @@ No wounds anywhere on the body can be indicated by omitting the anatomical locat 0..0 AnatomicalDirection +EntryElement: WoundAbsenceAssertion +Based on: FindingSiteConditionAbsenceStatement +Description: "Documents the absence of a wound at a given body site. +No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicalLocation." +0..0 StatementTopic +1..1 TopicCode is SCT#416462003 "Wound (disorder)" +1..1 Category is OBSCAT#exam +1..1 AnatomicalLocation is type WoundAnatomicalLocation + //--------------- Wound Assessment ------------------------- EntryElement: WoundAssessmentPanel Based on: NonLaboratoryObservation Concept: LNC#39135-9 Description: "Group of observations regarding the properties and severity of a wound." +1..1 WoundIdentifier Interpretation is type WoundAssessmentInterpretation DeltaFlag is type WoundTrend 0..0 ResultValue 0..0 ExceptionValue +0..0 AnatomicalLocation // carried by wound assertion +0..0 Device TopicCode is LNC#39135-9 -0..0 ReferenceRange - Focus value is type string // WoundNumber +0..0 ReferenceRange Media is type PhotographicImage // 72170-4 Photographic image [Media] EvaluationComponent includes 0..1 WoundEpisode // very similar to Episodicity or ClinicalStatus, but value set is different. @@ -213,6 +216,10 @@ EntryElement: WoundBedAppearanceObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89254-7 Description: "The appearance of the base (bed) of the wound, together with the percentage of the bed with each type of appearance." +1..1 WoundIdentifier + TopicCode is LNC#89254-7 +0..0 AnatomicalLocation // location is given by the wound assertion +0..0 Device EvaluationComponent includes 1..1 WoundBedAppearance includes 1..1 WoundBedAppearancePercentage @@ -233,6 +240,10 @@ EntryElement: WoundBedColorObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: TBD Description: "Color of part or all of the wound base (bed), and the percentage of the area with that color." +1..1 WoundIdentifier + TopicCode is TBD#TBD +0..0 AnatomicalLocation // location is given by the wound assertion +0..0 Device EvaluationComponent includes 1..1 WoundBedColor includes 1..1 WoundBedColorAreaPercentage @@ -255,7 +266,10 @@ EntryElement: WoundEdgeObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89256-2 Description: "The state of the tissue at the edge of the wound." +1..1 WoundIdentifier TopicCode is LNC#89256-2 +0..0 AnatomicalLocation // location is given by the wound assertion +0..0 Device EvaluationComponent includes 1..1 WoundEdgeDescription includes 0..1 WoundEdgeColor @@ -278,7 +292,10 @@ EntryElement: WoundTunnelingObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89257-0 Description: "A discharging blind-ended track that extends from the surface of an organ to an underlying area or abscess cavity. The track is invariably lined with granulation tissue. In chronic cases this may be augmented with epithelial tissue." +1..1 WoundIdentifier TopicCode is LNC#89257-0 +0..0 AnatomicalLocation // location is given by the wound assertion +0..0 Device EvaluationComponent includes 0..1 WoundTunnelLength includes 0..1 WoundTunnelClockDirection @@ -305,6 +322,9 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89258-8 Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage around the wound margin. Undermining are narrow sinus tracts away from the wound margins and go downward into the wound." TopicCode is LNC#89258-8 +1..1 WoundIdentifier +0..0 AnatomicalLocation // location is given by the wound assertion +0..0 Device EvaluationComponent includes 0..1 WoundUnderminingLength includes 0..1 WoundUnderminingClockDirection @@ -327,6 +347,9 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72292-6 Description: "Description of the fluid produced by a wound." TopicCode is LNC#72292-6 +1..1 WoundIdentifier +0..0 AnatomicalLocation // location is given by the wound assertion +0..0 Device EvaluationComponent includes 0..1 WoundExudateAmount includes 0..1 WoundExudateVolume @@ -373,6 +396,9 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72287-6 Description: "The estimated or measured dimensions of a wound." TopicCode is LNC#72287-6 +1..1 WoundIdentifier +0..0 AnatomicalLocation // location is given by the wound assertion +0..0 Device EvaluationComponent includes 1..1 WoundLength includes 1..1 WoundWidth From 3ff2751f6c91fb45f81b44831d7a5efd132f52ff Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 13 Aug 2018 15:52:04 -0400 Subject: [PATCH 030/289] Updated ODH definitions and names Also trying to align Patient with FHIR to avoid extra profile --- cimi_allergy.txt | 19 +++++++++----- spec/cimi_element.txt | 2 +- spec/cimi_entity.txt | 28 ++++++++++---------- spec/cimi_entity_map.txt | 16 ++++++------ spec/cimi_statement.txt | 14 +++++----- spec/cimi_statement_map.txt | 2 +- spec/shr_core.txt | 4 +-- spec/shr_occupation.txt | 52 +++++++++++++++++++++---------------- spec/shr_occupation_map.txt | 4 +-- spec/shr_wound.txt | 4 +-- 10 files changed, 78 insertions(+), 67 deletions(-) diff --git a/cimi_allergy.txt b/cimi_allergy.txt index c3c80942..9f664528 100644 --- a/cimi_allergy.txt +++ b/cimi_allergy.txt @@ -33,9 +33,9 @@ Description: "A finding related to the presence or absence of an individual's ri 1..1 StatementTopic.AllergenIrritant // US Core requirement. See http://hl7.org/fhir/us/core/StructureDefinition-us-core-allergyintolerance.html 1..1 StatementTopic.TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" // not needed AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution value is type CodeableConcept -0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status -1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status -0..1 Criticality from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality +0..1 AllergyClinicalStatus +1..1 AllergyVerificationStatus +0..1 Criticality 0..1 MostRecentOccurrenceTime 0..* ref(AdverseReactionPresenceStatement) @@ -44,10 +44,15 @@ Description: "A finding related to the presence or absence of an individual's ri Description: "Categorization of the risk substance as a food, drug, or environmental agent. For difficult-to-classify substances, one can leave this field empty or choose the most typical category." Value: code -// Element: VerificationStatus -// Concept: TBD -// Description: "Whether an assessment has been confirmed by testing or observation." -// Value: code + Element: AllergyClinicalStatus + Concept: TBD + Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." + Value: code from http://hl7.org/fhir/ValueSet/allergy-clinical-status + + Element: AllergyVerificationStatus + Concept: TBD + Description: "Whether an assessment has been confirmed by testing or observation." + Value: code from http://hl7.org/fhir/ValueSet/allergy-verification-status Element: MostRecentOccurrenceTime Concept: TBD diff --git a/spec/cimi_element.txt b/spec/cimi_element.txt index ff709fa0..4ed6ee94 100644 --- a/spec/cimi_element.txt +++ b/spec/cimi_element.txt @@ -115,7 +115,7 @@ Element: PersonName Based on: Name Concept: MTH#C1547383 Description: "A name used by a human being, written as it would be typically expressed. May include a breakdown of the various elements of the name (family name, given name, etc.)." -0..1 PreferredFlag +//0..1 PreferredFlag -- causes extension to Human Name profile 0..* Prefix 0..* GivenName 0..* MiddleName diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index e8ffb228..02c5ca87 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -25,24 +25,24 @@ Based on: Role Concept: MTH#C1299487 Description: "A person in the role of a patient, including extended demographic information about the subject of this health record." 1..1 ref(Person) -0..1 PlaceOfBirth -0..1 MultipleBirth -0..1 BirthSex +//0..1 PlaceOfBirth +//0..1 MultipleBirth +//0..1 BirthSex 0..1 Race 0..1 Ethnicity 0..1 MaritalStatus -0..1 MothersMaidenName -0..1 FathersName -0..1 SocialSecurityNumber +//0..1 MothersMaidenName +//0..1 FathersName +//0..1 SocialSecurityNumber //0..1 DriversLicenseNumber //0..* PassportNumber -0..1 MedicalInterpreterNeeded -0..1 Deceased +//0..1 MedicalInterpreterNeeded +//0..1 Deceased Element: PlaceOfBirth Concept: MTH#C0032040 Description: "The location of a birth event. There may be multiple entries, but a person has only one place of birth." - Value: GeopoliticalLocation + Value: Address Element: MultipleBirth Concept: MTH#C0026753 @@ -87,7 +87,7 @@ Description: "A person in the role of a patient, including extended demographic Element: MaritalStatus Concept: MTH#C0024819 Description: "The most recent marital status of a person." - Value: CodeableConcept from FHIR/marital-status + Value: CodeableConcept from FHIR/marital-status if covered Element: MothersMaidenName Concept: MTH#C0806887 @@ -361,16 +361,16 @@ Based on: Entity Concept: MTH#C0027361 Description: "A person relevant to the health or social situation of the subject (including the person of record him or herself)." 1..* HumanName -0..1 AnonymizedFlag -0..1 FictionalPersonFlag +//0..1 AnonymizedFlag +//0..1 FictionalPersonFlag 0..1 DateOfBirth 1..1 AdministrativeGender 0..* Address -0..1 Headshot +0..* Headshot 0..* ContactPoint 0..* LanguageUsed 0..1 ActiveFlag -0..* ref(ExternalHealthRecord) +//0..* ref(ExternalHealthRecord) Element: AnonymizedFlag Concept: MTH#C3858751 diff --git a/spec/cimi_entity_map.txt b/spec/cimi_entity_map.txt index dc88c8b1..fd89a3a1 100644 --- a/spec/cimi_entity_map.txt +++ b/spec/cimi_entity_map.txt @@ -12,17 +12,17 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: Person.ContactPoint maps to telecom Person.LanguageUsed maps to communication Person.DateOfBirth maps to birthDate - PlaceOfBirth maps to http://hl7.org/fhir/StructureDefinition/birthPlace - MultipleBirth maps to multipleBirth[x].boolean - MultipleBirth.MultipleBirthOrder maps to multipleBirth[x].integer - BirthSex maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex +// PlaceOfBirth maps to http://hl7.org/fhir/StructureDefinition/birthPlace +// MultipleBirth maps to multipleBirth[x].boolean +// MultipleBirth.MultipleBirthOrder maps to multipleBirth[x].integer +// BirthSex maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex Race maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-race Ethnicity maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity MaritalStatus maps to maritalStatus - MothersMaidenName maps to http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName - MedicalInterpreterNeeded maps to http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired - Deceased maps to deceased[x].boolean - Deceased.DateOfDeath maps to deceased[x].dateTime +// MothersMaidenName maps to http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName +// MedicalInterpreterNeeded maps to http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired +// Deceased maps to deceased[x].boolean +// Deceased.DateOfDeath maps to deceased[x].dateTime Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner: Person.ActiveFlag maps to active diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index da99bd11..0ed4a5d7 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -207,7 +207,7 @@ Based on: FindingStatement Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -0..0 PersonOfRecord // just use FHIR +//0..0 PersonOfRecord // do not zero out, but try to avoid a profile on Patient by matching FHIR 0..0 StatementTopic // eliminate to avoid making everything more complicated 1..1 TopicCode ContextCode is SCT#424975005 "Record Entity" @@ -425,11 +425,11 @@ Description: "A condition that is or may be present in a subject. 'Condition' is 0..* AnatomicalLocation 0..* ConditionCause 0..1 ConditionIdentifier -1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical +1..1 ClinicalStatus 0..1 WhenClinicallyRecognized 0..1 PresentOnAdmission -0..1 Severity from http://hl7.org/fhir/ValueSet/condition-severity -0..1 Criticality from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality +0..1 Severity +0..1 Criticality 0..1 Stage Element: ConditionCause @@ -445,7 +445,7 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Element: ClinicalStatus Concept: TBD Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." - Value: code + Value: code from http://hl7.org/fhir/ValueSet/condition-clinical Element: WhenClinicallyRecognized Concept: TBD @@ -460,12 +460,12 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Element: Severity Concept: MTH#C0392364 Description: "Degree of harshness or extent of a symptom, disorder, or condition." - Value: CodeableConcept + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/condition-severity Element: Criticality Concept: MTH#C3858539 "Criticality" Description: "The potential clinical harm associated with a condition. When the worst case result is assessed to have a life-threatening or organ system threatening potential, it is considered to be of high criticality." - Value: code + Value: code from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality Element: Stage Concept: MTH#C0699749 diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index 7ee950ac..7d6221e8 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 ClinicalStatement maps to DomainResource: Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: -// PersonOfRecord maps to subject + PersonOfRecord maps to subject // SubjectIfNotPersonOfRecord.RelationshipToPersonOfRecord maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject // CodeableConcept // SourceOfInformation.Value maps to performer // Why doesn't this work??? // Annotation maps to extension diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 381d29d5..7a6231cc 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -132,8 +132,8 @@ Description: "A unit of measurement for the quotient of the amount of one entity Element: ContactPoint Concept: MTH#C2986441 Description: "An electronic means of contacting an organization or individual." -1..1 TelecomNumberOrAddress -1..1 Type from http://hl7.org/fhir/ValueSet/contact-point-system +0..1 TelecomNumberOrAddress +0..1 Type from http://hl7.org/fhir/ValueSet/contact-point-system 0..1 Purpose from http://hl7.org/fhir/ValueSet/contact-point-use 0..1 PriorityRank 0..1 EffectiveTimePeriod diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 94746d5c..be0e11c5 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -29,13 +29,13 @@ Concept: TBD Based on: SocialHistorySection Description: "Single section in the current OccupationalDataSummary, containing the person's history of employment and occupation, past and present." ClinicalStatement -includes 0..* HistoryOfEmploymentStatus -includes 0..* DateOfRetirement +includes 0..* PersonEmploymentStatus +includes 0..* RetirementDate includes 0..* CombatZonePeriod -includes 0..1 UsualOccupation -includes 0..* PastOrPresentOccupation +includes 0..1 UsualWork +includes 0..* PastOrPresentJob -EntryElement: HistoryOfEmploymentStatus +EntryElement: PersonEmploymentStatus Based on: CodedSocialHistoryObservation Concept: LNC#74165-2 "HistoryOfEmploymentStatus" Description: "A person’s state of being employed during the time period specified. @@ -45,35 +45,38 @@ Generally, employment status refers to whether or not a person has a job (e.g. e // ResultValue from EmploymentStatusVS ResultValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 0..0 EvaluationComponent -0..0 FocalSubject +0..0 FocalSubjectModifier -EntryElement: DateOfRetirement +EntryElement: RetirementDate Based on: SocialHistoryObservation Concept: LNC#87510-4 "Date of Retirement" -Description: "If present, the patient is retired, and this observation records the retirement date. -This is a self-identified statement about the date of being retired as self-identified by the patient. A person can be both retired and employed; most often, a person would be retired from one job and employed in another job." +Description: "A self-reported date that a person considers themselves to have ‘retired’. +A person can be both retired and employed (an Employment Status); most often, a person would be retired from one job and employed in another job. A person also can have more than one retirement date; for example, a person could retire from military service, then later retire from a civilian job. +Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." TopicCode is LNC#87510-4 "Date of Retirement" ResultValue value is type dateTime 0..0 EvaluationComponent 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. -0..0 FocalSubject +0..0 FocalSubjectModifier EntryElement: CombatZonePeriod Based on: SocialHistoryObservation Concept: LNC#87511-2 -Description: "Indicates the date range(s) an individual hs worked in what is considered a combat or hazardous duty zone; both civilian and military." +Description: "Self-reported date range(s) when a person worked in what is considered a combat zone; sometimes called a hazardous duty work. +Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones." TopicCode is LNC#87511-2 ResultValue value is type TimePeriod 0..0 EvaluationComponent 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. -0..0 FocalSubject // only patient +0..0 FocalSubjectModifier // only patient - -EntryElement: UsualOccupation +EntryElement: UsualWork Based on: CodedSocialHistoryObservation Concept: LNC#21843-8 -Description: "The type of work a person has held for the longest duration during his or her working history at the point in time the statement is recorded." -// We'll need to determine the fix here -- US Core requires Subject to be a patient, but ODH allows patient or related person +Description: "Related data elements about the work a person reports having performed for the longest amount of time during his or her life, regardless of the person's current job and regardless of whether or not the person performed this work for a continuous time. +Knowledge of person's Usual Work can potentially assist in diagnosis, treatment and/or prevention of chronic condition(s) or conditions with a long latency. The potential for exposure to Occupational Hazard(s) related to an Occupation and/or an Industry can change over time, and a person could have been in and out of their Usual Work over time, so additional data are helpful to fully evaluate the possible impact of the person's Usual Work on their health and guide appropriate use of screening tests to detect early disease. +Example: a person has worked for a total of 30 years as a 'secretary' (Occupation), but in various industries, mostly hotel construction. Her Usual Occupation is 'secretary' and her Usual Industry is 'hotel construction.' +Usual Work does not include work that was unpaid or voluntary. Usual Work does not include work that was unpaid or voluntary." TopicCode is LNC#21843-8 // ResultValue could be from OccupationVS ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 @@ -100,10 +103,13 @@ includes 0..1 UsualOccupationDuration Value: Quantity with units UCUM#a TopicCode is LNC#74163-7 "Usual occupation duration" -EntryElement: PastOrPresentOccupation +EntryElement: PastOrPresentJob Based on: CodedSocialHistoryObservation Concept: LNC#11341-5 "History of Occupation" -Description: "A single job, past or present. The relevant time is the period the job was held." +Description: "Related data elements for a current or previous job, as reported by the person, i.e., a work situation or position held for a specified time period. +A person can have more than one job at the same time and multiple jobs over time, so the data related to each job must remain in the record in perpetuity. +A person's job can be a social determinant of their health and information about a person's job can support patient care, population health, and public health. In patient care, knowledge of a person's past or present job(s) can impact recognition, diagnosis, management, and treatment of injuries and illnesses. These data also can be used for clinical decision support and to prompt discussion of preventive care measures. For example, a record of jobs that require prolonged time in the sun might prompt a health care provider to inquire if the person wears protective clothing or sunscreen while working. +At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." TopicCode is LNC#11341-5 "History of Occupation" // ResultValue could be from OccupationVS ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 @@ -205,9 +211,9 @@ includes 0..1 DailyWorkHours Element: SocialHistoryObservation Based on: Observation Description: "A simplified observation for social histories." -0..0 PersonOfRecord +//0..1 PersonOfRecord Category is OBSCAT#social-history -0..1 FocalSubject +0..1 FocalSubjectModifier // Get rid of some unnecessary CIMI-isms 0..0 Recorded 0..0 Signed @@ -228,7 +234,7 @@ Description: "A simplified observation for social histories." 0..0 AdditionalText //0..0 FindingStatus - Element: FocalSubject + Element: FocalSubjectModifier Description: "The focus of the observation, if someone other than the person of record (subject)." 1..1 RelationshipToPersonOfRecord from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered @@ -241,8 +247,8 @@ Description: "The result of social history questions, whose answer is expressed -/* UsualOccupation is in the value element - Element: UsualOccupation +/* UsualWork is in the value element + Element: UsualWork Based on: CodedEvaluationComponent Concept: LNC#21843-8 "History of Usual Occupation" // Occupation is LNC#74287-4 Description: "A person's work or business" diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index 0f026427..8102382e 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -4,7 +4,7 @@ Target: FHIR_STU_3 // do not map to US Core Results -- Brett says that's only for labs SocialHistoryObservation maps to Observation: -// PersonOfRecord maps to subject + PersonOfRecord maps to subject TopicCode maps to code Category maps to category EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) @@ -33,5 +33,5 @@ EmployerOrganization maps to Organization: EmployerPerson maps to RelatedPerson: RelationshipToPersonOfRecord maps to relationship -FocalSubject maps to RelatedPerson: +FocalSubjectModifier maps to RelatedPerson: RelationshipToPersonOfRecord maps to relationship \ No newline at end of file diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 3421e2ae..75a7dfcf 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -128,7 +128,6 @@ Concept: LNC#39135-9 Description: "Group of observations regarding the properties and severity of a wound." 1..1 WoundIdentifier Interpretation is type WoundAssessmentInterpretation - DeltaFlag is type WoundTrend 0..0 ResultValue 0..0 ExceptionValue 0..0 AnatomicalLocation // carried by wound assertion @@ -138,6 +137,7 @@ Description: "Group of observations regarding the properties and severity of a w Media is type PhotographicImage // 72170-4 Photographic image [Media] EvaluationComponent includes 0..1 WoundEpisode // very similar to Episodicity or ClinicalStatus, but value set is different. +includes 0..1 WoundTrend includes 0..1 WoundPeriwoundDescription // 72301-5 Description of Periwound includes 0..* WoundVisibleInternalStructure //89250-5 Device or anatomic structure visible in wound includes 0..1 WoundPressureUlcerAssociation // missing LOINC code @@ -205,7 +205,7 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Value: CodeableConcept from http://loinc.org/vs/LL3816-7 if covered // underpowered? 'normal' and 'other' Element: WoundTrend - Based on: DeltaFlag + Based on: CodedEvaluationComponent Concept: LNC#89253-9 Description: "Whether a condition is improving, worsening, stable, or resolved." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.5/expansion // should be from http://loinc.org/vs/LL4938-8 with values improved, deteriorated, stablized or resolved. Resolved is missing from the VS in VSAC From 9928e5e623f03272eae3b0462a2761358b35e2fa Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 13 Aug 2018 16:48:51 -0400 Subject: [PATCH 031/289] Coordinated PersonOfRecord with Patient Avoiding profiling by removing conflicting attributes --- spec/cimi_entity.txt | 4 ++-- spec/cimi_entity_map.txt | 4 ++-- spec/cimi_statement.txt | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index 02c5ca87..438d59dc 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -28,8 +28,8 @@ Description: "A person in the role of a patient, including extended demographic //0..1 PlaceOfBirth //0..1 MultipleBirth //0..1 BirthSex -0..1 Race -0..1 Ethnicity +//0..1 Race +//0..1 Ethnicity 0..1 MaritalStatus //0..1 MothersMaidenName //0..1 FathersName diff --git a/spec/cimi_entity_map.txt b/spec/cimi_entity_map.txt index fd89a3a1..d6bd9be7 100644 --- a/spec/cimi_entity_map.txt +++ b/spec/cimi_entity_map.txt @@ -16,8 +16,8 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: // MultipleBirth maps to multipleBirth[x].boolean // MultipleBirth.MultipleBirthOrder maps to multipleBirth[x].integer // BirthSex maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex - Race maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-race - Ethnicity maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity +// Race maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-race +// Ethnicity maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity MaritalStatus maps to maritalStatus // MothersMaidenName maps to http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName // MedicalInterpreterNeeded maps to http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 0ed4a5d7..4000d65a 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -207,7 +207,7 @@ Based on: FindingStatement Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -//0..0 PersonOfRecord // do not zero out, but try to avoid a profile on Patient by matching FHIR +1..1 PersonOfRecord // do not zero out, but try to avoid a profile on Patient by matching FHIR 0..0 StatementTopic // eliminate to avoid making everything more complicated 1..1 TopicCode ContextCode is SCT#424975005 "Record Entity" From 0aec5db94919969a6c9bb2916957279bce132e09 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 14 Aug 2018 13:16:51 -0400 Subject: [PATCH 032/289] stopping point --- spec/cimi_statement_vs.txt | 6 ++- spec/cimi_topic.txt | 89 ++++++++++++++++++++++++++++++++++--- spec/shr_occupation.txt | 32 ++++++------- spec/shr_occupation_map.txt | 4 +- 4 files changed, 105 insertions(+), 26 deletions(-) diff --git a/spec/cimi_statement_vs.txt b/spec/cimi_statement_vs.txt index 8206f66d..830a85e7 100644 --- a/spec/cimi_statement_vs.txt +++ b/spec/cimi_statement_vs.txt @@ -4,6 +4,7 @@ Namespace: cimi.statement CodeSystem: SCT = http://snomed.info/sct CodeSystem: MTH = http://ncimeta.nci.nih.gov +/* ValueSet: DiagnosticServiceVS Description: "The type of laboratory service used in producing a laboratory result. Note -- we may want to include additional descendants of SCT#224891009 (Healthcare services)" SCT#310078000 "Microbiology service (qualifier) -- Laboratory concerned with cultures, to look for suspected pathogens." @@ -17,7 +18,7 @@ SCT#708190004 "Immunology service (qualifier) -- Immunology/Serology laboratory SCT#310074003 "Pathology service (qualifier)-- Surgical, cytopathology, or histopathology laboratory. Surgical pathology examines organs, limbs, tumors, fetuses, and other tissues biopsied in surgery such as breast mastectomies." SCT#310048009 "Genetics service (procedure) - note: should be in the Snomed (qualifier) hierarchy - Laboratory that mainly performs DNA analysis." SCT#708178001 "Cytogenetics service (qualifier) -- Laboratory that uses blood and other cells to get a karyotype. This can be helpful in prenatal diagnosis (e.g. Down's syndrome) as well as in cancer (some cancers have abnormal chromosomes)." - +*/ ValueSet: ExceptionValueVS Description: "Reasons that a value associated with a test or other finding is missing. Includes all codes from http://hl7.org/fhir/ValueSet/data-absent-reason version 3.3.0 and additional codes covering other missing value circumstances." @@ -89,6 +90,9 @@ Includes codes descending from SCT#263703002 "Changed status (qualifier value)" // has values decreased, decreased relative to previous, improved, increased, increased relative to previous, maintained stablized, worse // Also see LOINC #89253-9 Trend ... has values improved, deteriorated, stablized, resolved +ValueSet: FindingMethodVS +Includes codes from LNC + /* ValueSet: DeltaFlagVS Description: "Change patterns and trends, including resolved." diff --git a/spec/cimi_topic.txt b/spec/cimi_topic.txt index bde37a84..2f4e5c56 100644 --- a/spec/cimi_topic.txt +++ b/spec/cimi_topic.txt @@ -1,21 +1,23 @@ Grammar: DataElement 5.0 Namespace: cimi.topic Description: "The Topic Core package contains the top-level specializations of the Statement Topic class, namely, the FindingTopic, ActionTopic (ProcedureTopic), and EventTopic classes." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.entity, cimi.statement, cimi.datatypes +Uses: shr.core, shr.base, cimi.core, cimi.context, cimi.element, cimi.entity, cimi.statement + +CodeSystem: HL7V20074 = http://hl7.org/fhir/v2/0074 Element: StatementTopic Based on: NonIndependent Concept: TBD -Description: "Compositional and reusable grouping of clinical statement attributes that make up the clinical focus of a statement. +Description: "Compositional and reusable grouping of clinical statement attributes that make up the clinical focus of a statement. StatementTopic class attributes are aligned with SNOMED CT Concept Model attributes when such an overlap exists. Note that this class does not include contextual attributes such as the nature of the action (ordered, proposed, planned, etc...), the nature of the patient state being described (e.g., present, suspected present, absent), and the attribution of this information (the who, when, where, how, why of the information recorded)." 1..1 TopicCode - Element: TopicCode + Element: TopicCode Concept: TBD - Description: "The concept representing the finding or action that is the topic of the statement. - - For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." + Description: "The concept representing the finding or action that is the topic of the statement. + + For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic independent of the context of the action or the finding." Value: CodeableConcept Abstract Element: ActionTopic @@ -27,14 +29,87 @@ Description: "An entry related to an action or intervention, whether potential Element: FindingTopic Based on: StatementTopic Concept: TBD -Description: "Base class - - for all kinds of determinations: questions/answers, conditions, observations, allergies, and other findings. +Description: "Base class - independent of context - for all kinds of determinations: questions/answers, conditions, observations, allergies, and other findings. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." 0..1 FindingMethod +0..1 Details 0..* Media +Element: ObservationTopic +// All attributes of observation are defined at this level. Any subclass uses subtractive methods to define relevant attributes +Based on: FindingTopic +Concept: MTH#C1554188 +Description: "The base class, independent of context for evaluations (measurements, tests, or questions). The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." +1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered +0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? +0..1 Focus +0..1 ref(Device) +0..1 ref(Specimen) +0..* Precondition +0..* ReferenceRange // applies to a quantitative measurement only +0..* EvaluationComponent +0..1 PanelMembers + Element: Focus + Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. For example, the finding could deal with a condition, a behavior, a wound, or tumor. These are entities that are implied by clinical statements (see cimi.entity.MaterializedAssertion)" + Value: string or CodeableConcept or Identifier or ref(EntityOrRole) + Element: CodedEvaluationComponent + Based on: EvaluationComponent + Description: "An evaluation component whose value is a code (concept)." + Value: CodeableConcept + 0..0 ReferenceRange + + Element: PanelMembers + Concept: TBD + Description: "PanelMembers represent the elements of a group of a related but independent evaluations. + Examples are the measurements that compose a complete blood count (CBC), or the elements of a pathology report. Each member is an independent evaluation, but the grouping reflects a composite lab order, shared specimen, or a single report author. Typically the Category and Reason are not given for individual findings that are part of the panel, but rather given at the level of the panel itself." + 0..* ref(Observation) + + +Element: LaboratoryObservationTopic +Based on: ObservationTopic +Description: "The topic composition for laboratory observations. A specimen is required, anatomical location is excluded (since the specimen indicates the collection body site). Also includes a diagnostic service (indicating the type of laboratory), not present in general observations." +1..1 ref(Specimen) +0..0 AnatomicalLocation // AnatomicalLocation is where the Specimen was collected + Category is OBSCAT#laboratory +0..* DiagnosticService + + Element: DiagnosticService + Concept: TBD + Description: "The service completing the observations, e.g. biochemistry, microbiology, blood bank." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/diagnostic-service-sections if covered + +Element: AssertionTopic +Based on: FindingTopic +Description: "The base topic for conditions, allergies, adverse events, etc. These are things asserted to exist or not. The Value is interpreted in the context of the class; for an AdverseSensitivityToSubstance, the TopicCode is the substance, for a Condition, the TopicCode represents the type of condition found." + +Element: ConditionAssertionTopic +Based on: AssertionTopic +Description: "A condition, independent of context. 'Condition' is interpreted broadly to include disorder, abnormality, problem, injury, complaint, functionality, concern, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble, independent of context." + TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered +1..* Category from ConditionCategoryVS +0..* AnatomicalLocation +0..* ConditionCause +0..* AlleviatingFactor +0..* ExacerbatingFactor + + Element: ConditionCause + Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" + Value: CodeableConcept or ref(Entity) or ref(ClinicalStatement) + // probably other attributes needed, such as likelihood or type of cause + + + Element: AlleviatingFactor + Concept: LNC#55258-8 + Description: "Activities that reduce the severity of the pathology" + Value: CodeableConcept + + Element: ExacerbatingFactor + Concept: LNC#55258-8 + Description: "Activities that increase the severity of the pathology" + Value: CodeableConcept diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index be0e11c5..4d3aa11e 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -78,8 +78,8 @@ Knowledge of person's Usual Work can potentially assist in diagnosis, treatment Example: a person has worked for a total of 30 years as a 'secretary' (Occupation), but in various industries, mostly hotel construction. Her Usual Occupation is 'secretary' and her Usual Industry is 'hotel construction.' Usual Work does not include work that was unpaid or voluntary. Usual Work does not include work that was unpaid or voluntary." TopicCode is LNC#21843-8 -// ResultValue could be from OccupationVS - ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 +// ResultValue from OccupationVS + ResultValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 EvaluationComponent includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration @@ -91,8 +91,8 @@ includes 0..1 UsualOccupationDuration Concept: LNC#21844-6 "History of Usual industry" Description: "The industry (type of business) which the subject has worked in for the longest duration while in the usual occupation. For example, a person who has spent 30 years as a secretary in various industries, but mostly in construction, would record a usual occupation of secretary and a usual industry of construction." // "A history of this observation is not retained. Actually past versions of the observation could be retained, but the panel should refer to the latest one only. - //Value: CodeableConcept could be from IndustryVS - Value: CodeableConcept could be from + //Value: CodeableConcept from IndustryVS + Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 TopicCode is LNC#21844-6 "History of Usual industry" @@ -111,8 +111,8 @@ A person can have more than one job at the same time and multiple jobs over time A person's job can be a social determinant of their health and information about a person's job can support patient care, population health, and public health. In patient care, knowledge of a person's past or present job(s) can impact recognition, diagnosis, management, and treatment of injuries and illnesses. These data also can be used for clinical decision support and to prompt discussion of preventive care measures. For example, a record of jobs that require prolonged time in the sun might prompt a health care provider to inquire if the person wears protective clothing or sunscreen while working. At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." TopicCode is LNC#11341-5 "History of Occupation" -// ResultValue could be from OccupationVS - ResultValue could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 +// ResultValue from OccupationVS + ResultValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization EvaluationComponent includes 0..1 PastOrPresentIndustry @@ -144,8 +144,8 @@ includes 0..1 DailyWorkHours Based on: CodedEvaluationComponent Concept: LNC#86188-0 Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." -// Value: CodeableConcept could be from IndustryVS - Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 +// Value: CodeableConcept from IndustryVS + Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 TopicCode is LNC#86188-0 Element: WorkClassification @@ -153,16 +153,16 @@ includes 0..1 DailyWorkHours Concept: LNC#85104-8 "Compensation and sector employment type" Description: "Employment attributes for a given job. This specifies information about the worker’s job, such as self-employed or unpaid, and is similar to the U.S. Bureau of Labor Statistics ‘class of worker’ and the International Labor Organization ‘classification of status in employment’. Knowing a patient is self-employed, for example, can assist in discussing return-to-work options." - //Value: CodeableConcept could be from WorkClassificationVS - Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 + //Value: CodeableConcept from WorkClassificationVS + Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 TopicCode is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel Based on: CodedEvaluationComponent Concept: LNC#87707-6 Description: "The supervisory or management responsibilities for an individual’s job. For military jobs, this is pay grade." - //Value: CodeableConcept could be from SupervisoryLevelVS - Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 + //Value: CodeableConcept from SupervisoryLevelVS + Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 TopicCode is LNC#87707-6 Element: JobDuty @@ -187,8 +187,8 @@ includes 0..1 DailyWorkHours Concept: LNC#74159-5 Description: "An individual's typical arrangement of working hours for an occupation. For example, work schedule may capture that an individual typically works a regular day shift, evening shift, or night shift. It can also specify if an individual has another type of schedule, such as a rotating shift, split shift, etc." - //Value: CodeableConcept could be from WorkScheduleVS - Value: CodeableConcept could be from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 + //Value: CodeableConcept from WorkScheduleVS + Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 TopicCode is LNC#74159-5 Element: WeeklyWorkDays @@ -236,7 +236,7 @@ Description: "A simplified observation for social histories." Element: FocalSubjectModifier Description: "The focus of the observation, if someone other than the person of record (subject)." - 1..1 RelationshipToPersonOfRecord from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered + Value: RelationshipToPersonOfRecord from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered Element: CodedSocialHistoryObservation @@ -252,7 +252,7 @@ Description: "The result of social history questions, whose answer is expressed Based on: CodedEvaluationComponent Concept: LNC#21843-8 "History of Usual Occupation" // Occupation is LNC#74287-4 Description: "A person's work or business" - Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 // VS defined in FHIR 3.2 and not found in 3.0.1 + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 // VS defined in FHIR 3.2 and not found in 3.0.1 EntryElement: MilitaryServiceHistory Based on: CodedSocialHistoryObservation diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index 8102382e..fb1d13fd 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -33,5 +33,5 @@ EmployerOrganization maps to Organization: EmployerPerson maps to RelatedPerson: RelationshipToPersonOfRecord maps to relationship -FocalSubjectModifier maps to RelatedPerson: - RelationshipToPersonOfRecord maps to relationship \ No newline at end of file +//FocalSubjectModifier maps to RelatedPerson: +// RelationshipToPersonOfRecord maps to relationship \ No newline at end of file From 839ad27772de11cfc3a6b78cd29e7f3d1806c0aa Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 14 Aug 2018 13:51:29 -0400 Subject: [PATCH 033/289] duplicate definitions! --- spec/cimi_statement.txt | 8 ++++---- spec/cimi_topic.txt | 18 +----------------- spec/cimi_topic_vs.txt | 3 --- 3 files changed, 5 insertions(+), 24 deletions(-) diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 4000d65a..f3608ef2 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -3,7 +3,7 @@ Namespace: cimi.statement Description: "The namespace containing cimi-derived classes representing complete clinical statements. In this specification, these classes derive from the StatementTopic class hierarchy, not ClinicalStatement, which is a significant departure from CIMI. This simplifies the resulting logical models." Uses: shr.core, cimi.core, cimi.element, cimi.topic, cimi.entity, cimi.encounter, cimi.datatypes - +CodeSystem: LNC = http://loinc.org CodeSystem: SCT = http://snomed.info/sct CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: NCI = https://evs.nci.nih.gov/ftp1/CDISC/SDTM/ @@ -195,7 +195,7 @@ Description: "Any clinical statement representing a finding." Element: FindingMethod Concept: TBD Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." - Value: CodeableConcept should be from http://loinc.org + Value: CodeableConcept should be from FindingMethodVS Element: AssertionTopic @@ -350,8 +350,8 @@ Description: "A coded finding based on a specimen collected from a patient." Element: DiagnosticService Concept: TBD - Description: "The service completing the observations, e.g. biochemistry, microbiology, blood bank, etc." - Value: CodeableConcept from DiagnosticServiceVS if covered + Description: "The service completing the observations, e.g. biochemistry, microbiology, blood bank." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/diagnostic-service-sections if covered EntryElement: CodedLaboratoryObservation Based on: LaboratoryObservation diff --git a/spec/cimi_topic.txt b/spec/cimi_topic.txt index 2f4e5c56..e163eeaf 100644 --- a/spec/cimi_topic.txt +++ b/spec/cimi_topic.txt @@ -63,13 +63,6 @@ Description: "The base class, independent of context for evaluations (measuremen Value: CodeableConcept 0..0 ReferenceRange - Element: PanelMembers - Concept: TBD - Description: "PanelMembers represent the elements of a group of a related but independent evaluations. - Examples are the measurements that compose a complete blood count (CBC), or the elements of a pathology report. Each member is an independent evaluation, but the grouping reflects a composite lab order, shared specimen, or a single report author. Typically the Category and Reason are not given for individual findings that are part of the panel, but rather given at the level of the panel itself." - 0..* ref(Observation) - - Element: LaboratoryObservationTopic Based on: ObservationTopic Description: "The topic composition for laboratory observations. A specimen is required, anatomical location is excluded (since the specimen indicates the collection body site). Also includes a diagnostic service (indicating the type of laboratory), not present in general observations." @@ -78,10 +71,7 @@ Description: "The topic composition for laboratory observations. A specimen is r Category is OBSCAT#laboratory 0..* DiagnosticService - Element: DiagnosticService - Concept: TBD - Description: "The service completing the observations, e.g. biochemistry, microbiology, blood bank." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/diagnostic-service-sections if covered + Element: AssertionTopic @@ -98,12 +88,6 @@ Description: "A condition, independent of context. 'Condition' is interpreted br 0..* AlleviatingFactor 0..* ExacerbatingFactor - Element: ConditionCause - Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" - Value: CodeableConcept or ref(Entity) or ref(ClinicalStatement) - // probably other attributes needed, such as likelihood or type of cause - - Element: AlleviatingFactor Concept: LNC#55258-8 Description: "Activities that reduce the severity of the pathology" diff --git a/spec/cimi_topic_vs.txt b/spec/cimi_topic_vs.txt index e27ff2d1..a3d12ffb 100644 --- a/spec/cimi_topic_vs.txt +++ b/spec/cimi_topic_vs.txt @@ -13,6 +13,3 @@ Description: "A category assigned to the condition, for example, a di #concern "Something the subject is worried about, which may or may not have yet been manifested. The object of the concern does not have to be a medical disorder." #symptom "A sign or manifestation of a deeper cause, of known or unknown etiology, e.g. pain or ringing in the ears." #adverse_reaction "An adverse reaction to an intervention." - -ValueSet: FindingMethodVS -Includes codes from LNC \ No newline at end of file From 7f56b56ec14a994f7ed9f2a83b89539304215125 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 14 Aug 2018 13:51:38 -0400 Subject: [PATCH 034/289] Revert "Coordinated PersonOfRecord with Patient" This reverts commit 9928e5e623f03272eae3b0462a2761358b35e2fa. --- spec/cimi_entity.txt | 4 ++-- spec/cimi_entity_map.txt | 4 ++-- spec/cimi_statement.txt | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index 438d59dc..02c5ca87 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -28,8 +28,8 @@ Description: "A person in the role of a patient, including extended demographic //0..1 PlaceOfBirth //0..1 MultipleBirth //0..1 BirthSex -//0..1 Race -//0..1 Ethnicity +0..1 Race +0..1 Ethnicity 0..1 MaritalStatus //0..1 MothersMaidenName //0..1 FathersName diff --git a/spec/cimi_entity_map.txt b/spec/cimi_entity_map.txt index d6bd9be7..fd89a3a1 100644 --- a/spec/cimi_entity_map.txt +++ b/spec/cimi_entity_map.txt @@ -16,8 +16,8 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: // MultipleBirth maps to multipleBirth[x].boolean // MultipleBirth.MultipleBirthOrder maps to multipleBirth[x].integer // BirthSex maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex -// Race maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-race -// Ethnicity maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity + Race maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-race + Ethnicity maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity MaritalStatus maps to maritalStatus // MothersMaidenName maps to http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName // MedicalInterpreterNeeded maps to http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index f3608ef2..cfe2f3e6 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -207,7 +207,7 @@ Based on: FindingStatement Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -1..1 PersonOfRecord // do not zero out, but try to avoid a profile on Patient by matching FHIR +//0..0 PersonOfRecord // do not zero out, but try to avoid a profile on Patient by matching FHIR 0..0 StatementTopic // eliminate to avoid making everything more complicated 1..1 TopicCode ContextCode is SCT#424975005 "Record Entity" From 14f694fb285a84f65c1ab7df4a86aba6be318544 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 14 Aug 2018 14:11:48 -0400 Subject: [PATCH 035/289] Fix duplication weirdness --- spec/cimi_statement.txt | 7 +------ spec/cimi_statement_vs.txt | 1 + spec/cimi_topic.txt | 8 -------- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index cfe2f3e6..05ef9ab1 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -197,17 +197,12 @@ Description: "Any clinical statement representing a finding." Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." Value: CodeableConcept should be from FindingMethodVS - -Element: AssertionTopic -Based on: FindingTopic -Description: "The base topic for allergies, adverse events, etc. These are things that are asserted to exist or not. The Value is interpreted in the context of the class; for an AdverseSensitivityToSubstance, the value is the substance, for a Condition, the Value represents the type of condition found. NO LONGER USED IN FHIMI FOR CONDITION ASSERTION." - EntryElement: Observation // TODO: be consistent, or stop using the word "Statement" in class names Based on: FindingStatement Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -//0..0 PersonOfRecord // do not zero out, but try to avoid a profile on Patient by matching FHIR +1..1 PersonOfRecord 0..0 StatementTopic // eliminate to avoid making everything more complicated 1..1 TopicCode ContextCode is SCT#424975005 "Record Entity" diff --git a/spec/cimi_statement_vs.txt b/spec/cimi_statement_vs.txt index 830a85e7..6b38fa9a 100644 --- a/spec/cimi_statement_vs.txt +++ b/spec/cimi_statement_vs.txt @@ -3,6 +3,7 @@ Namespace: cimi.statement CodeSystem: SCT = http://snomed.info/sct CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: LNC = http://loinc.org /* ValueSet: DiagnosticServiceVS diff --git a/spec/cimi_topic.txt b/spec/cimi_topic.txt index e163eeaf..68c33c74 100644 --- a/spec/cimi_topic.txt +++ b/spec/cimi_topic.txt @@ -57,12 +57,6 @@ Description: "The base class, independent of context for evaluations (measuremen Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. For example, the finding could deal with a condition, a behavior, a wound, or tumor. These are entities that are implied by clinical statements (see cimi.entity.MaterializedAssertion)" Value: string or CodeableConcept or Identifier or ref(EntityOrRole) - Element: CodedEvaluationComponent - Based on: EvaluationComponent - Description: "An evaluation component whose value is a code (concept)." - Value: CodeableConcept - 0..0 ReferenceRange - Element: LaboratoryObservationTopic Based on: ObservationTopic Description: "The topic composition for laboratory observations. A specimen is required, anatomical location is excluded (since the specimen indicates the collection body site). Also includes a diagnostic service (indicating the type of laboratory), not present in general observations." @@ -72,8 +66,6 @@ Description: "The topic composition for laboratory observations. A specimen is r 0..* DiagnosticService - - Element: AssertionTopic Based on: FindingTopic Description: "The base topic for conditions, allergies, adverse events, etc. These are things asserted to exist or not. The Value is interpreted in the context of the class; for an AdverseSensitivityToSubstance, the TopicCode is the substance, for a Condition, the TopicCode represents the type of condition found." From 81005f7f37868db5fa43f6a1d80cf6b05de8a9aa Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 14 Aug 2018 19:41:41 -0400 Subject: [PATCH 036/289] Fixed the duplication problem --- spec/cimi_entity.txt | 254 +++++++++++++++++++-------------------- spec/cimi_entity_map.txt | 6 +- spec/cimi_topic.txt | 40 +----- spec/shr_core.txt | 7 +- spec/shr_occupation.txt | 3 +- 5 files changed, 142 insertions(+), 168 deletions(-) diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index 02c5ca87..4a208cb7 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -23,117 +23,32 @@ Description: "Root class for entities such as people, organizations, and devices EntryElement: Patient Based on: Role Concept: MTH#C1299487 -Description: "A person in the role of a patient, including extended demographic information about the subject of this health record." +Description: "A person in the role of a patient." 1..1 ref(Person) -//0..1 PlaceOfBirth -//0..1 MultipleBirth -//0..1 BirthSex -0..1 Race -0..1 Ethnicity -0..1 MaritalStatus -//0..1 MothersMaidenName -//0..1 FathersName -//0..1 SocialSecurityNumber -//0..1 DriversLicenseNumber -//0..* PassportNumber -//0..1 MedicalInterpreterNeeded -//0..1 Deceased - - Element: PlaceOfBirth - Concept: MTH#C0032040 - Description: "The location of a birth event. There may be multiple entries, but a person has only one place of birth." - Value: Address - - Element: MultipleBirth - Concept: MTH#C0026753 - Description: "Indication if the person was part of a multiple birth event." - Value: boolean - 0..1 MultipleBirthOrder - - Element: MultipleBirthOrder - Concept: LNC#73771-8 - Description: "Order of birth of the person in multiple birth event (if part of multiple birth)." - Value: integer - // should be positiveInt, but it is an integer in FHIR (no issue yet logged) - - Element: BirthSex - Concept: MTH#C4086849 - Description: "Administrative sex assigned at birth and recorded on birth certificate." - Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-birthsex - - Element: Race - Concept: MTH#C0034510 - Description: "Subjective association of a person with a named category of humans sharing common history, traits, place of family origin, nationality, tribe, or other inherited background." - Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity - 0..* RaceDetail - - Element: RaceDetail - Concept: TBD - Description: "Additional description of race or heritage." - Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/detailed-race or CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity - - Element: Ethnicity - Concept: MTH#C0015031 - Description: "Indicator of Hispanic or Latino origin." - Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity - 0..* EthnicityDetail - - Element: EthnicityDetail - Concept: TBD - Description: "Additional description of ethnicity." - Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity or CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/detailed-ethnicity - - - Element: MaritalStatus - Concept: MTH#C0024819 - Description: "The most recent marital status of a person." - Value: CodeableConcept from FHIR/marital-status if covered - - Element: MothersMaidenName - Concept: MTH#C0806887 - Description: "The name of the mother as it was or likely to have been recorded on the birth certificate of the subject. This is most likely the name prior to marriage of the mother (aka the maiden name)." - Value: HumanName +0..1 ActiveFlag +0..* ref(ExternalHealthRecord) - Element: FathersName + Element: ActiveFlag Concept: TBD - Description: "The name of the father as it was or likely to have been recorded on the birth certificate of the subject; most likely the name of the father at the time of birth of the subject." - Value: HumanName - - Element: SocialSecurityNumber - Concept: MTH#C1301821 - Description: "A US social security number (SSN)." - Value: string // note that missing value reasons include "none" - meaning the subject does not have a SSN - - Element: DriversLicenseNumber + Description: "If the ActiveFlag is false, it indicates the record or item is no longer to be used and should generally be hidden for the user in the UI." + Value: boolean + Element: ActiveFlagAsaCodeableConcept Concept: TBD - Description: "Identifying information from a drivers license." - Value: string - 0..1 StateOfIssue - 0..1 EffectiveTimePeriod - - Element: StateOfIssue - Concept: TBD - Description: "A state or country acting as an assuing authority for a document." - Value: State + Description: "If the ActiveFlag is false, it indicates the record or item is no longer to be used and should generally be hidden for the user in the UI." + Value: CodeableConcept - Element: PassportNumber - Concept: MTH#C1549737 - Description: "Credential indicating citizenship." - Value: string - 1..1 CountryOfIssue - 0..1 EffectiveTimePeriod - Element: CountryOfIssue - Concept: TBD - Description: "A country acting as an assuing authority for a document." - Value: Country - +EntryElement: ExternalHealthRecord +Based on: Entity +Concept: TBD +Description: "A health record other than the current health record; may have been used to help populate the current record." +1..1 Identifier +1..1 AccessTime - Element: MedicalInterpreterNeeded - Concept: MTH#C1442531 - Description: "Whether the subject requires an interpreter to communicate with an English-speaking provider." - Value: CodeableConcept from YesNoUnknownVS - 1..1 Language + Element: AccessTime + Concept: TBD + Description: "Point in time when data was accessed." + Value: dateTime EntryElement: Practitioner @@ -370,7 +285,114 @@ Description: "A person relevant to the health or social situation of the subject 0..* ContactPoint 0..* LanguageUsed 0..1 ActiveFlag -//0..* ref(ExternalHealthRecord) +0..1 MaritalStatus +//0..1 PlaceOfBirth +//0..1 MultipleBirth +//0..1 BirthSex +//0..1 Race +//0..1 Ethnicity +//0..1 MothersMaidenName +//0..1 FathersName +//0..1 SocialSecurityNumber +//0..1 DriversLicenseNumber +//0..* PassportNumber +//0..1 Deceased + + Element: PlaceOfBirth + Concept: MTH#C0032040 + Description: "The location of a birth event. There may be multiple entries, but a person has only one place of birth." + Value: Address + + Element: MultipleBirth + Concept: MTH#C0026753 + Description: "Indication if the person was part of a multiple birth event." + Value: boolean + 0..1 MultipleBirthOrder + + Element: MultipleBirthOrder + Concept: LNC#73771-8 + Description: "Order of birth of the person in multiple birth event (if part of multiple birth)." + Value: integer + // should be positiveInt, but it is an integer in FHIR (no issue yet logged) + + Element: BirthSex + Concept: MTH#C4086849 + Description: "Administrative sex assigned at birth and recorded on birth certificate." + Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-birthsex + + Element: Race + Concept: MTH#C0034510 + Description: "Subjective association of a person with a named category of humans sharing common history, traits, place of family origin, nationality, tribe, or other inherited background." + Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity + 0..* RaceDetail + + Element: RaceDetail + Concept: TBD + Description: "Additional description of race or heritage." + Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/detailed-race or CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity + + Element: Ethnicity + Concept: MTH#C0015031 + Description: "Indicator of Hispanic or Latino origin." + Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity + 0..* EthnicityDetail + + Element: EthnicityDetail + Concept: TBD + Description: "Additional description of ethnicity." + Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity or CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/detailed-ethnicity + + Element: MothersMaidenName + Concept: MTH#C0806887 + Description: "The name of the mother as it was or likely to have been recorded on the birth certificate of the subject. This is most likely the name prior to marriage of the mother (aka the maiden name)." + Value: HumanName + + Element: FathersName + Concept: TBD + Description: "The name of the father as it was or likely to have been recorded on the birth certificate of the subject; most likely the name of the father at the time of birth of the subject." + Value: HumanName + + Element: SocialSecurityNumber + Concept: MTH#C1301821 + Description: "A US social security number (SSN)." + Value: string // note that missing value reasons include "none" - meaning the subject does not have a SSN + + Element: DriversLicenseNumber + Concept: TBD + Description: "Identifying information from a drivers license." + Value: string + 0..1 StateOfIssue + 0..1 EffectiveTimePeriod + + Element: StateOfIssue + Concept: TBD + Description: "A state or country acting as an assuing authority for a document." + Value: State + + Element: PassportNumber + Concept: MTH#C1549737 + Description: "Credential indicating citizenship." + Value: string + 1..1 CountryOfIssue + 0..1 EffectiveTimePeriod + + Element: CountryOfIssue + Concept: TBD + Description: "A country acting as an assuing authority for a document." + Value: Country + + + Element: MedicalInterpreterNeeded + Concept: MTH#C1442531 + Description: "Whether the subject requires an interpreter to communicate with an English-speaking provider." + Value: CodeableConcept from YesNoUnknownVS + 1..1 Language + + + Element: MaritalStatus + Concept: MTH#C0024819 + Description: "The most recent marital status of a person." + Value: CodeableConcept from FHIR/marital-status if covered Element: AnonymizedFlag Concept: MTH#C3858751 @@ -419,11 +441,6 @@ Description: "A person relevant to the health or social situation of the subject Description: "Additional information about a person's use of language." Value: CodeableConcept from LanguageQualifierVS - Element: ActiveFlag - Concept: TBD - Description: "If the ActiveFlag is false, it indicates the record or item is no longer to be used and should generally be hidden for the user in the UI." - Value: boolean - Element: Deceased Concept: MTH#C0011065 Description: "An indication that the person is no longer living, given by a date, time of death, or a boolean value which, when true, indicates the person is deceased." @@ -441,23 +458,6 @@ Description: "A person relevant to the health or social situation of the subject Description: "The age, age range, or age group when the cessation of life happens." Value: Age or Range - Element: ActiveFlagAsaCodeableConcept - Concept: TBD - Description: "If the ActiveFlag is false, it indicates the record or item is no longer to be used and should generally be hidden for the user in the UI." - Value: CodeableConcept - - Element: ExternalHealthRecord - Based on: Entity - Concept: TBD - Description: "A health record other than the current health record; may have been used to help populate the current record." - 1..1 Identifier - 1..1 AccessTime - - Element: AccessTime - Concept: TBD - Description: "Point in time when data was accessed." - Value: dateTime - EntryElement: Organization Based on: Entity diff --git a/spec/cimi_entity_map.txt b/spec/cimi_entity_map.txt index fd89a3a1..bf07b7fa 100644 --- a/spec/cimi_entity_map.txt +++ b/spec/cimi_entity_map.txt @@ -12,13 +12,13 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: Person.ContactPoint maps to telecom Person.LanguageUsed maps to communication Person.DateOfBirth maps to birthDate + Person.MaritalStatus maps to maritalStatus // PlaceOfBirth maps to http://hl7.org/fhir/StructureDefinition/birthPlace // MultipleBirth maps to multipleBirth[x].boolean // MultipleBirth.MultipleBirthOrder maps to multipleBirth[x].integer // BirthSex maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex - Race maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-race - Ethnicity maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity - MaritalStatus maps to maritalStatus +// Race maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-race +// Ethnicity maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity // MothersMaidenName maps to http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName // MedicalInterpreterNeeded maps to http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired // Deceased maps to deceased[x].boolean diff --git a/spec/cimi_topic.txt b/spec/cimi_topic.txt index 68c33c74..c0a28e1e 100644 --- a/spec/cimi_topic.txt +++ b/spec/cimi_topic.txt @@ -1,23 +1,21 @@ Grammar: DataElement 5.0 Namespace: cimi.topic Description: "The Topic Core package contains the top-level specializations of the Statement Topic class, namely, the FindingTopic, ActionTopic (ProcedureTopic), and EventTopic classes." -Uses: shr.core, shr.base, cimi.core, cimi.context, cimi.element, cimi.entity, cimi.statement - -CodeSystem: HL7V20074 = http://hl7.org/fhir/v2/0074 +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.entity, cimi.statement, cimi.datatypes Element: StatementTopic Based on: NonIndependent Concept: TBD -Description: "Compositional and reusable grouping of clinical statement attributes that make up the clinical focus of a statement. +Description: "Compositional and reusable grouping of clinical statement attributes that make up the clinical focus of a statement. StatementTopic class attributes are aligned with SNOMED CT Concept Model attributes when such an overlap exists. Note that this class does not include contextual attributes such as the nature of the action (ordered, proposed, planned, etc...), the nature of the patient state being described (e.g., present, suspected present, absent), and the attribution of this information (the who, when, where, how, why of the information recorded)." 1..1 TopicCode Element: TopicCode Concept: TBD - Description: "The concept representing the finding or action that is the topic of the statement. - - For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic independent of the context of the action or the finding." + Description: "The concept representing the finding or action that is the topic of the statement. + + For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." Value: CodeableConcept Abstract Element: ActionTopic @@ -29,43 +27,17 @@ Description: "An entry related to an action or intervention, whether potential Element: FindingTopic Based on: StatementTopic Concept: TBD -Description: "Base class - independent of context - for all kinds of determinations: questions/answers, conditions, observations, allergies, and other findings. +Description: "Base class - - for all kinds of determinations: questions/answers, conditions, observations, allergies, and other findings. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." 0..1 FindingMethod 0..1 Details 0..* Media - -Element: ObservationTopic -// All attributes of observation are defined at this level. Any subclass uses subtractive methods to define relevant attributes -Based on: FindingTopic -Concept: MTH#C1554188 -Description: "The base class, independent of context for evaluations (measurements, tests, or questions). The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered -0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? -0..1 Focus -0..1 ref(Device) -0..1 ref(Specimen) -0..* Precondition -0..* ReferenceRange // applies to a quantitative measurement only -0..* EvaluationComponent -0..1 PanelMembers - - Element: Focus Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. For example, the finding could deal with a condition, a behavior, a wound, or tumor. These are entities that are implied by clinical statements (see cimi.entity.MaterializedAssertion)" Value: string or CodeableConcept or Identifier or ref(EntityOrRole) -Element: LaboratoryObservationTopic -Based on: ObservationTopic -Description: "The topic composition for laboratory observations. A specimen is required, anatomical location is excluded (since the specimen indicates the collection body site). Also includes a diagnostic service (indicating the type of laboratory), not present in general observations." -1..1 ref(Specimen) -0..0 AnatomicalLocation // AnatomicalLocation is where the Specimen was collected - Category is OBSCAT#laboratory -0..* DiagnosticService - - Element: AssertionTopic Based on: FindingTopic Description: "The base topic for conditions, allergies, adverse events, etc. These are things asserted to exist or not. The Value is interpreted in the context of the class; for an AdverseSensitivityToSubstance, the TopicCode is the substance, for a Condition, the TopicCode represents the type of condition found." diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 7a6231cc..87f7fc34 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -346,7 +346,6 @@ Description: "An address expressed using postal conventions (as opposed to GP Description: "Country - a nation as commonly understood or generally accepted, expressed in ISO 3166 Alpha-2 (2-letter) codes." Value: string - //------------ Complex Data Types not in FHIR ---------------- Element: Count @@ -361,8 +360,12 @@ Value: string 0..1 Language +Element: Details +Concept: MTH#C0947611 +Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." +Value: string // change to language-text -/* No can do! Can't restrict "value is type" to a primitive +/* Can't restrict "value is type" to a primitive Element: UnsignedIntegerRange Description: "A range of non-negative integers. One of the two bounds must be present, and the lower bound must be less than or equal to the upper bound." 0..1 LowerBound value is type unsignedInt diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 4d3aa11e..d2496813 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -211,7 +211,6 @@ includes 0..1 DailyWorkHours Element: SocialHistoryObservation Based on: Observation Description: "A simplified observation for social histories." -//0..1 PersonOfRecord Category is OBSCAT#social-history 0..1 FocalSubjectModifier // Get rid of some unnecessary CIMI-isms @@ -235,7 +234,7 @@ Description: "A simplified observation for social histories." //0..0 FindingStatus Element: FocalSubjectModifier - Description: "The focus of the observation, if someone other than the person of record (subject)." + Description: "The focus of the observation, if someone other than the person of record (subject), identified only by the relationship to the PersonOfRecord." Value: RelationshipToPersonOfRecord from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered From f05b166b7c541544743e6602d6b1106ecc125400 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 15 Aug 2018 12:25:06 -0400 Subject: [PATCH 037/289] Finally fixed the glitch. Added some changes requested in ODH --- spec/LandingPageWound.html | 41 ++++++++++++++++++++++--------------- spec/cimi_core.txt | 9 ++------ spec/cimi_core_map.txt | 25 ++++++++++++++++++++++ spec/cimi_entity.txt | 5 +++-- spec/cimi_statement.txt | 2 +- spec/cimi_statement_map.txt | 1 - spec/shr_core_map.txt | 4 ---- spec/shr_occupation.txt | 2 +- 8 files changed, 56 insertions(+), 33 deletions(-) create mode 100644 spec/cimi_core_map.txt diff --git a/spec/LandingPageWound.html b/spec/LandingPageWound.html index eb69b4e1..f01dd9dd 100644 --- a/spec/LandingPageWound.html +++ b/spec/LandingPageWound.html @@ -1,13 +1,30 @@

- This is the "CIMI-Lite" version of the Skin and Wound FHIR Implementation Guide, based on a simplified version of the CIMI class hierarchy.
+This is an experimental "Mini-CIMI" version of a Skin and Wound Assessment FHIR Implementation Guide, based on a simplified modeling strategy and simplified base classes.

-

Skin and Wound CIMI-FHIR Implementation Guide (IG)

+

Background: The Skin and Wound Demonstration Project

-Patient Care Work Group and the Clinical Information Modeling Initiative (CIMI) are conducting a demonstration project involving Skin and Wound (SW) Assessment clinical domain. The purpose of this project is to compare different ways to model and develop FHIR profiles for the SW domain. Several groups, using different modeling tools, are participating in this demonstation. The goal is to learn what tools and modeling styles are most effective. +The Clinical Information Modeling Initiative (CIMI) is focused on creating logical models of healthcare information, independent of implementation technologies and patterns, decoupling content from the periodic changes we experience in implementation technology. This Implementation Guide (IG) is part of a demonstration project showing how different groups, with different tools, approach CIMI modeling. Each group (and each IG on this ballot) has implemented the same Skin and Wound domain.

-

Background

-

-For several years and in the course of several for-comment ballots, CIMI has been developing class hierarchies with the intent of establishing a common basis for logical models of healthcare entities and statements. Up to this point, these models have remained largely in the realm of theory. Recognizing the importance of +

Background: CIMI Modeling

+

Working since 2011, CIMI has established a core object-oriented hierarchy that consists of over 200 classes and datatypes. Under CIMI, modeling a domain such as Skin and Wound involves using these classes and applying CIMI architecture, methodology, and modeling style. In practical terms, creating CIMI Domain-specific models involves:

+
    +
  1. Analyzing domain information and deciding how best to parcel it up to map to CIMI-defined base class or base archetypes.
  2. +
  3. If necessary, extending the CIMI class hierarchy to capture unique features of the domain (adding new attributes).
  4. +
  5. Combining the resulting classes to form the desired domain model classes (for example, combining StatementTopic and StatementContext classes to form the desired ClinicalStatement).
  6. +
  7. Constraining the resulting classes or archetypes by determining units of measure, concept codes such as LOINC, restricting cardinality, binding properties to value sets, or constraining the type of attributes, to create logical models.
  8. +
  9. Mapping the resulting classes to the target implementation platform (e.g., FHIR).
  10. +
+

In CIMI, the modeling actions involve two different metamodels: BMM for extending the class hierarchy, and ADL for applying constraints. In theory, tooling can hide this gap, but in practice, there are still no user-friendly tools that accomplish that.

+

Will CIMI Scale?

+

CIMI is no different than many other modeling activities, in that it involves numerous decisions that fall into gray areas, among them: deciding how to factor a clinical domain into discrete pieces that map to CIMI base classes, determining which classes to extend, where to apply constraints, how to manipulate details of the logical model to obtain reasonable FHIR profiles, and how to create modular implementation guides from an interconnected logical model. CIMI hopes to gain insight on these issues through the current demonstration project, but larger questions loom.

+

The current author (Mark Kramer) has a wealth of practical experience creating CIMI models and generating FHIR profiles. His experience includes creating several balloted FHIR implementation guides from CIMI, including two versions of the HL7 FHIR® Implementation Guide: Breast Cancer Data, Release 1 - US Realm and the HL7 FHIR Profile: Occupational Data for Health (ODH), Release 1 (Standard for Trial Use). His experience also includes leading a CIMI modeling FHIR Connectathon track, creating a complete toolchain and domain-specific language for CIMI modeling, and making hundreds of contributions to the CIMI reference model. The conclusion drawn from all these activities is that the CIMI modeling process is too complex, and must be simplified before CIMI can be widely adopted.

+

+

Base Classes

+ + +

 

+

 

+

Scope

@@ -18,17 +35,7 @@

Relationship to CIMI

Known Issues and Limitations

- -General attributes are replaced by specific attributes with specific LOINC codes; for example, in WoundPresenceAssertion, the attribute ConditionCause is inherited from ConditionPresenceAssertion. But when applied to wounds, the attribute should be named WoundTypeEtiology and identified by the LOINC code LNC#11373-8 (Injury Cause). It's easy to bind a new value set, but not so easy to change the attribute name or apply the model meaning code in FHIR. - -DeltaFlag (CIMI Name) versus WoundTrend (SW LOINC 89253-9 Trend). WoundTrend answers (LL4938-8) are Improved, Deteriorated, Stablized, Resolved. -DeltaFlag is type WoundTrend -It isn't apparent why WoundTrend would be treated differently that other evaluation components; it is an attribute rather than a component. It is because DeltaFlag is defined in EvaluationResultRecordedContext. Seems rather arbitrary. - -Interpretation is type WoundAssessmentInterpretation - - -

+Sed ligula justo, vehicula eu purus et, porttitor congue nibh. Aliquam efficitur eros a nulla varius, in lacinia augue bibendum. In mi erat, rutrum id eleifend eget, scelerisque a arcu. Cras vel posuere urna. Mauris condimentum nunc orci, ut lacinia sem placerat sit amet. Suspendisse congue egestas ipsum quis efficitur.

Content of Ballot Documents

Aliquam justo est, mollis vel semper sit amet, consequat eu lorem. Phasellus vitae nunc in nisi hendrerit porttitor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut viverra lacinia consequat. Fusce eget dui sed ex rhoncus mattis. Duis dignissim ut massa consequat tristique. Cras sollicitudin maximus eros at pulvinar. diff --git a/spec/cimi_core.txt b/spec/cimi_core.txt index 90addd2c..e7df8478 100644 --- a/spec/cimi_core.txt +++ b/spec/cimi_core.txt @@ -42,14 +42,9 @@ Description: "An entry in a patient record or in a report, generally used for th Element: PersonOfRecord Concept: TBD Description: "The person this entry belongs to." - Value: ref(Patient) + Value: ref(Person) -/* Element: SubjectIfNotPersonOfRecord - Concept: MTH#C0449416 - Description: "The subject of the observation, if someone other than the person of record (the patient) is the subject, for example, a relative of the person of record." - Value: 0..1 ref(EntityOrRole) //string or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) - 0..1 RelationshipToPersonOfRecord - +/* Element: SourceOfInformation Concept: MTH#C0449416 Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." diff --git a/spec/cimi_core_map.txt b/spec/cimi_core_map.txt new file mode 100644 index 00000000..280182f4 --- /dev/null +++ b/spec/cimi_core_map.txt @@ -0,0 +1,25 @@ +Grammar: Map 5.1 +Namespace: cimi.core +Target: FHIR_STU_3 + + +PersonOfRecord maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: + Person.ActiveFlag maps to active + Person.HumanName maps to name + Person.AdministrativeGender maps to gender + Person.Headshot maps to photo + Person.Address maps to address + Person.ContactPoint maps to telecom + Person.LanguageUsed maps to communication + Person.DateOfBirth maps to birthDate + Person.MaritalStatus maps to maritalStatus +// PlaceOfBirth maps to http://hl7.org/fhir/StructureDefinition/birthPlace +// MultipleBirth maps to multipleBirth[x].boolean +// MultipleBirth.MultipleBirthOrder maps to multipleBirth[x].integer +// BirthSex maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex +// Race maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-race +// Ethnicity maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity +// MothersMaidenName maps to http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName +// MedicalInterpreterNeeded maps to http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired +// Deceased maps to deceased[x].boolean +// Deceased.DateOfDeath maps to deceased[x].dateTime \ No newline at end of file diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index 4a208cb7..1affde91 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -25,13 +25,14 @@ Based on: Role Concept: MTH#C1299487 Description: "A person in the role of a patient." 1..1 ref(Person) -0..1 ActiveFlag -0..* ref(ExternalHealthRecord) +//0..1 ActiveFlag +//0..* ref(ExternalHealthRecord) Element: ActiveFlag Concept: TBD Description: "If the ActiveFlag is false, it indicates the record or item is no longer to be used and should generally be hidden for the user in the UI." Value: boolean + Element: ActiveFlagAsaCodeableConcept Concept: TBD Description: "If the ActiveFlag is false, it indicates the record or item is no longer to be used and should generally be hidden for the user in the UI." diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 05ef9ab1..5b56b248 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -202,7 +202,7 @@ Based on: FindingStatement Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -1..1 PersonOfRecord +1..1 PersonOfRecord 0..0 StatementTopic // eliminate to avoid making everything more complicated 1..1 TopicCode ContextCode is SCT#424975005 "Record Entity" diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index 7d6221e8..d71f61f5 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -6,7 +6,6 @@ ClinicalStatement maps to DomainResource: Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: PersonOfRecord maps to subject -// SubjectIfNotPersonOfRecord.RelationshipToPersonOfRecord maps to http://hl7.org/fhir/StructureDefinition/observation-focal-subject // CodeableConcept // SourceOfInformation.Value maps to performer // Why doesn't this work??? // Annotation maps to extension // RecordStatus maps to extension diff --git a/spec/shr_core_map.txt b/spec/shr_core_map.txt index dba2eced..b6af2904 100644 --- a/spec/shr_core_map.txt +++ b/spec/shr_core_map.txt @@ -106,7 +106,3 @@ SampledData maps to SampledData: LowerLimit maps to lowerLimit UpperLimit maps to upperLimit Dimensions maps to dimensions - - - - \ No newline at end of file diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index d2496813..d8c68ef2 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -18,7 +18,7 @@ Description: "A composition represents a document such as a patient record, a kn Description: "Represents a section containing entries in a social history composition." ClinicalStatement is type SocialHistoryObservation -EntryElement: OccupationalDataSummary +EntryElement: OccupationalDataForHealth Concept: LNC#74166-0 Based on: SocialHistoryComposition Description: "Current and past activities for profit, wages, salary, or as a service to others." From fed03fe57257541cd697d2d4631b2ea95eb3c238 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 15 Aug 2018 17:56:26 -0400 Subject: [PATCH 038/289] minor changes to landing page --- spec/LandingPageWound.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/LandingPageWound.html b/spec/LandingPageWound.html index f01dd9dd..d1043cef 100644 --- a/spec/LandingPageWound.html +++ b/spec/LandingPageWound.html @@ -1,9 +1,9 @@

-This is an experimental "Mini-CIMI" version of a Skin and Wound Assessment FHIR Implementation Guide, based on a simplified modeling strategy and simplified base classes.
+This is an experimental "Mini-CIMI" version of a Skin and Wound Assessment FHIR Implementation Guide, based on a simplified modeling strategy and Standard Health Record (SHR) base classes.

-

Background: The Skin and Wound Demonstration Project

+

Background: CIMI Skin and Wound Demonstration Project

-The Clinical Information Modeling Initiative (CIMI) is focused on creating logical models of healthcare information, independent of implementation technologies and patterns, decoupling content from the periodic changes we experience in implementation technology. This Implementation Guide (IG) is part of a demonstration project showing how different groups, with different tools, approach CIMI modeling. Each group (and each IG on this ballot) has implemented the same Skin and Wound domain. +The Clinical Information Modeling Initiative (CIMI) is focused on creating logical models of healthcare information, independent of implementation technologies and patterns, decoupling content from the periodic changes we experience in implementation technology. This Implementation Guide (IG) is part of a demonstration project showing how different groups, with different tools, approach CIMI modeling. To expedite comparison, each group has implemented the same Skin and Wound domain.

Background: CIMI Modeling

Working since 2011, CIMI has established a core object-oriented hierarchy that consists of over 200 classes and datatypes. Under CIMI, modeling a domain such as Skin and Wound involves using these classes and applying CIMI architecture, methodology, and modeling style. In practical terms, creating CIMI Domain-specific models involves:

From 8cc9ec4d1b2c4ad1de39a4f622604e64f73a0180 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 16 Aug 2018 11:27:59 -0400 Subject: [PATCH 039/289] Updated landing page - wound --- .../colorschememapping.xml | 2 + .../filelist.xml | 6 + .../themedata.thmx | Bin 0 -> 3339 bytes spec/LandingPageWound.html | 1837 ++++++++++++++++- 4 files changed, 1799 insertions(+), 46 deletions(-) create mode 100644 spec/LandingPageWound (FHIMI)_files/colorschememapping.xml create mode 100644 spec/LandingPageWound (FHIMI)_files/filelist.xml create mode 100644 spec/LandingPageWound (FHIMI)_files/themedata.thmx diff --git a/spec/LandingPageWound (FHIMI)_files/colorschememapping.xml b/spec/LandingPageWound (FHIMI)_files/colorschememapping.xml new file mode 100644 index 00000000..6a0069cd --- /dev/null +++ b/spec/LandingPageWound (FHIMI)_files/colorschememapping.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/spec/LandingPageWound (FHIMI)_files/filelist.xml b/spec/LandingPageWound (FHIMI)_files/filelist.xml new file mode 100644 index 00000000..90628ab2 --- /dev/null +++ b/spec/LandingPageWound (FHIMI)_files/filelist.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/spec/LandingPageWound (FHIMI)_files/themedata.thmx b/spec/LandingPageWound (FHIMI)_files/themedata.thmx new file mode 100644 index 0000000000000000000000000000000000000000..3d2a4372ca5888704157184c6edc22884c62dae9 GIT binary patch literal 3339 zcmaKu2{hDS8^@B!EXKmY(B4w#{H zw`{ZiMA!fTUe<1l^78bzu}GbwSxtExIayNZ9l$?p^ zjPHCH(%O{)0g;BQi!C>pMwIi~C1N0V*%3u%uKI*eGk9MuF+IE3pkhf|1~Mmn)($@o zHytTM$J`PUIPHk%PG4?((IgFz4%d&#w7>^{^maC?M#STMz_>@0brrVP%KlQ}Tj2+L zuA7eu%*76Z8FtL&|#^J5AnBa+zE$X>3^P__o+?#0e)$t*x z?7L0cw)rqCn$x`f-C?$2tcq-J?*^Ftqh9#I;!mxtI-S}D0C2E&2Oq4vuN>^>8kz9c zl_<{{{UxgTc3-GDg(x8DFNepWBHD9zU{41YvRSOh8RQL!Y@HqiS{Ven|JLz7uw;prX)VZ2_Qe9B?&yCbGe z7UkMbeIy==fzGJXB}iCt;x&gMaC)xb`%^~!DI&DjAcy`*7S41dSK;#Ta6t( z9i6d0KRbl8+xP%cj7N(RS`dI6fnO#_>s+dST~1g9pt6OKo%xi!(V?k{+weEzeAFyM zt_!l+`?zAUJ+Qma7ei!=g-hP)iM*0^XLRy^oCy>lJ-g34uHWTr9{Lv*7gbhE6C13R zp^ATzrP((?ToL!qT21#ekA2XYlaV^Wrt;_H>z19#Cfh5rca8&r9b6VoE7-uPy=U=U}&5r6zGv%?sj@ zvh(e*hRFnlVMvyyL`A7B&C-IDD<~rGs4MT6cJm9hf*!m=KS!m#wU-(ov|i*%UEN&I z$^63bdjo>p5BgCv@`&;kA#UENm5i_dp* zLbM~~b0xnCgCIGvKWUL%I2%!D*qhbsT8MVDC~E4n7xX zj5piuOD;B0u7fD~U$eIYRvki-n>o$|YjoFO(iAr>){p9Fw;w^Y6m4(LHWMuUk~z$8 zXbs}Brduw;j#y{Im$Of+$w+ZU$h)j?Yzb*iX?Ttuecn-~oyVTPCW6kqR&~8jm?+jM zlt15B5Ik^Hc@9MH9Uq$*P_-D)^)C zftTKp3|2SyudZTT3+Xk8eF*&0*V% z3vv$I3Ryu%d%;}YKjcSBn$)5 zo<={H+R7%n`Bktb_ob}v%jD_eM6F{MH7d&qSoZ?32anFdF~F#Q$QyBLeK>PSPPV;2 zy+ZPuONamzw3w`*h8epW73~TmcGp}NYJh%n<7M&{a14#1l5OmdR#@RK#~4n@cYu1J zeE7pUDz7N##;bheM4xO#@VqWBc6yV6F`NlSHtmuydC=XJ!EcQ3RnTvh6F!1me2&fP z|3nWrA1Xcjy_&&t7@S~JK1P3W)>GrFctv8z%Fe^P4z?)G_cDzy9Q_Z-jZ!;V&^Gv8hsRE3&k z_bFJPMZ4r-jQS*PF!P9wu{KOAIa(TaYAmZ2l98SK=uy z=fhpm_r8rI`lp4HrS5_$o4_W|cOjg3*tNZ_m(?`kw-SKM;XHCCg{MLJMBwM!HhC|* zj$>x+>L;!fPi)&^6WU&cIQG@Izt|%f;vuLvU(_A!p@!o4U?7$w7cXJH-EM0B+^%t zFkj&FQ7WgP1J1PNv0%aV^*t!jk+;^*5j`HJ6WilVrRddf9#G$s@%ja)kZE~O^^8sL zsR_T6*l%p1_th4=4hAh(nffdaIO|L2khxw#wZWUf?}(c8*8HS?Xl}jA-ixmmOUNQd z7=}drv$)QTO|HbRO1d&CqNN)K`Vb##;v(9pwIK1R|13JN(Zpm#LVf<}5Vh?J`oi9% zslXGm9gKW~E7NGg=~kHmx4J|P7usR7>LGDQqbm}d0QLMmf)!f=o zR94MkYtS-SHr$56|GjOY?d@_dm|cub+xzIgo;B^YW4{{HB=t2zLs;ZdM8 zf@XP<8)jMt_dONpF351p#k(B8bcvqya2T(j|P; z0Kr$3yB0pOXJ%$Z6w$G7y_8YF3{{(zO-T_U;^pdy;X||VBM%RaHFZnAJ+*0k@^vhS zsGT1X`MIJU#g>gI@7kupWWb%Ymy&D&tnl655P@;Lp zNgFy>;21R*8Jp;P<04NXBSK?{`$y8~f_C4Ef!ea}Ln*tCoN1*Y5j7tpTCvuNUF7eh z$Bb^gQ}!zKR$oOryl$h^$e=KTFQ zVq58kqc~ReudAub{p91Nu8lS6%EUU(`QfE2I&@5}vcjZNO}q2sVEB~(^9IjiQ|Zz@ z0!@{9g|qerVgdtXlB{d&*PB9URdsN!Tc`gmaK3+vgrn2eAbKI57AwTaKFIEMehujf zcXf1WSdgj3uaq_1sOouRueBtAOd}LoxLCE5U}t-IjIWy};kkw-8Dc@S2 zMr~n+fzc^8P!X$$D`rpp+HclSxQSOnMF!mpkrVuUAVKJgJfSMDbuT+@lDQfb^5wI} z2)%DCqvjELnHFNnI~2fN>0l6o6SOF6)zoyqEE@6&#bXtkf>D}2-$)$HKk3RfT1avc z@Naxz^&+644cVf~X)|Ghw*()QK|U#(4romA?{!(e?cbt!aJ^#b6gxT>pD+f(*!RrQ z!~V!1Tz$B_I@a?o%sPecc*g$*uYdE%ZzS>`5Hmi|F3%Uqj0gaFdG$B)Budfl_LdFo zj+|8HI;9CQpI_iAmj%M29baTzC8Xt$crTx%E4Y*j0o7(wu4T4))X&FjS%6GpM%0}u zF%j`z@CAP7L_=v~DTswMOd;LpAk^SNc5m$YweWJ4!UXiBL}3xKi_ojbydIkWHEUPM zD@gMto?t3KFx4z`yJky8D8^Y146^%Sj`SUg+AICAqx=0|S*1pM$hM7*FUMKN{>HCe zY$pK!o6K3)ej9(_bTh+$3hYGHU(xccdj1BkI|Fy3->*PH78C!5fPdrQZ{^>qw3EYr sDGmNf>EBegQ)6cn{L;ud@Xu`iPfM5??q&ZOxR>?WvD~NsWOu;70J8Vy&j0`b literal 0 HcmV?d00001 diff --git a/spec/LandingPageWound.html b/spec/LandingPageWound.html index d1043cef..54d69fa4 100644 --- a/spec/LandingPageWound.html +++ b/spec/LandingPageWound.html @@ -1,46 +1,1791 @@ -

-This is an experimental "Mini-CIMI" version of a Skin and Wound Assessment FHIR Implementation Guide, based on a simplified modeling strategy and Standard Health Record (SHR) base classes.
-

-

Background: CIMI Skin and Wound Demonstration Project

-

-The Clinical Information Modeling Initiative (CIMI) is focused on creating logical models of healthcare information, independent of implementation technologies and patterns, decoupling content from the periodic changes we experience in implementation technology. This Implementation Guide (IG) is part of a demonstration project showing how different groups, with different tools, approach CIMI modeling. To expedite comparison, each group has implemented the same Skin and Wound domain. -

-

Background: CIMI Modeling

-

Working since 2011, CIMI has established a core object-oriented hierarchy that consists of over 200 classes and datatypes. Under CIMI, modeling a domain such as Skin and Wound involves using these classes and applying CIMI architecture, methodology, and modeling style. In practical terms, creating CIMI Domain-specific models involves:

-
    -
  1. Analyzing domain information and deciding how best to parcel it up to map to CIMI-defined base class or base archetypes.
  2. -
  3. If necessary, extending the CIMI class hierarchy to capture unique features of the domain (adding new attributes).
  4. -
  5. Combining the resulting classes to form the desired domain model classes (for example, combining StatementTopic and StatementContext classes to form the desired ClinicalStatement).
  6. -
  7. Constraining the resulting classes or archetypes by determining units of measure, concept codes such as LOINC, restricting cardinality, binding properties to value sets, or constraining the type of attributes, to create logical models.
  8. -
  9. Mapping the resulting classes to the target implementation platform (e.g., FHIR).
  10. -
-

In CIMI, the modeling actions involve two different metamodels: BMM for extending the class hierarchy, and ADL for applying constraints. In theory, tooling can hide this gap, but in practice, there are still no user-friendly tools that accomplish that.

-

Will CIMI Scale?

-

CIMI is no different than many other modeling activities, in that it involves numerous decisions that fall into gray areas, among them: deciding how to factor a clinical domain into discrete pieces that map to CIMI base classes, determining which classes to extend, where to apply constraints, how to manipulate details of the logical model to obtain reasonable FHIR profiles, and how to create modular implementation guides from an interconnected logical model. CIMI hopes to gain insight on these issues through the current demonstration project, but larger questions loom.

-

The current author (Mark Kramer) has a wealth of practical experience creating CIMI models and generating FHIR profiles. His experience includes creating several balloted FHIR implementation guides from CIMI, including two versions of the HL7 FHIR® Implementation Guide: Breast Cancer Data, Release 1 - US Realm and the HL7 FHIR Profile: Occupational Data for Health (ODH), Release 1 (Standard for Trial Use). His experience also includes leading a CIMI modeling FHIR Connectathon track, creating a complete toolchain and domain-specific language for CIMI modeling, and making hundreds of contributions to the CIMI reference model. The conclusion drawn from all these activities is that the CIMI modeling process is too complex, and must be simplified before CIMI can be widely adopted.

-

-

Base Classes

- - -

 

-

 

- -

-

Scope

-

-Cras pellentesque efficitur consectetur. Duis sed tristique lorem. Fusce ultrices neque eu euismod rhoncus. Etiam scelerisque vehicula lacus ut faucibus. Fusce arcu lacus, tempus venenatis massa sit amet, dictum lobortis purus. In nunc nisi, consectetur semper magna sit amet, fermentum pulvinar dui. Nulla mollis dolor a diam condimentum sollicitudin. Sed egestas urna a leo ullamcorper molestie.

-

Relationship to CIMI

-

-Vestibulum accumsan, lorem ac volutpat viverra, ex felis lacinia felis, condimentum pharetra magna ex ut elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Phasellus semper accumsan eros, id congue turpis malesuada ac. Donec eget porta felis. Phasellus eu massa massa. Vestibulum sem erat, imperdiet sed feugiat et, tempus nec turpis. Ut consectetur urna nec eros pharetra, consectetur feugiat ligula facilisis. -

-

Known Issues and Limitations

-

-Sed ligula justo, vehicula eu purus et, porttitor congue nibh. Aliquam efficitur eros a nulla varius, in lacinia augue bibendum. In mi erat, rutrum id eleifend eget, scelerisque a arcu. Cras vel posuere urna. Mauris condimentum nunc orci, ut lacinia sem placerat sit amet. Suspendisse congue egestas ipsum quis efficitur.

-

Content of Ballot Documents

-

-Aliquam justo est, mollis vel semper sit amet, consequat eu lorem. Phasellus vitae nunc in nisi hendrerit porttitor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut viverra lacinia consequat. Fusce eget dui sed ex rhoncus mattis. Duis dignissim ut massa consequat tristique. Cras sollicitudin maximus eros at pulvinar. -

-

Questions for Reviewers

-

-Aliquam justo est, mollis vel semper sit amet, consequat eu lorem. Phasellus vitae nunc in nisi hendrerit porttitor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut viverra lacinia consequat. Fusce eget dui sed ex rhoncus mattis. Duis dignissim ut massa consequat tristique. Cras sollicitudin maximus eros at pulvinar. -

+ + + + + + + + + + + + + + + + + +
+ +

This is a “Full +CIMI” version of a Skin and Wound Assessment FHIR Implementation Guide, based +on CIMI based classes, and employing topic-context flattening.

+ +

 

+ +

The Skin and Wound Assessment +Demonstration Project

+ +

 The +Clinical Information Modeling Initiative (CIMI) is focused on creating logical +models of healthcare information, independent of implementation technologies +and patterns, decoupling clinical content from periodic changes in +implementation technology. This Implementation Guide (IG) is part of a +demonstration project showing how different groups, with different tools, +approach CIMI modeling. To expedite comparison, each group has implemented the +same Skin and Wound Assessment domain.

+ +

Approach

+ +

Dealing with Nested Observations

+ +

One of the key features of wound assessment is “nestedness”, +a hierarchical structure of containment with 1-to-many relationships at each +level. One patient can have multiple wounds, each wound can have multiple +tunnels, and each tunnel on each wound on each patient can have a measured +length. This “nestedness” leads to design choices about how to model the “sub-observations”.

+ +

 

+ +

Approaches to deal with the hierarchical nature of wound +assessment include:

+ +

                     +A component approach, where sub-observations are +inseparable parts of a parent observation, or

+ +

                     +A panel approach, where sub-observations are independent +observations, gathered into a parent panel observation.

+ +

Either approach is feasible, and each has pros and cons. A +pure component approach keeps everything related to a single wound assessment +together, but requires complicated mapping to FHIR, since FHIR observation +components cannot have sub-components. A pure panel approach is also feasible, +and nicely modular, but that approach leads to problems pairing up related +observations, such as wound tunnel length and clock direction.

+ +

 

+ +

In this implementation, we take a hybrid approach, using +components wherever possible, and sub-observations where necessary. To be +clear, panel-type sub-observations are required where the panel observations themselves +have sub-observations or components.

+ +

 

+ +

The other key to our approach representing each wound by a +condition assertion (FindingSiteConditionPresenceStatement). A wound is an identifiable +entity located at a particular body site that maintains its identity over a +period of time. As such, a wound has properties indicative of a condition, +including onset time and abatement time. Explicitly representing the wound +allows multiple observations about the wound to refer back to the same wound.

+ +

 

+ +

The use case we have in mind is that many assessments of +the same wound can occur at different times during the clinical course of the +wound. These multiple assessments trace a relationship to the same wound by +means of a common wound identifier.

+ +

 

+ +

Flattening the Topic-Context Pattern

+ +

Using the topic-context pattern introduces additional +decisions. The author found it quite difficult to orchestrate the various +classes that must come together to represent the wound assessment panel.

+ +

 

+ +

 

+ +

Appendix: Key Mini-CIMI Classes

+ +

Observation

+ +

·       +Subject [type: Statement] 

+ +

·       +ObservableCode [Coding]

+ +

·       +ResultValue [various data types]

+ +

·       +Qualifier [Coding]

+ +

·       +FindingStatus [Coding]

+ +

·       +RelevantTime [dateTime or TimePeriod]

+ +

·       +FindingMethod [Coding]                                         

+ +

 

+ +

ObjectPresentOrAbsent

+ +

·       +Subject [type: Statement]

+ +

·       +ObjectTypeCode [Coding]

+ +

·       +ObjectIdentifier [string]

+ +

·       +PresentOrAbsent [Coding]

+ +

 

+ +

RelationshipPresentOrAbsent

+ +

·       +Subject [type: Statement]

+ +

·       +RelationshipCode [Coding]

+ +

·       +Object [Statement]

+ +

·       +PresentOrAbsent [Coding]

+ +

 

+ +

Composition

+ +

·       +Subject [Statement]

+ +

·       +TypeCode [Coding]

+ +

·       +Statement [0..*]

+ +

 

+ +
+ + + + From 6d759561ca47f0d2ee473d036f9e31c17cfa9de2 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 16 Aug 2018 12:45:23 -0400 Subject: [PATCH 040/289] Fixed landing page --- .../colorschememapping.xml | 2 - .../filelist.xml | 6 - .../themedata.thmx | Bin 3339 -> 0 bytes spec/LandingPageWound.html | 1678 +---------------- 4 files changed, 82 insertions(+), 1604 deletions(-) delete mode 100644 spec/LandingPageWound (FHIMI)_files/colorschememapping.xml delete mode 100644 spec/LandingPageWound (FHIMI)_files/filelist.xml delete mode 100644 spec/LandingPageWound (FHIMI)_files/themedata.thmx diff --git a/spec/LandingPageWound (FHIMI)_files/colorschememapping.xml b/spec/LandingPageWound (FHIMI)_files/colorschememapping.xml deleted file mode 100644 index 6a0069cd..00000000 --- a/spec/LandingPageWound (FHIMI)_files/colorschememapping.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/spec/LandingPageWound (FHIMI)_files/filelist.xml b/spec/LandingPageWound (FHIMI)_files/filelist.xml deleted file mode 100644 index 90628ab2..00000000 --- a/spec/LandingPageWound (FHIMI)_files/filelist.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/spec/LandingPageWound (FHIMI)_files/themedata.thmx b/spec/LandingPageWound (FHIMI)_files/themedata.thmx deleted file mode 100644 index 3d2a4372ca5888704157184c6edc22884c62dae9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3339 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 diff --git a/spec/LandingPageWound.html b/spec/LandingPageWound.html index 54d69fa4..01807b57 100644 --- a/spec/LandingPageWound.html +++ b/spec/LandingPageWound.html @@ -1,1597 +1,187 @@ - + - - - - - - - + - + - +
-

This is a “Full -CIMI” version of a Skin and Wound Assessment FHIR Implementation Guide, based -on CIMI based classes, and employing topic-context flattening.

+

This is a +“Full CIMI” version of a Skin and Wound Assessment FHIR Implementation Guide, +based on CIMI based classes, and employing topic-context flattening.

 

-

The Skin and Wound Assessment -Demonstration Project

+

The Skin and Wound Assessment Demonstration Project

 The Clinical Information Modeling Initiative (CIMI) is focused on creating logical @@ -1606,183 +196,79 @@

Approach

Dealing with Nested Observations

-

One of the key features of wound assessment is “nestedness”, -a hierarchical structure of containment with 1-to-many relationships at each -level. One patient can have multiple wounds, each wound can have multiple -tunnels, and each tunnel on each wound on each patient can have a measured -length. This “nestedness” leads to design choices about how to model the “sub-observations”.

+

One of the key features of wound assessment is +“nestedness”, a hierarchical structure of containment with 1-to-many +relationships at each level. One patient can have multiple wounds, each wound +can have multiple tunnels, and each tunnel on each wound on each patient can +have a measured length. This “nestedness” leads to design choices about how to +model the “sub-observations”.

-

 

+

 

Approaches to deal with the hierarchical nature of wound assessment include:

-

                     -A component approach, where sub-observations are -inseparable parts of a parent observation, or

+

                     +A component approach, where sub-observations are inseparable parts of a +parent observation, or

-

                     -A panel approach, where sub-observations are independent -observations, gathered into a parent panel observation.

+

                     +A panel approach, where sub-observations are independent observations, +gathered into a parent panel observation.

-

Either approach is feasible, and each has pros and cons. A -pure component approach keeps everything related to a single wound assessment +

Either approach is feasible, and each has pros and cons. +A pure component approach keeps everything related to a single wound assessment together, but requires complicated mapping to FHIR, since FHIR observation components cannot have sub-components. A pure panel approach is also feasible, and nicely modular, but that approach leads to problems pairing up related observations, such as wound tunnel length and clock direction.

-

 

+

 

In this implementation, we take a hybrid approach, using components wherever possible, and sub-observations where necessary. To be -clear, panel-type sub-observations are required where the panel observations themselves -have sub-observations or components.

+clear, panel-type sub-observations are required where the panel observations +themselves have sub-observations or components.

-

 

+

 

-

The other key to our approach representing each wound by a -condition assertion (FindingSiteConditionPresenceStatement). A wound is an identifiable -entity located at a particular body site that maintains its identity over a -period of time. As such, a wound has properties indicative of a condition, -including onset time and abatement time. Explicitly representing the wound -allows multiple observations about the wound to refer back to the same wound.

+

The other key to our approach representing each wound by +a condition assertion (FindingSiteConditionPresenceStatement). A wound is an +identifiable entity located at a particular body site that maintains its +identity over a period of time. As such, a wound has properties indicative of a +condition, including onset time and abatement time. Explicitly representing the +wound allows multiple observations about the wound to refer back to the same +wound.

-

 

+

 

The use case we have in mind is that many assessments of the same wound can occur at different times during the clinical course of the wound. These multiple assessments trace a relationship to the same wound by means of a common wound identifier.

-

 

+

 

Flattening the Topic-Context Pattern

Using the topic-context pattern introduces additional -decisions. The author found it quite difficult to orchestrate the various -classes that must come together to represent the wound assessment panel.

- -

 

- -

 

- -

Appendix: Key Mini-CIMI Classes

- -

Observation

+decisions. It was difficult to orchestrate the various classes that must come together +to represent the wound assessment panel. Therefore, the author decided to +flatten out the topic-context pattern. To do this, the context hierarchy was +combined with the clinical statement hierarchy, creating one hierarchy. Topic +was then folded into the appropriate places to form a complete clinical +statement. With this simplification, decisions on which of the three classes to +extend were eliminated.

-

·       -Subject [type: Statement] 

+

 

-

·       -ObservableCode [Coding]

+

 

-

·       -ResultValue [various data types]

- -

·       -Qualifier [Coding]

- -

·       -FindingStatus [Coding]

- -

·       -RelevantTime [dateTime or TimePeriod]

- -

·       -FindingMethod [Coding]                                         

- -

 

- -

ObjectPresentOrAbsent

- -

·       -Subject [type: Statement]

- -

·       -ObjectTypeCode [Coding]

- -

·       -ObjectIdentifier [string]

- -

·       -PresentOrAbsent [Coding]

- -

 

- -

RelationshipPresentOrAbsent

- -

·       -Subject [type: Statement]

- -

·       -RelationshipCode [Coding]

- -

·       -Object [Statement]

- -

·       -PresentOrAbsent [Coding]

- -

 

- -

Composition

- -

·       -Subject [Statement]

- -

·       -TypeCode [Coding]

- -

·       -Statement [0..*]

+

 

-

 

+

 

From cec32b282e318b84e0d063c5308187a0f16324d1 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 16 Aug 2018 13:08:48 -0400 Subject: [PATCH 041/289] cleanup up html --- spec/LandingPageWound.html | 292 +++---------------------------------- 1 file changed, 19 insertions(+), 273 deletions(-) diff --git a/spec/LandingPageWound.html b/spec/LandingPageWound.html index 01807b57..9294eb3c 100644 --- a/spec/LandingPageWound.html +++ b/spec/LandingPageWound.html @@ -1,277 +1,23 @@ - - - - - - - - - - - -
- -

This is a -“Full CIMI” version of a Skin and Wound Assessment FHIR Implementation Guide, -based on CIMI based classes, and employing topic-context flattening.

- -

 

- +

This is a “Full CIMI” version of a Skin and Wound Assessment FHIR Implementation Guide, based on CIMI based classes, and employing topic-context flattening.

+

 

The Skin and Wound Assessment Demonstration Project

- -

 The -Clinical Information Modeling Initiative (CIMI) is focused on creating logical -models of healthcare information, independent of implementation technologies -and patterns, decoupling clinical content from periodic changes in -implementation technology. This Implementation Guide (IG) is part of a -demonstration project showing how different groups, with different tools, -approach CIMI modeling. To expedite comparison, each group has implemented the -same Skin and Wound Assessment domain.

- +

 The Clinical Information Modeling Initiative (CIMI) is focused on creating logical models of healthcare information, independent of implementation technologies and patterns, decoupling clinical content from periodic changes in implementation technology. This Implementation Guide (IG) is part of a demonstration project showing how different groups, with different tools, approach CIMI modeling. To expedite comparison, each group has implemented the same Skin and Wound Assessment domain.

Approach

-

Dealing with Nested Observations

- -

One of the key features of wound assessment is -“nestedness”, a hierarchical structure of containment with 1-to-many -relationships at each level. One patient can have multiple wounds, each wound -can have multiple tunnels, and each tunnel on each wound on each patient can -have a measured length. This “nestedness” leads to design choices about how to -model the “sub-observations”.

- -

 

- -

Approaches to deal with the hierarchical nature of wound -assessment include:

- -

                     -A component approach, where sub-observations are inseparable parts of a -parent observation, or

- -

                     -A panel approach, where sub-observations are independent observations, -gathered into a parent panel observation.

- -

Either approach is feasible, and each has pros and cons. -A pure component approach keeps everything related to a single wound assessment -together, but requires complicated mapping to FHIR, since FHIR observation -components cannot have sub-components. A pure panel approach is also feasible, -and nicely modular, but that approach leads to problems pairing up related -observations, such as wound tunnel length and clock direction.

- -

 

- -

In this implementation, we take a hybrid approach, using -components wherever possible, and sub-observations where necessary. To be -clear, panel-type sub-observations are required where the panel observations -themselves have sub-observations or components.

- -

 

- -

The other key to our approach representing each wound by -a condition assertion (FindingSiteConditionPresenceStatement). A wound is an -identifiable entity located at a particular body site that maintains its -identity over a period of time. As such, a wound has properties indicative of a -condition, including onset time and abatement time. Explicitly representing the -wound allows multiple observations about the wound to refer back to the same -wound.

- -

 

- -

The use case we have in mind is that many assessments of -the same wound can occur at different times during the clinical course of the -wound. These multiple assessments trace a relationship to the same wound by -means of a common wound identifier.

- -

 

- +

One of the key features of wound assessment is “nestedness”, a hierarchical structure of containment with 1-to-many relationships at each level. One patient can have multiple wounds, each wound can have multiple tunnels, and each tunnel on each wound on each patient can have a measured length. This “nestedness” leads to design choices about how to model the “sub-observations”.

+

 

+

Approaches to deal with the hierarchical nature of wound assessment include:

+
    +
  • A component approach, where sub-observations are inseparable parts of a parent observation, or
  • +
  • A panel approach, where sub-observations are independent observations, gathered into a parent panel observation.
  • +
+

Either approach is feasible, and each has pros and cons. A pure component approach keeps everything related to a single wound assessment together, but requires complicated mapping to FHIR, since FHIR observation components cannot have sub-components. A pure panel approach is also feasible, and nicely modular, but that approach leads to problems pairing up related observations, such as wound tunnel length and clock direction.

+

 

+

In this implementation, we take a hybrid approach, using components wherever possible, and sub-observations where necessary. To be clear, panel-type sub-observations are required where the panel observations themselves have sub-observations or components.

+

 

+

The other key to our approach representing each wound by a condition assertion (FindingSiteConditionPresenceStatement). A wound is an identifiable entity located at a particular body site that maintains its identity over a period of time. As such, a wound has properties indicative of a condition, including onset time and abatement time. Explicitly representing the wound allows multiple observations about the wound to refer back to the same wound.

+

 

+

The use case we have in mind is that many assessments of the same wound can occur at different times during the clinical course of the wound. These multiple assessments trace a relationship to the same wound by means of a common wound identifier.

+

 

Flattening the Topic-Context Pattern

- -

Using the topic-context pattern introduces additional -decisions. It was difficult to orchestrate the various classes that must come together -to represent the wound assessment panel. Therefore, the author decided to -flatten out the topic-context pattern. To do this, the context hierarchy was -combined with the clinical statement hierarchy, creating one hierarchy. Topic -was then folded into the appropriate places to form a complete clinical -statement. With this simplification, decisions on which of the three classes to -extend were eliminated.

- -

 

- -

 

- -

 

- -

 

- -
- - - - +

Using the topic-context pattern introduces additional decisions. It was difficult to orchestrate the various classes that must come together to represent the wound assessment panel. Therefore, the author decided to flatten out the topic-context pattern. To do this, the context hierarchy was combined with the clinical statement hierarchy, creating one hierarchy. Topic was then folded into the appropriate places to form a complete clinical statement. With this simplification, decisions on which of the three classes to extend were eliminated.

\ No newline at end of file From d92baf727c4b79eb7a600d4af911102f314e1aea Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 16 Aug 2018 17:57:26 -0400 Subject: [PATCH 042/289] Updated definition of Employment status per Barbara Wallace --- spec/shr_occupation.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index d8c68ef2..7eac2a06 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -38,8 +38,9 @@ includes 0..* PastOrPresentJob EntryElement: PersonEmploymentStatus Based on: CodedSocialHistoryObservation Concept: LNC#74165-2 "HistoryOfEmploymentStatus" -Description: "A person’s state of being employed during the time period specified. -Generally, employment status refers to whether or not a person has a job (e.g. employed, unemployed, not in labor force). In a healthcare setting employment status may be used to determine appropriate probing questions for occupational hazards and occupational history. For example, someone who is unemployed or has chosen not to work may be prompted to provide information about previous jobs. Employment status is not the same as work classification, which describes characteristics of a given job such as self-employed." +Description: "The self-reported current and historical data about a person's economic relationship to work (e.g. having one or more jobs), including start and end dates. +A person's Employment Status could change over time, for example, a person could be employed following a period of choosing to not be in the labor force. +Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" ResultValue value is type CodeableConcept // ResultValue from EmploymentStatusVS @@ -76,7 +77,7 @@ Concept: LNC#21843-8 Description: "Related data elements about the work a person reports having performed for the longest amount of time during his or her life, regardless of the person's current job and regardless of whether or not the person performed this work for a continuous time. Knowledge of person's Usual Work can potentially assist in diagnosis, treatment and/or prevention of chronic condition(s) or conditions with a long latency. The potential for exposure to Occupational Hazard(s) related to an Occupation and/or an Industry can change over time, and a person could have been in and out of their Usual Work over time, so additional data are helpful to fully evaluate the possible impact of the person's Usual Work on their health and guide appropriate use of screening tests to detect early disease. Example: a person has worked for a total of 30 years as a 'secretary' (Occupation), but in various industries, mostly hotel construction. Her Usual Occupation is 'secretary' and her Usual Industry is 'hotel construction.' -Usual Work does not include work that was unpaid or voluntary. Usual Work does not include work that was unpaid or voluntary." +Usual Work does not include work that was unpaid or voluntary." TopicCode is LNC#21843-8 // ResultValue from OccupationVS ResultValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 From 508bce25785d06fbf51114ab003b67152ddcf051 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 16 Aug 2018 21:28:19 -0400 Subject: [PATCH 043/289] Updates to landing page --- spec/LandingPageOccupation.html | 75 ++++++++++++++++++++++++--------- 1 file changed, 55 insertions(+), 20 deletions(-) diff --git a/spec/LandingPageOccupation.html b/spec/LandingPageOccupation.html index 9d929ecf..d0e5bc04 100644 --- a/spec/LandingPageOccupation.html +++ b/spec/LandingPageOccupation.html @@ -1,29 +1,64 @@ +

HL7 FHIR Profile: Occupational Data for Health (ODH), Release 1 (Standard for Trial Use)

+

+

Occupational Data for Health Implementation Guide

- This is a preliminary version of the Occupational Data Health Level 7 (HL7) Fast Healthcare - Interoperability Resources (FHIR) Implementation Guide.
-

-

Occupational Data Implementation Guide (IG)

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non lacus tellus. Mauris in luctus ex. Donec nec leo mauris. Suspendisse nec velit ullamcorper, condimentum neque vel, consequat massa. Ut mattis fermentum facilisis. Etiam ut tortor tortor. Nam eget egestas dolor. Pellentesque dignissim purus mauris, id auctor purus iaculis sit amet. + This Implementation Guide contains guidance, new logical models, profiles and extensions to implement support for Occupational Data for Health (ODH). ODH is primarily designed to facilitate clinical care, including population health; ODH also can be used to support public health reporting, population health, and similar value-based care. ODH is not designed to support billing activities. This STU Ballot for the Occupational Data for Health (ODH) Implementation Guide (IG) is sponsored by the National Institute of Safety and Health (NIOSH), a federal agency responsible for conducting research and making recommendations for the prevention of work-related injury and illness. NIOSH is a part of the Centers for Disease and Prevention (CDC). The project to define ODH was done with a group representing a variety of stakeholders including NIOSH subject matter experts, epidemiologists, occupational health providers, and vendors.

Background

- Quisque sagittis viverra lorem eget blandit. Morbi laoreet nulla ac metus accumsan, ac tristique urna molestie. Aenean ut tortor vitae nulla luctus suscipit. Proin augue risus, laoreet sed fringilla a, cursus sollicitudin ligula. Donec sed accumsan magna. Duis at molestie ex. Sed id condimentum massa. Nam quis metus et orci tincidunt aliquam at ac ipsum. Aliquam nec enim diam. Donec ante metus, fermentum eu massa ac, lobortis mattis velit. -

+ The majority of adults in the U.S. spend more than half their waking hours at work. Therefore, health and work are inextricably inter-related. For example, the management of chronic conditions requires taking the patient’s work environment into consideration. Furthermore, the recognition of new conditions related to previously unknown workplace hazards has often come from astute clinicians, which requires knowledge of the patients’ work-setting. ONC has indicated recognition of the value of work information for health care.

+

The incorporation of self-reported ODH into Electronic health records (EHRs) and other IT healthcare systems provides an opportunity to improve health in relation to work. ODH has not been broadly recognized as a social determinate of health and has not yet been a priority for inclusion in IT healthcare systems in a structured way that fully supports direct patient care and occupational public health activities.

+

Though research has been conducted and guidance is available to support clinicians, the IT healthcare systems they work in are unable to efficiently identify patients that would benefit the most from this knowledge.

+

This project seeks to address this gap of system and awareness by modeling ODH in a way so that it supports diagnosis, treatment, research and surveillance of work-related injury and illness.

Scope

- Cras pellentesque efficitur consectetur. Duis sed tristique lorem. Fusce ultrices neque eu euismod rhoncus. Etiam scelerisque vehicula lacus ut faucibus. Fusce arcu lacus, tempus venenatis massa sit amet, dictum lobortis purus. In nunc nisi, consectetur semper magna sit amet, fermentum pulvinar dui. Nulla mollis dolor a diam condimentum sollicitudin. Sed egestas urna a leo ullamcorper molestie.

-

+ The Occupational Data for Health (ODH) FHIR IG covers information about a patient’s work or a patient's family member's work. ODH is designed for the social history section of a medical record, to facilitate clinical care in most/all disciplines and delivery environments. ODH also can be used to support public health reporting, population health activities, clinical decision support, and similar value-based care. ODH is not designed to support billing activities. The scope of the work information includes:

+
    +
  • Employment status
  • +
  • Retirement date
  • +
  • Combat Zone Period
  • +
  • Past or Present Job for the patient or a household member which includes +
      +
    • Past or Present Occupation
    • +
    • Past or Present Industry
    • +
    • Work Classification
    • +
    • Work Schedule, including
    • +
    • Weekly Work Days
    • +
    • Daily Work Hours
    • +
    • Job Duties
    • +
    • Occupational Exposures
    • +
    • Employer name
    • +
    • Employer address
    • +
    • Related Subject
    • +
    +
  • +
  • Usual Work of the patient or a household member which includes +
      +
    • Usual Occupation
    • +
    • Usual Industry
    • +
    • Usual Occupation Duration
    • +
    • Related Subject
    • +
    +
  • +
+

Known Issues and Limitations

-

- Sed ligula justo, vehicula eu purus et, porttitor congue nibh. Aliquam efficitur eros a nulla varius, in lacinia augue bibendum. In mi erat, rutrum id eleifend eget, scelerisque a arcu. Cras vel posuere urna. Mauris condimentum nunc orci, ut lacinia sem placerat sit amet. Suspendisse congue egestas ipsum quis efficitur. -

-

Content of Ballot Documents

-

- Aliquam justo est, mollis vel semper sit amet, consequat eu lorem. Phasellus vitae nunc in nisi hendrerit porttitor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut viverra lacinia consequat. Fusce eget dui sed ex rhoncus mattis. Duis dignissim ut massa consequat tristique. Cras sollicitudin maximus eros at pulvinar. -

+

This IG includes more extensive occupational data than typically collected in current systems. The content and structure of this IG is intended to inform clinical care, though the information may be leveraged for other purposes, including population health and public health reporting. While there may be some overlap with administrative and billing information maintained by some systems, the information in this IG is not designed to support billing and administrative needs.

+

This profile is specified as a composition resource, but it is not intended to be used as a stand-alone composition. Rather, the content should be included in broader health information summary compositions and available as a response to requests for occupational data for health information.

+

Terminology and value sets in this IG are preliminary.  Initial values have been recommended, but have not been fully vetted in implementation. If no code exists for a given concept (e.g. a new occupation), text should be used to describe the concept, and the coded value should be omitted.

+

A value set for exposures has not been identified.  This data element is captured as text.

+

A value set for combat zone location has not been identified.  Currently, only start and end dates are included.

+

Retirement date is captured as how it relates to a person, not to a specific job. 

+

Questions for Reviewers

-

- Aliquam justo est, mollis vel semper sit amet, consequat eu lorem. Phasellus vitae nunc in nisi hendrerit porttitor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut viverra lacinia consequat. Fusce eget dui sed ex rhoncus mattis. Duis dignissim ut massa consequat tristique. Cras sollicitudin maximus eros at pulvinar. -

+

NIOSH is seeking both general and specific comments regarding this material.

+
    +
  1. Is the ODH model complete and appropriate to support patient care?
  2. +
  3. Are the other projects or initiatives relating to occupation that should be considered in how it relates to ODH?
  4. +
  5. While this profile is specified for the US Realm, the design is intended to support international needs. Three of the referenced value sets supporting Occupation, Industry, and Supervisory Level are necessarily US specific, and the remaining three supporting Work Schedule, Employment Status, and Work Classification are defined to support international concepts. Input is requested regarding whether these should be specified as ‘extensible’, ‘required’ (using ‘text only’ where a concept does not yet exist such as a new occupation), or as an ‘example’ for those US specific concepts.
  6. +
+

 

+

Credits:

+

Domain content and expertise provided by Lori Fourquet, Barbara Wallace (CDC/NIOSH/RHD), Genny Luensman (CDC/NIOSH/RHD), and Rob Hausam.

+

IG authored by Dr. Mark Kramer using the Clinical Information Modeling and Profiling Language (CIMPL), a free, open source toolchain from MITRE Corporation.

\ No newline at end of file From 60f4eeab8cbf460b7fd23f2e0fc4f806bc208e2b Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 16 Aug 2018 22:02:19 -0400 Subject: [PATCH 044/289] Landing page updates --- spec/LandingPageWound.html | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/spec/LandingPageWound.html b/spec/LandingPageWound.html index 9294eb3c..83456852 100644 --- a/spec/LandingPageWound.html +++ b/spec/LandingPageWound.html @@ -17,7 +17,12 @@

Dealing with Nested Observations

 

The other key to our approach representing each wound by a condition assertion (FindingSiteConditionPresenceStatement). A wound is an identifiable entity located at a particular body site that maintains its identity over a period of time. As such, a wound has properties indicative of a condition, including onset time and abatement time. Explicitly representing the wound allows multiple observations about the wound to refer back to the same wound.

 

-

The use case we have in mind is that many assessments of the same wound can occur at different times during the clinical course of the wound. These multiple assessments trace a relationship to the same wound by means of a common wound identifier.

+

The use case under consideration is that repeated assessments of the same wound can occur at different times during the clinical course of the wound. These multiple assessments trace a relationship to the same wound by means of a common wound identifier.

 

Flattening the Topic-Context Pattern

-

Using the topic-context pattern introduces additional decisions. It was difficult to orchestrate the various classes that must come together to represent the wound assessment panel. Therefore, the author decided to flatten out the topic-context pattern. To do this, the context hierarchy was combined with the clinical statement hierarchy, creating one hierarchy. Topic was then folded into the appropriate places to form a complete clinical statement. With this simplification, decisions on which of the three classes to extend were eliminated.

\ No newline at end of file +

Using the topic-context pattern introduces additional decisions and complexity in terms of orchestrating three class hierarchies that must come together to represent clinical statements. With consultation from Galen Mulrooney, a decision was made to flatten out the topic-context pattern. To do this, the context hierarchy was combined with the clinical statement hierarchy, creating one hierarchy. The statement topic class attributes were then directly added to the clinical statement/context classes, where previously they were integrated by reference. Work progressed much more smoothly after this change.

+

The resulting class hierarchy can be explored here.

+

 

+

Credits:

+

Domain content was provided by Susan Matney (Intermountain Healthcare). Much help, guidance, and wisdom was provided by all members of the CIMI Work Group especially the co-chairs, Dr. Stan Huff, Claude Nanjo, Galen Mulrooney, and Richard Esmond.

+

This IG was authored by Dr. Mark Kramer using the Clinical Information Modeling and Profiling Language (CIMPL), a free, open source toolchain from MITRE Corporation.

\ No newline at end of file From dc9922ba932e73e1f2fb9517ef7a08257a476a91 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 16 Aug 2018 23:36:33 -0400 Subject: [PATCH 045/289] Fixed landing page again --- spec/LandingPageWound.html | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/spec/LandingPageWound.html b/spec/LandingPageWound.html index 83456852..efc806a2 100644 --- a/spec/LandingPageWound.html +++ b/spec/LandingPageWound.html @@ -1,28 +1,21 @@ -

This is a “Full CIMI” version of a Skin and Wound Assessment FHIR Implementation Guide, based on CIMI based classes, and employing topic-context flattening.

-

 

+

This is a "Full CIMI" version of a Skin and Wound Assessment FHIR Implementation Guide, based on CIMI based classes, and employing topic-context flattening.

The Skin and Wound Assessment Demonstration Project

 The Clinical Information Modeling Initiative (CIMI) is focused on creating logical models of healthcare information, independent of implementation technologies and patterns, decoupling clinical content from periodic changes in implementation technology. This Implementation Guide (IG) is part of a demonstration project showing how different groups, with different tools, approach CIMI modeling. To expedite comparison, each group has implemented the same Skin and Wound Assessment domain.

Approach

Dealing with Nested Observations

-

One of the key features of wound assessment is “nestedness”, a hierarchical structure of containment with 1-to-many relationships at each level. One patient can have multiple wounds, each wound can have multiple tunnels, and each tunnel on each wound on each patient can have a measured length. This “nestedness” leads to design choices about how to model the “sub-observations”.

-

 

+

One of the key features of wound assessment is "nestedness", a hierarchical structure of containment with 1-to-many relationships at each level. One patient can have multiple wounds, each wound can have multiple tunnels, and each tunnel on each wound on each patient can have a measured length. This presents a modeling challenge.

Approaches to deal with the hierarchical nature of wound assessment include:

  • A component approach, where sub-observations are inseparable parts of a parent observation, or
  • -
  • A panel approach, where sub-observations are independent observations, gathered into a parent panel observation.
  • +
  • A panel approach, where sub-observations are independent observations, united by a parent panel observation.

Either approach is feasible, and each has pros and cons. A pure component approach keeps everything related to a single wound assessment together, but requires complicated mapping to FHIR, since FHIR observation components cannot have sub-components. A pure panel approach is also feasible, and nicely modular, but that approach leads to problems pairing up related observations, such as wound tunnel length and clock direction.

-

 

-

In this implementation, we take a hybrid approach, using components wherever possible, and sub-observations where necessary. To be clear, panel-type sub-observations are required where the panel observations themselves have sub-observations or components.

-

 

+

In this implementation, we take a hybrid approach, using components wherever possible, and sub-observations where necessary. Panel-type sub-observations are required where the panel observations themselves have sub-observations or components.

The other key to our approach representing each wound by a condition assertion (FindingSiteConditionPresenceStatement). A wound is an identifiable entity located at a particular body site that maintains its identity over a period of time. As such, a wound has properties indicative of a condition, including onset time and abatement time. Explicitly representing the wound allows multiple observations about the wound to refer back to the same wound.

-

 

The use case under consideration is that repeated assessments of the same wound can occur at different times during the clinical course of the wound. These multiple assessments trace a relationship to the same wound by means of a common wound identifier.

-

 

Flattening the Topic-Context Pattern

Using the topic-context pattern introduces additional decisions and complexity in terms of orchestrating three class hierarchies that must come together to represent clinical statements. With consultation from Galen Mulrooney, a decision was made to flatten out the topic-context pattern. To do this, the context hierarchy was combined with the clinical statement hierarchy, creating one hierarchy. The statement topic class attributes were then directly added to the clinical statement/context classes, where previously they were integrated by reference. Work progressed much more smoothly after this change.

-

The resulting class hierarchy can be explored here.

-

 

+

The resulting class hierarchy can be explored here.

Credits:

-

Domain content was provided by Susan Matney (Intermountain Healthcare). Much help, guidance, and wisdom was provided by all members of the CIMI Work Group especially the co-chairs, Dr. Stan Huff, Claude Nanjo, Galen Mulrooney, and Richard Esmond.

+

Domain content was provided by Susan Matney (Intermountain Healthcare). Help, guidance, and wisdom was generously provided by all members of the CIMI Work Group especially the co-chairs, Dr. Stan Huff, Claude Nanjo, Galen Mulrooney, and Richard Esmond.

This IG was authored by Dr. Mark Kramer using the Clinical Information Modeling and Profiling Language (CIMPL), a free, open source toolchain from MITRE Corporation.

\ No newline at end of file From 4c8ea7cdc8d837dfcfb5f855c0b3a7d2f91f67d1 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 17 Aug 2018 05:30:56 -0400 Subject: [PATCH 046/289] updated credits --- spec/LandingPageOccupation.html | 204 +++++++++++++++++++++++++++++++- 1 file changed, 201 insertions(+), 3 deletions(-) diff --git a/spec/LandingPageOccupation.html b/spec/LandingPageOccupation.html index d0e5bc04..e85bcdbf 100644 --- a/spec/LandingPageOccupation.html +++ b/spec/LandingPageOccupation.html @@ -59,6 +59,204 @@

Questions for Reviewers

 

Credits:

-

Domain content and expertise provided by Lori Fourquet, Barbara Wallace (CDC/NIOSH/RHD), Genny Luensman (CDC/NIOSH/RHD), and Rob Hausam.

-

IG authored by Dr. Mark Kramer using the Clinical Information Modeling and Profiling Language (CIMPL), a free, open source toolchain from MITRE Corporation.

- \ No newline at end of file +

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Co-Editor:

+
+

Genevieve Barkocy Luensman

+

CDC/NIOSH/RHD/SB

+

bve2@cdc.gov

+

Respiratory Health Division (RHD), National Institute for Occupational Safety and Health (NIOSH)

+
+

Co-Editor:

+
+

Eileen Storey, Respiratory Health Division (RHD), National Institute for Occupational Safety and Health (NIOSH)

+
+

Co-Editor:

+
+

Barbara Wallace

+

CDC/NIOSH/RHD  (CRT)

+

okt5@cdc.gov

+

Emergint Technologies, Inc. and Attain, LLC. Currently DSHEFS, NIOSH

+
+

Co-Editor:

+
+

Margaret S. Filios, Respiratory Health Division (RHD), National Institute for Occupational Safety and Health (NIOSH)

+
+

Co-Editor:

+
+

Stacey Marovich, MHI, MS, PMP, MCTS

+

CDC/NIOSH/RHD

+

awg8@cdc.gov

+

Emergint Technologies, Inc. and Attain, LLC. Currently DSHEFS, NIOSH

+
+

Co-Editor:

+
+

Marie Haring Sweeney, Division of Surveillance, Hazard Evaluation, and Field Studies (DSHEFS), National Institute for Occupational Safety and Health (NIOSH)

+
+

Co-Editor:

+
+

Angela Crovetti (Attain, LLC)

+
+

Co-Editor:

+
+

John Myers, Division of Safety Research (DSR), National Institute for Occupational Safety and Health (NIOSH)

+
+

Co-Editor:

+
+

Lori Reed-Fourquet

+

e-HealthSign, LLC

+

lfourquet@ehealthsign.com

+
+

Co-Editor:

+
+

Kerry Souza, Division of Surveillance, Hazard Evaluation, and Field Studies (DSHEFS), National Institute for Occupational Safety and Health (NIOSH)

+
+

Co-Editor:

+
+

Rob Hausam

+

Hausam Consulting

+

rob@hausamconsulting.com

+
+

Co-Editor:

+
+

Christina Socias-Morales, Division of Safety Research (DSR), National Institute for Occupational Safety and Health (NIOSH)

+
+

Co-Editor:

+
+

Mark Kramer

+

MITRE

+

mKramer@mitre.org

+
+

Co-Editor:

+
+

Sherry Baron, DSHEFS, NIOSH. Currently Queens College, City University of New York, Flushing NY USA

+
+

Contributors include participants HL7 HIR Management Group, Structured Documents Work Group, Patient Administration Workgroup, Orders and Observations Work Group and the Public Health Workgroup:

+
+

Douglas Trout

+
+

Division of Surveillance, Hazard Evaluation, and Field Studies (DSHEFS), National Institute for Occupational Safety and Health (NIOSH)

+
+

Kristin Yeoman

+
+

Western States Division (WSD), National Institute for Occupational Safety and Health (NIOSH)

+
+

Sara Luckhaupt

+
+

Division of Surveillance, Hazard Evaluation, and Field Studies (DSHEFS), National Institute for Occupational Safety and Health (NIOSH)

+
+

Carissa Rocheleau

+
+

Division of Surveillance, Hazard Evaluation, and Field Studies (DSHEFS), National Institute for Occupational Safety and Health (NIOSH)

+
+

Claire Caruso

+
+

Division of Applied Research and Technology (DART)), National Institute for Occupational Safety and Health (NIOSH)

+
+

Nicole Edwards

+
+

Respiratory Health Division, National Institute for Occupational Safety and Health (NIOSH)

+
+

Deborah Hoyer

+
+

Office of the Director (OD), National Institute for Occupational Safety and Health (NIOSH)

+
+

E. Michael Goldcamp

+
+

DSR, NIOSH. Currently OD, NIOSH

+
     
+

 

+

Acknowledgements:

+

Yvonne Boudreau, Western States Division (WSD), National Institute for Occupational Safety and Health (NIOSH)

+

Susan Nowlin, Division of Surveillance, Hazard Evaluation, and Field Studies (DSHEFS), National Institute for Occupational Safety and Health (NIOSH)

+

Anna Orlova, Public Health Data Standards Consortium (PHDSC). Currently Visiting Associate Professor, Division of Health Sciences Informatics, Johns Hopkins School of Medicine

+

 

+

This IG was produced by Mark Kramer using the Clinical Information Modeling and Profiling Language (CIMPL), a free, open source toolchain from MITRE Corporation..

From 34d19464ff55d76c265f869f369775349014080d Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 17 Aug 2018 05:42:10 -0400 Subject: [PATCH 047/289] Added IsCurrentJob to PastOrPresentJob --- spec/shr_occupation.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 7eac2a06..a435aa5c 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -124,6 +124,7 @@ includes 0..* OccupationalHazard includes 0..1 WorkSchedule includes 0..1 WeeklyWorkDays includes 0..1 DailyWorkHours +includes 0..1 IsCurrentJob 1..1 RelevantTime RelevantTime value is type TimePeriod @@ -209,6 +210,12 @@ includes 0..1 DailyWorkHours 0..0 ReferenceRange TopicCode is LNC#87512-0 +// Last minute addition 8/17 based on Genny's comment + Element: IsCurrentJob + Based on: CodedEvaluationComponent + Description: "A true/false flag indicating if this is the person's current job (at the time the resource was last updated)." + Value: boolean + Element: SocialHistoryObservation Based on: Observation Description: "A simplified observation for social histories." From 8d2acee700c6ed0f284080e9153000626db48097 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 17 Aug 2018 09:06:35 -0400 Subject: [PATCH 048/289] update to landing page --- spec/LandingPageWound.html | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/LandingPageWound.html b/spec/LandingPageWound.html index efc806a2..9466ae7e 100644 --- a/spec/LandingPageWound.html +++ b/spec/LandingPageWound.html @@ -2,6 +2,7 @@

The Skin and Wound Assessment Demonstration Project

 The Clinical Information Modeling Initiative (CIMI) is focused on creating logical models of healthcare information, independent of implementation technologies and patterns, decoupling clinical content from periodic changes in implementation technology. This Implementation Guide (IG) is part of a demonstration project showing how different groups, with different tools, approach CIMI modeling. To expedite comparison, each group has implemented the same Skin and Wound Assessment domain.

Approach

+

There are many decisions involved with modeling a clinical domain with CIMI. The Skin and Wound Assessment is no exception.

Dealing with Nested Observations

One of the key features of wound assessment is "nestedness", a hierarchical structure of containment with 1-to-many relationships at each level. One patient can have multiple wounds, each wound can have multiple tunnels, and each tunnel on each wound on each patient can have a measured length. This presents a modeling challenge.

Approaches to deal with the hierarchical nature of wound assessment include:

From f14af7613e6dfc1429b9702759099647860ff076 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 17 Aug 2018 09:26:48 -0400 Subject: [PATCH 049/289] landing page edits --- spec/LandingPageWound.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/LandingPageWound.html b/spec/LandingPageWound.html index 9466ae7e..b0bb427c 100644 --- a/spec/LandingPageWound.html +++ b/spec/LandingPageWound.html @@ -15,8 +15,8 @@

Dealing with Nested Observations

The other key to our approach representing each wound by a condition assertion (FindingSiteConditionPresenceStatement). A wound is an identifiable entity located at a particular body site that maintains its identity over a period of time. As such, a wound has properties indicative of a condition, including onset time and abatement time. Explicitly representing the wound allows multiple observations about the wound to refer back to the same wound.

The use case under consideration is that repeated assessments of the same wound can occur at different times during the clinical course of the wound. These multiple assessments trace a relationship to the same wound by means of a common wound identifier.

Flattening the Topic-Context Pattern

-

Using the topic-context pattern introduces additional decisions and complexity in terms of orchestrating three class hierarchies that must come together to represent clinical statements. With consultation from Galen Mulrooney, a decision was made to flatten out the topic-context pattern. To do this, the context hierarchy was combined with the clinical statement hierarchy, creating one hierarchy. The statement topic class attributes were then directly added to the clinical statement/context classes, where previously they were integrated by reference. Work progressed much more smoothly after this change.

-

The resulting class hierarchy can be explored here.

+

Using the topic-context pattern introduces additional decisions and complexity in terms of orchestrating three class hierarchies that must come together to represent clinical statements. In consultation from Galen Mulrooney, a decision was made to flatten out the topic-context pattern similar to the approach being taken the the Federal Health Information Model (FHIM). The context hierarchy was combined with the clinical statement hierarchy, removing the separate StatementContext hierarchy. The statement topic class attributes were then directly added to the clinical statement/context classes, where previously they were integrated by reference. Work progressed much more smoothly after this change.

+

The resulting class hierarchy (reference model) can be explored here.

Credits:

Domain content was provided by Susan Matney (Intermountain Healthcare). Help, guidance, and wisdom was generously provided by all members of the CIMI Work Group especially the co-chairs, Dr. Stan Huff, Claude Nanjo, Galen Mulrooney, and Richard Esmond.

This IG was authored by Dr. Mark Kramer using the Clinical Information Modeling and Profiling Language (CIMPL), a free, open source toolchain from MITRE Corporation.

\ No newline at end of file From fc796ea456a91bb9654d1cf9ea6e2a83a6d4c31f Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 17 Aug 2018 11:51:15 -0400 Subject: [PATCH 050/289] Updates requested by Genny L. --- spec/LandingPageOccupation.html | 20 +++++++------------- spec/shr_occupation.txt | 21 ++++++++------------- 2 files changed, 15 insertions(+), 26 deletions(-) diff --git a/spec/LandingPageOccupation.html b/spec/LandingPageOccupation.html index e85bcdbf..070f5983 100644 --- a/spec/LandingPageOccupation.html +++ b/spec/LandingPageOccupation.html @@ -43,20 +43,15 @@

Scope

Known Issues and Limitations

-

This IG includes more extensive occupational data than typically collected in current systems. The content and structure of this IG is intended to inform clinical care, though the information may be leveraged for other purposes, including population health and public health reporting. While there may be some overlap with administrative and billing information maintained by some systems, the information in this IG is not designed to support billing and administrative needs.

-

This profile is specified as a composition resource, but it is not intended to be used as a stand-alone composition. Rather, the content should be included in broader health information summary compositions and available as a response to requests for occupational data for health information.

-

Terminology and value sets in this IG are preliminary.  Initial values have been recommended, but have not been fully vetted in implementation. If no code exists for a given concept (e.g. a new occupation), text should be used to describe the concept, and the coded value should be omitted.

-

A value set for exposures has not been identified.  This data element is captured as text.

-

A value set for combat zone location has not been identified.  Currently, only start and end dates are included.

-

Retirement date is captured as how it relates to a person, not to a specific job. 

+

This IG includes more extensive occupational data than typically collected in current systems. The content and structure of this IG is intended to inform clinical care, support population health and contribute to public health activities. While there may be some overlap with administrative and billing information maintained by some systems, the information in this IG is not designed to support billing and administrative needs.

+

This profile is specified as a composition resource, but it is not intended to be used as a stand-alone composition. Rather, the content should be included in broader health information summary and other compositions, and available as a response to requests for occupational data for health information.

+

Some of the value sets in this IG are preliminary. If no code exists for a given concept (e.g. a new occupation), text should be used to describe the concept and the coded value should be omitted.

+

A value set for combat zone location that meets the purpose of supporting patient care, population health, and public health needs has not been identified. Therefore, only start and end dates are included.

+

Retirement date is captured as how it relates to a person, not to a specific job.

Questions for Reviewers

-

NIOSH is seeking both general and specific comments regarding this material.

-
    -
  1. Is the ODH model complete and appropriate to support patient care?
  2. -
  3. Are the other projects or initiatives relating to occupation that should be considered in how it relates to ODH?
  4. -
  5. While this profile is specified for the US Realm, the design is intended to support international needs. Three of the referenced value sets supporting Occupation, Industry, and Supervisory Level are necessarily US specific, and the remaining three supporting Work Schedule, Employment Status, and Work Classification are defined to support international concepts. Input is requested regarding whether these should be specified as ‘extensible’, ‘required’ (using ‘text only’ where a concept does not yet exist such as a new occupation), or as an ‘example’ for those US specific concepts.
  6. -
+

Both general and specific comments regarding this material are invited.

+

While this profile is specified for the US Realm, the design is intended to support international needs. Three of the referenced value sets supporting Occupation, Industry, and Supervisory Level are necessarily US specific, and the remaining three supporting Work Schedule, Employment Status, and Work Classification are defined to support international concepts. Input is requested regarding whether these should be specified as ‘extensible’, ‘required’ (using ‘text only’ where a concept does not yet exist such as a new occupation), or as an ‘example’ for those US specific concepts.

 

Credits:

 

@@ -85,7 +80,6 @@

Credits:

Barbara Wallace

-

CDC/NIOSH/RHD  (CRT)

okt5@cdc.gov

Emergint Technologies, Inc. and Attain, LLC. Currently DSHEFS, NIOSH

diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index a435aa5c..d5cc63d9 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -153,8 +153,7 @@ includes 0..1 IsCurrentJob Element: WorkClassification Based on: CodedEvaluationComponent Concept: LNC#85104-8 "Compensation and sector employment type" - Description: "Employment attributes for a given job. - This specifies information about the worker’s job, such as self-employed or unpaid, and is similar to the U.S. Bureau of Labor Statistics ‘class of worker’ and the International Labor Organization ‘classification of status in employment’. Knowing a patient is self-employed, for example, can assist in discussing return-to-work options." + Description: "Type of compensation and sector for a person's job, such as 'paid work, self-employed' or 'voluntary work', as reported by the person." //Value: CodeableConcept from WorkClassificationVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 TopicCode is LNC#85104-8 "Compensation and sector employment type" @@ -162,7 +161,7 @@ includes 0..1 IsCurrentJob Element: SupervisoryLevel Based on: CodedEvaluationComponent Concept: LNC#87707-6 - Description: "The supervisory or management responsibilities for an individual’s job. For military jobs, this is pay grade." + Description: "A coded indicator of responsibilities for directing work and personnel management responsibilities for a person's job, as reported by the person. For US military jobs, this is pay grade." //Value: CodeableConcept from SupervisoryLevelVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 TopicCode is LNC#87707-6 @@ -170,7 +169,7 @@ includes 0..1 IsCurrentJob Element: JobDuty Based on: EvaluationComponent Concept: LNC#63761-1 - Description: "Regular actions performed at work. A person may have the occupation of 'construction laborer' and his specific job duty to carry construction supplies." + Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " Value: string 0..0 ReferenceRange TopicCode is LNC#63761-1 @@ -178,8 +177,7 @@ includes 0..1 IsCurrentJob Element: OccupationalHazard Based on: EvaluationComponent Concept: LNC#87729-0 - Description: "Actual contact or interaction with a specific hazard that increases an individual’s risk of a detrimental physical or mental health outcome (e.g., ingestion or inhalation of a toxic chemical). - Information on an exposure may include the measurement of duration/intensity of contact or interaction with the specific hazard." + Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." Value: string 0..0 ReferenceRange TopicCode is LNC#87729-0 @@ -187,8 +185,7 @@ includes 0..1 IsCurrentJob Element: WorkSchedule Based on: CodedEvaluationComponent Concept: LNC#74159-5 - Description: "An individual's typical arrangement of working hours for an occupation. - For example, work schedule may capture that an individual typically works a regular day shift, evening shift, or night shift. It can also specify if an individual has another type of schedule, such as a rotating shift, split shift, etc." + Description: "Typical arrangement of working hours for a person's job, as reported by the person." //Value: CodeableConcept from WorkScheduleVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 TopicCode is LNC#74159-5 @@ -196,23 +193,21 @@ includes 0..1 IsCurrentJob Element: WeeklyWorkDays Based on: EvaluationComponent Concept: LNC#74160-3 - Description: "The typical number of days per week that a person spends performing their duties for work. - This information is most useful coupled with daily work hours and helps to reveal compressed schedules or a 7-day work-week." + Description: "The average number of days per week that a person spends performing their duties for work." Value: Quantity with units UCUM#d 0..0 ReferenceRange Element: DailyWorkHours Based on: EvaluationComponent Concept: LNC#87512-0 - Description: "The typical number of hours in a day that a person spends performing their duties for work. - This information is most useful coupled with weekly work days and helps to reveal compressed schedules, long work hours, and overtime." + Description: "The average number of hours in a day that a person spends performing their duties for work." Value: Quantity with units UCUM#h 0..0 ReferenceRange TopicCode is LNC#87512-0 // Last minute addition 8/17 based on Genny's comment Element: IsCurrentJob - Based on: CodedEvaluationComponent + Based on: EvaluationComponent Description: "A true/false flag indicating if this is the person's current job (at the time the resource was last updated)." Value: boolean From 69c909d2d422cfd7d4c416065e55ad2611d5833e Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 17 Aug 2018 12:21:47 -0400 Subject: [PATCH 051/289] Updated documentation --- spec/shr_core_vs.txt | 6 +++--- spec/shr_occupation.txt | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/spec/shr_core_vs.txt b/spec/shr_core_vs.txt index 1ea08daa..06741685 100644 --- a/spec/shr_core_vs.txt +++ b/spec/shr_core_vs.txt @@ -142,9 +142,9 @@ Description: "Code set indicating the frequency of an event in qualitative ter #never "Never" ValueSet: YesNoVS -Description: "Code set indicating yes or no." -#yes "Yes, or true" -#no "No, or false" +Description: "Code set indicating yes or no (values drawn from Snomed CT)." +SCT#373066001 "Yes (qualifier value)" +SCT#373067005 "No (qualifier value)" ValueSet: YesNoUnknownVS Description: "Code set indicating yes, no, or unknown." diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index d5cc63d9..01b3ead6 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -52,7 +52,7 @@ EntryElement: RetirementDate Based on: SocialHistoryObservation Concept: LNC#87510-4 "Date of Retirement" Description: "A self-reported date that a person considers themselves to have ‘retired’. -A person can be both retired and employed (an Employment Status); most often, a person would be retired from one job and employed in another job. A person also can have more than one retirement date; for example, a person could retire from military service, then later retire from a civilian job. +A person can be both retired and employed (an Employment Status); most often, a person would be retired from one job and employed in another job. A person also can have more than one retirement date; for example, a person could retire from military service, then later retire from a civilian job. Multiple retirement dates should be recorded using multiple FHIR resources. Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." TopicCode is LNC#87510-4 "Date of Retirement" ResultValue value is type dateTime @@ -64,7 +64,7 @@ EntryElement: CombatZonePeriod Based on: SocialHistoryObservation Concept: LNC#87511-2 Description: "Self-reported date range(s) when a person worked in what is considered a combat zone; sometimes called a hazardous duty work. -Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones." +Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones. Multiple periods in combat zone should be recorded using multiple FHIR resources." TopicCode is LNC#87511-2 ResultValue value is type TimePeriod 0..0 EvaluationComponent @@ -108,7 +108,7 @@ EntryElement: PastOrPresentJob Based on: CodedSocialHistoryObservation Concept: LNC#11341-5 "History of Occupation" Description: "Related data elements for a current or previous job, as reported by the person, i.e., a work situation or position held for a specified time period. -A person can have more than one job at the same time and multiple jobs over time, so the data related to each job must remain in the record in perpetuity. +A person can have more than one job at the same time and multiple jobs over time, so the data related to each job must remain in the record in perpetuity. Each job should be recorded in a separate instance of PastOrPresentJob. A person's job can be a social determinant of their health and information about a person's job can support patient care, population health, and public health. In patient care, knowledge of a person's past or present job(s) can impact recognition, diagnosis, management, and treatment of injuries and illnesses. These data also can be used for clinical decision support and to prompt discussion of preventive care measures. For example, a record of jobs that require prolonged time in the sun might prompt a health care provider to inquire if the person wears protective clothing or sunscreen while working. At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." TopicCode is LNC#11341-5 "History of Occupation" @@ -207,9 +207,9 @@ includes 0..1 IsCurrentJob // Last minute addition 8/17 based on Genny's comment Element: IsCurrentJob - Based on: EvaluationComponent - Description: "A true/false flag indicating if this is the person's current job (at the time the resource was last updated)." - Value: boolean + Based on: CodedEvaluationComponent + Description: "A flag indicating if this is the person's current job (at the time the resource was last updated)." + Value: CodeableConcept from YesNoVS Element: SocialHistoryObservation Based on: Observation From 8532a96e41e18349777ed3e174fcd7bd9dc6fd49 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 17 Aug 2018 15:44:17 -0400 Subject: [PATCH 052/289] updated ig wound config --- spec/ig-wound-config.json | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/spec/ig-wound-config.json b/spec/ig-wound-config.json index ae35d8ed..e670bad4 100644 --- a/spec/ig-wound-config.json +++ b/spec/ig-wound-config.json @@ -4,7 +4,33 @@ "projectURL": "http://hl7.org/fhir/us/sw", "fhirURL": "http://hl7.org/fhir/us/sw", "entryTypeURL": "http://hl7.org/fhir/us/sw/spec", - + "provinenceInfo": { + "leadAuthor": { + "name":"Mark Kramer", + "organization": "The MITRE Corporation", + "email": "mkramer@mitre.org" + }, + "otherAuthors": [ + { + "name": "Rute Martins Baptista", + "email": "rbatiste@mitre.org" + }, + { + "name": "Abhijay Bhatnagar", + "email": "abhatnagar@mitre.org" + }, + { + "name": "Chris Moesel", + "email": "cmoesel@mitre.org" + }, + { + "name": "May Terry", + "email": "mokeefe@mitre.org" + } + ], + "license": "Creative Commons CC-BY ", + "copyright": "Copyright (c) The MITRE Organization " + }, "implementationGuide": { "npmName": "hl7.fhir.us.swa", From 01777c727c49fcc4a0413704f0ee25eda7c16f17 Mon Sep 17 00:00:00 2001 From: Chris Moesel Date: Fri, 17 Aug 2018 20:45:15 -0400 Subject: [PATCH 053/289] Updates to Editors/Contributors Fix info in editors/contributors and fix table formatting. --- spec/LandingPageOccupation.html | 145 ++++++++++++++++---------------- 1 file changed, 74 insertions(+), 71 deletions(-) diff --git a/spec/LandingPageOccupation.html b/spec/LandingPageOccupation.html index 070f5983..010bbe64 100644 --- a/spec/LandingPageOccupation.html +++ b/spec/LandingPageOccupation.html @@ -7,7 +7,7 @@

Occupational Data for Health Implementation Guide

Background

The majority of adults in the U.S. spend more than half their waking hours at work. Therefore, health and work are inextricably inter-related. For example, the management of chronic conditions requires taking the patient’s work environment into consideration. Furthermore, the recognition of new conditions related to previously unknown workplace hazards has often come from astute clinicians, which requires knowledge of the patients’ work-setting. ONC has indicated recognition of the value of work information for health care.

-

The incorporation of self-reported ODH into Electronic health records (EHRs) and other IT healthcare systems provides an opportunity to improve health in relation to work. ODH has not been broadly recognized as a social determinate of health and has not yet been a priority for inclusion in IT healthcare systems in a structured way that fully supports direct patient care and occupational public health activities.

+

The incorporation of self-reported ODH into Electronic health records (EHRs) and other IT healthcare systems provides an opportunity to improve health in relation to work. ODH has not been broadly recognized as a social determinate of health and has not yet been a priority for inclusion in IT healthcare systems in a structured way that fully supports direct patient care and occupational public health activities.

Though research has been conducted and guidance is available to support clinicians, the IT healthcare systems they work in are unable to efficiently identify patients that would benefit the most from this knowledge.

This project seeks to address this gap of system and awareness by modeling ODH in a way so that it supports diagnosis, treatment, research and surveillance of work-related injury and illness.

Scope

@@ -55,196 +55,199 @@

Questions for Reviewers

 

Credits:

 

- +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+

Co-Editor:

+

Genevieve Barkocy Luensman

CDC/NIOSH/RHD/SB

-

bve2@cdc.gov

Respiratory Health Division (RHD), National Institute for Occupational Safety and Health (NIOSH)

+

bve2@cdc.gov

+

Co-Editor:

-

Eileen Storey, Respiratory Health Division (RHD), National Institute for Occupational Safety and Health (NIOSH)

+
+

Eileen Storey

+

AECOM/Professional Staffing Partners Plus Contractor

+

Co-Editor:

+

Barbara Wallace

+

AECOM/Professional Staffing Partners Plus Contractor

okt5@cdc.gov

-

Emergint Technologies, Inc. and Attain, LLC. Currently DSHEFS, NIOSH

+

Co-Editor:

-

Margaret S. Filios, Respiratory Health Division (RHD), National Institute for Occupational Safety and Health (NIOSH)

+
+

Margaret S. Filios

+

Respiratory Health Division (RHD), National Institute for Occupational Safety and Health (NIOSH)

+

Co-Editor:

+

Stacey Marovich, MHI, MS, PMP, MCTS

-

CDC/NIOSH/RHD

-

awg8@cdc.gov

-

Emergint Technologies, Inc. and Attain, LLC. Currently DSHEFS, NIOSH

+

CDC/NIOSH/DSHEFS

+

smarovich@cdc.gov

+

Co-Editor:

-

Marie Haring Sweeney, Division of Surveillance, Hazard Evaluation, and Field Studies (DSHEFS), National Institute for Occupational Safety and Health (NIOSH)

+
+

Marie Haring Sweeney

+

Division of Surveillance, Hazard Evaluation, and Field Studies (DSHEFS), National Institute for Occupational Safety and Health (NIOSH)

+

Co-Editor:

-

Angela Crovetti (Attain, LLC)

+
+

Angela C. Crovetti +

Sr. Consultant, Attain/CDC/NIOSH/WTCHP

+

nut3@cdc.gov

+

Co-Editor:

-

John Myers, Division of Safety Research (DSR), National Institute for Occupational Safety and Health (NIOSH)

+
+

John Myers

+

Division of Safety Research (DSR), National Institute for Occupational Safety and Health (NIOSH)

+

Co-Editor:

+

Lori Reed-Fourquet

e-HealthSign, LLC

lfourquet@ehealthsign.com

+

Co-Editor:

-

Kerry Souza, Division of Surveillance, Hazard Evaluation, and Field Studies (DSHEFS), National Institute for Occupational Safety and Health (NIOSH)

+
+

Kerry Souza

+

Division of Surveillance, Hazard Evaluation, and Field Studies (DSHEFS), National Institute for Occupational Safety and Health (NIOSH)

+

Co-Editor:

+

Rob Hausam

Hausam Consulting

rob@hausamconsulting.com

+

Co-Editor:

-

Christina Socias-Morales, Division of Safety Research (DSR), National Institute for Occupational Safety and Health (NIOSH)

+
+

Christina Socias-Morales

+

Division of Safety Research (DSR), National Institute for Occupational Safety and Health (NIOSH)

+

Co-Editor:

+

Mark Kramer

MITRE

-

mKramer@mitre.org

+

mkramer@mitre.org

+

Co-Editor:

-

Sherry Baron, DSHEFS, NIOSH. Currently Queens College, City University of New York, Flushing NY USA

+
+

Sherry Baron

+

DSHEFS, NIOSH. Currently Queens College, City University of New York, Flushing NY USA

+
+

 

Contributors include participants HL7 HIR Management Group, Structured Documents Work Group, Patient Administration Workgroup, Orders and Observations Work Group and the Public Health Workgroup:

- - +

 

+ + - - - - - - - - - - - - - - - - - - - - - - -
+

Douglas Trout

+

Division of Surveillance, Hazard Evaluation, and Field Studies (DSHEFS), National Institute for Occupational Safety and Health (NIOSH)

+

Kristin Yeoman

+

Western States Division (WSD), National Institute for Occupational Safety and Health (NIOSH)

+

Sara Luckhaupt

+

Division of Surveillance, Hazard Evaluation, and Field Studies (DSHEFS), National Institute for Occupational Safety and Health (NIOSH)

+

Carissa Rocheleau

+

Division of Surveillance, Hazard Evaluation, and Field Studies (DSHEFS), National Institute for Occupational Safety and Health (NIOSH)

+

Claire Caruso

+

Division of Applied Research and Technology (DART)), National Institute for Occupational Safety and Health (NIOSH)

+

Nicole Edwards

+

Respiratory Health Division, National Institute for Occupational Safety and Health (NIOSH)

+

Deborah Hoyer

+

Office of the Director (OD), National Institute for Occupational Safety and Health (NIOSH)

+

E. Michael Goldcamp

+

DSR, NIOSH. Currently OD, NIOSH

     

 

From 8471d34a0b52e23159d36c505ea88a4b08382ec8 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 12 Oct 2018 15:38:44 -0400 Subject: [PATCH 054/289] Got rid of StatementTopic --- spec/cimi_datatypes.txt | 2 +- spec/cimi_encounter.txt | 2 +- spec/cimi_entity.txt | 5 --- spec/cimi_procedure.txt | 30 +++++++++--------- spec/cimi_statement.txt | 50 ++++++++++++++++++++--------- spec/cimi_statement_map.txt | 3 +- spec/cimi_topic.txt | 63 ------------------------------------- spec/ig-cimi-config.json | 2 +- spec/shr_base.txt | 2 +- spec/shr_core.txt | 2 +- spec/shr_occupation.txt | 14 ++++++--- spec/shr_oncology.txt | 2 +- spec/shr_research.txt | 2 +- spec/shr_wound.txt | 8 ++--- 14 files changed, 72 insertions(+), 115 deletions(-) delete mode 100644 spec/cimi_topic.txt diff --git a/spec/cimi_datatypes.txt b/spec/cimi_datatypes.txt index 7b1c51f7..eef842c3 100644 --- a/spec/cimi_datatypes.txt +++ b/spec/cimi_datatypes.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.datatypes Description: "The CIMI Data Types are the fundamental non-primitive types of the CIMI model. All data types in CIMI inherit from the non-archetypable DataType abstract class." -Uses: cimi.element, cimi.topic, cimi.statement, shr.core +Uses: cimi.element, cimi.statement, shr.core Element: EmbeddedContent Concept: TBD diff --git a/spec/cimi_encounter.txt b/spec/cimi_encounter.txt index f54c4ccd..70016722 100644 --- a/spec/cimi_encounter.txt +++ b/spec/cimi_encounter.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.encounter Description: "The Encounter domain contains definitions that capture interactions between the person of record and healthcare providers, including inpatient, ambulatory care, and telecare." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.statement, cimi.entity Element: Encounter diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index 1affde91..307b2ad1 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -244,11 +244,6 @@ Description: "A type of prescription drug or over-the-counter drug that is used Value: CodeableConcept or ref(Substance) or ref(Medication) 1..1 IngredientAmount 1..1 IsActiveIngredient - - Element: IsActiveIngredient - Concept: TBD - Description: "True if the ingredient is an active ingredient in the medication." - Value: boolean // forced to use boolean by FHIR mapping Element: Manufacturer Concept: MTH#C1114744 diff --git a/spec/cimi_procedure.txt b/spec/cimi_procedure.txt index 586c2246..be8c66c3 100644 --- a/spec/cimi_procedure.txt +++ b/spec/cimi_procedure.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.procedure Description: "The CIMI procedure domain contains contexts, topics, and statements related to procedures." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.statement, cimi.entity CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category @@ -131,7 +131,7 @@ Description: "Base class for actions related to the collection of a specimen." EntryElement: ProcedurePerformedStatement Based on: ActionPerformedStatement Description: "A procedure that has been performed." - StatementTopic is type ProcedureTopic + ActionTopic is type ProcedureTopic Participant.OnBehalfOf value is type ref(Organization) Status must be from http://hl7.org/fhir/ValueSet/event-status // Participant.EntityOrRole is type ref(Practitioner) @@ -155,7 +155,7 @@ Description: "A procedure that has been performed." EntryElement: ProcedureNotPerformedStatement Based on: ActionNotPerformedStatement - StatementTopic is type ProcedureTopic + ActionTopic is type ProcedureTopic RelatedRequest value is type ref(ProcedureRequestedStatement) 0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason @@ -163,52 +163,52 @@ EntryElement: ProcedureRequestedStatement Based on: ActionRequestedStatement PriorityRank must be from http://hl7.org/fhir/ValueSet/request-priority // required Status must be from http://hl7.org/fhir/ValueSet/request-status - StatementTopic is type ProcedureTopic + ActionTopic is type ProcedureTopic EntryElement: ProcedureRequestedAgainstStatement Based on: ActionRequestedAgainstStatement - StatementTopic is type ProcedureTopic + ActionTopic is type ProcedureTopic EntryElement: SpecimenCollectionPerformedStatement Based on: ProcedurePerformedStatement 0..1 AnatomicalLocation // FHIR limits Specimen.collection.bodySite to 0..1 - StatementTopic is type SpecimenCollectionTopic + ActionTopic is type SpecimenCollectionTopic EntryElement: SpecimenCollectionRequestedStatement Based on: ProcedureRequestedStatement - StatementTopic is type SpecimenCollectionTopic + ActionTopic is type SpecimenCollectionTopic EntryElement: ImagingProcedurePerformedStatement Based on: ProcedurePerformedStatement - StatementTopic is type ImagingProcedureTopic + ActionTopic is type ImagingProcedureTopic EntryElement: ImagingProcedureRequestedStatement Based on: ProcedureRequestedStatement - StatementTopic is type ImagingProcedureTopic + ActionTopic is type ImagingProcedureTopic EntryElement: SurgicalProcedurePerformedStatement Based on: ProcedurePerformedStatement - StatementTopic is type SurgicalProcedureTopic + ActionTopic is type SurgicalProcedureTopic EntryElement: SurgicalProcedureRequestedStatement Based on: ProcedureRequestedStatement - StatementTopic is type SurgicalProcedureTopic + ActionTopic is type SurgicalProcedureTopic EntryElement: SurgicalProcedureNotPerformedStatement Based on: ProcedureNotPerformedStatement - StatementTopic is type SurgicalProcedureTopic + ActionTopic is type SurgicalProcedureTopic EntryElement: SurgicalProcedureRequestedAgainstStatement Based on: ProcedureRequestedAgainstStatement - StatementTopic is type SurgicalProcedureTopic + ActionTopic is type SurgicalProcedureTopic EntryElement: LaboratoryProcedurePerformedStatement Based on: ProcedurePerformedStatement - StatementTopic is type LaboratoryProcedureTopic + ActionTopic is type LaboratoryProcedureTopic EntryElement: LaboratoryProcedureRequestedStatement Based on: ProcedureRequestedStatement - StatementTopic is type LaboratoryProcedureTopic + ActionTopic is type LaboratoryProcedureTopic diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 5b56b248..84f0d976 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.statement -Description: "The namespace containing cimi-derived classes representing complete clinical statements. In this specification, these classes derive from the StatementTopic class hierarchy, not ClinicalStatement, which is a significant departure from CIMI. This simplifies the resulting logical models." -Uses: shr.core, cimi.core, cimi.element, cimi.topic, cimi.entity, cimi.encounter, cimi.datatypes +Description: "The namespace containing cimi-derived classes representing complete clinical statements." +Uses: shr.core, cimi.core, cimi.element, cimi.entity, cimi.encounter, cimi.datatypes CodeSystem: LNC = http://loinc.org CodeSystem: SCT = http://snomed.info/sct @@ -13,26 +13,22 @@ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category Element: ClinicalStatement Based on: InformationEntry Concept: TBD -Description: "A special type of information entry consisting of a topic and a context. -The ClinicalStatement class provides the core pattern for more specific clinical statement classes, such as a statement that a finding has been found in a patient or that a procedure has been proposed by a clinical decision support system. The ClinicalStatement pattern defines the core attributes common to most clinical statements and specifies a composition pattern that encourage model component reuse and better alignment with the SNOMED CT Concept Model." +Description: "A clinical statement is something an agent (human or machine) says and/or records, e.g., an observation, opinion, directive, record of action, or administrative entry." +0..1 PersonOfRecord 0..1 ContextCode -0..1 StatementTopic 0..1 Encounter // clinical statements are often associated with specific encounters Element: ContextCode Description: "Code representing the sense in which the statement is interpreted, for example, the degree of presence in a PresenceStatement." Value: CodeableConcept - - //---------- Actions -------------- Abstract Element: ActionStatement Based on: ClinicalStatement Description: "Abstract class representing any type of action." -1..1 PersonOfRecord -1..1 StatementTopic - StatementTopic is type ActionTopic +1..1 PersonOfRecord // constrain to required +1..1 ActionTopic // introduce topics at this point 0..* Reason Element: Reason @@ -164,18 +160,35 @@ Abstract Element: ActionRequestedAgainstStatement Based on: ActionStatement Description: "Abstract class representing a request to not perform any type of action." +Abstract Element: ActionTopic +Based on: NonIndependent +Description: "Compositional and reusable grouping of attributes that make up the clinical focus of an action statement, independent whether the action is potential or actual, past or future." +0..1 Category +1..1 TopicCode + + Element: TopicCode + Concept: TBD + Description: "The concept representing the finding or action that is the topic of the statement. + + For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." + Value: CodeableConcept + //-------------Findings------------ Abstract Element: FindingStatement Based on: ClinicalStatement -Description: "Any clinical statement representing a finding." -0..1 PersonOfRecord +Description: "A clinical statement representing a finding." +0..1 Focus 0..1 Interpretation //1..1 FindingStatus 0..1 RelevantTime // CIMI's ClinicallyRelevantTime isn't a good name when it comes to employment and other life history events 0..1 FindingMethod 0..* Media + Element: Focus + Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. For example, the finding could deal with a condition, a behavior, a wound, or tumor." + Value: string or CodeableConcept or Identifier or ref(EntityOrRole) or ref(ClinicalStatement) + Element: Interpretation Concept: MTH#C0420833 Description: "A clinical interpretation of a finding (applies to both assertions and observation)." @@ -203,7 +216,6 @@ Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." 1..1 PersonOfRecord -0..0 StatementTopic // eliminate to avoid making everything more complicated 1..1 TopicCode ContextCode is SCT#424975005 "Record Entity" //0..0 SourceOfInformation value is type AnyPersonOrOrganization // mapped to performer (who made the observation) @@ -473,12 +485,22 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Description: "The full staging information" Value: ref(Observation) + Element: AlleviatingFactor + Concept: LNC#55258-8 + Description: "Activities that reduce the severity of the pathology" + Value: CodeableConcept + + Element: ExacerbatingFactor + Concept: LNC#55258-8 + Description: "Activities that increase the severity of the pathology" + Value: CodeableConcept + EntryElement: ConditionAbsenceStatement Based on: AssertionAbsenceStatement Concept: MTH#C0277541 "no disease present" -Description: "A finding that a condition is or was not present in the subject at a certain time, not necessarily the time the information is gathered." +Description: "A finding that a condition is or was not present in the subject at a certain time or time period, not necessarily the time the information is gathered." 1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index d71f61f5..da6849ea 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -4,7 +4,8 @@ Target: FHIR_STU_3 ClinicalStatement maps to DomainResource: -Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: +Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: // TODO: observationresults is only for labs + PersonOfRecord maps to subject // SourceOfInformation.Value maps to performer // Why doesn't this work??? // Annotation maps to extension diff --git a/spec/cimi_topic.txt b/spec/cimi_topic.txt deleted file mode 100644 index c0a28e1e..00000000 --- a/spec/cimi_topic.txt +++ /dev/null @@ -1,63 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: cimi.topic -Description: "The Topic Core package contains the top-level specializations of the Statement Topic class, namely, the FindingTopic, ActionTopic (ProcedureTopic), and EventTopic classes." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.entity, cimi.statement, cimi.datatypes - -Element: StatementTopic -Based on: NonIndependent -Concept: TBD -Description: "Compositional and reusable grouping of clinical statement attributes that make up the clinical focus of a statement. - -StatementTopic class attributes are aligned with SNOMED CT Concept Model attributes when such an overlap exists. Note that this class does not include contextual attributes such as the nature of the action (ordered, proposed, planned, etc...), the nature of the patient state being described (e.g., present, suspected present, absent), and the attribution of this information (the who, when, where, how, why of the information recorded)." -1..1 TopicCode - - Element: TopicCode - Concept: TBD - Description: "The concept representing the finding or action that is the topic of the statement. - - For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." - Value: CodeableConcept - -Abstract Element: ActionTopic -Based on: StatementTopic -Description: "An entry related to an action or intervention, whether potential or actual, past or future. An intervention is an action addressing a undesired health state, behavior, risk, or goal." -0..1 Category - - -Element: FindingTopic -Based on: StatementTopic -Concept: TBD -Description: "Base class - - for all kinds of determinations: questions/answers, conditions, observations, allergies, and other findings. -The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -0..1 FindingMethod -0..1 Details -0..* Media - - - Element: Focus - Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. For example, the finding could deal with a condition, a behavior, a wound, or tumor. These are entities that are implied by clinical statements (see cimi.entity.MaterializedAssertion)" - Value: string or CodeableConcept or Identifier or ref(EntityOrRole) - -Element: AssertionTopic -Based on: FindingTopic -Description: "The base topic for conditions, allergies, adverse events, etc. These are things asserted to exist or not. The Value is interpreted in the context of the class; for an AdverseSensitivityToSubstance, the TopicCode is the substance, for a Condition, the TopicCode represents the type of condition found." - -Element: ConditionAssertionTopic -Based on: AssertionTopic -Description: "A condition, independent of context. 'Condition' is interpreted broadly to include disorder, abnormality, problem, injury, complaint, functionality, concern, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble, independent of context." - TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered -1..* Category from ConditionCategoryVS -0..* AnatomicalLocation -0..* ConditionCause -0..* AlleviatingFactor -0..* ExacerbatingFactor - - Element: AlleviatingFactor - Concept: LNC#55258-8 - Description: "Activities that reduce the severity of the pathology" - Value: CodeableConcept - - Element: ExacerbatingFactor - Concept: LNC#55258-8 - Description: "Activities that increase the severity of the pathology" - Value: CodeableConcept diff --git a/spec/ig-cimi-config.json b/spec/ig-cimi-config.json index fc10d6cb..db6ec3e1 100644 --- a/spec/ig-cimi-config.json +++ b/spec/ig-cimi-config.json @@ -18,7 +18,7 @@ { "filter": true, "strategy": "namespace", - "target": ["cimi.core", "cimi.element", "cimi.encounter", "cimi.entity", "cimi.statement", "cimi.topic"] + "target": ["cimi.core", "cimi.element", "cimi.encounter", "cimi.entity", "cimi.statement"] }, "publisher": "The Clinical Information Modeling Initiative (CIMI)", "contact": [ diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 228060ed..e8491666 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -11,6 +11,7 @@ Description: "Metadata attributes that apply to any item represented in the stan 0..1 ShrId 1..1 EntryId 0..1 Version + Version value is type id 1..1 EntryType 1..1 CreationTime 1..1 LastUpdated @@ -19,7 +20,6 @@ Description: "Metadata attributes that apply to any item represented in the stan 0..* SecurityLabel 0..* Tag 0..* DerivedFrom - Version value is type id Element: ShrId Concept: TBD diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 87f7fc34..06439a28 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.core Description: "The SHR Core domain contains definitions for a variety of general-purpose elements that are used widely in SHR. These include definitions for coding, expressions of time, quantities, addresses, names, and more." -Uses: cimi.element, cimi.topic, cimi.statement, cimi.datatypes +Uses: cimi.element, cimi.statement, cimi.datatypes Path: FHIR = http://hl7.org/fhir/ValueSet // CodeSystem: CC = http://www.nationsonline.org/oneworld/country_code_list diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 01b3ead6..f6096058 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: odh Description: "Patient’s or family member's work information." -Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.composition, cimi.entity, cimi.element, cimi.encounter, cimi.datatypes +Uses: shr.core, shr.base, cimi.core, cimi.statement, cimi.composition, cimi.entity, cimi.element, cimi.encounter, cimi.datatypes CodeSystem: LNC = http://loinc.org CodeSystem: UCUM = http://unitsofmeasure.org @@ -112,10 +112,10 @@ A person can have more than one job at the same time and multiple jobs over time A person's job can be a social determinant of their health and information about a person's job can support patient care, population health, and public health. In patient care, knowledge of a person's past or present job(s) can impact recognition, diagnosis, management, and treatment of injuries and illnesses. These data also can be used for clinical decision support and to prompt discussion of preventive care measures. For example, a record of jobs that require prolonged time in the sun might prompt a health care provider to inquire if the person wears protective clothing or sunscreen while working. At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." TopicCode is LNC#11341-5 "History of Occupation" -// ResultValue from OccupationVS - ResultValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 +0..0 ResultValue 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization EvaluationComponent +includes 0..1 Occupation includes 0..1 PastOrPresentIndustry includes 0..1 WorkClassification includes 0..1 SupervisoryLevel @@ -128,7 +128,11 @@ includes 0..1 IsCurrentJob 1..1 RelevantTime RelevantTime value is type TimePeriod -// Question -- organization only, or person or organization + Element: Occupation + Based on: CodedEvaluationComponent + Concept: LNC#85659-1 "Occupation CDC Census code" + Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 + Element: Employer Based on: Role Concept: SCT#394571004 "Employer (person)" @@ -210,7 +214,7 @@ includes 0..1 IsCurrentJob Based on: CodedEvaluationComponent Description: "A flag indicating if this is the person's current job (at the time the resource was last updated)." Value: CodeableConcept from YesNoVS - + Element: SocialHistoryObservation Based on: Observation Description: "A simplified observation for social histories." diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index 029c6c8e..21ff0cf6 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.oncology Description: "SHR implementation of ASCO requirements." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.statement, cimi.entity CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org diff --git a/spec/shr_research.txt b/spec/shr_research.txt index 05ffbe52..d162720d 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.research Description: "The SHR research domain contains definitions related to the clinical trials and research studies." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.statement, cimi.entity EntryElement: Study diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 75a7dfcf..a357651a 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: sw Description: "SHR implementation of the HL7 Pressure Ulcer Prevention Domain Analysis Model (May, 2011)." -Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition, cimi.datatypes +Uses: shr.core, shr.base, cimi.core, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition, cimi.datatypes CodeSystem: UCUM = http://unitsofmeasure.org CodeSystem: LNC = http://loinc.org @@ -69,9 +69,8 @@ Based on: FindingSiteConditionPresenceStatement Concept: SCT#416462003 "Wound (disorder)" Description: "A determination that a wound that exists at a particular body site. The WoundIdentifier serves as a link between this assertion and assessments of the wound that might occur at later times. Multiple wound assessments can be associated with a single wound." -0..0 StatementTopic - Onset value is type dateTime // 85585-8 Date of Onset {mm/dd/yyyy} - Abatement value is type dateTime // 88878-4 Date of abatement {mm/dd/yyyy} + Onset value is type dateTime // nowhere to put code LOINC 85585-8 Date of Onset {mm/dd/yyyy} + Abatement value is type dateTime // nowhere to put code 88878-4 Date of abatement {mm/dd/yyyy} 1..1 Category is OBSCAT#exam 1..1 TopicCode is SCT#416462003 "Wound (disorder)" 1..1 WoundType @@ -115,7 +114,6 @@ EntryElement: WoundAbsenceAssertion Based on: FindingSiteConditionAbsenceStatement Description: "Documents the absence of a wound at a given body site. No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicalLocation." -0..0 StatementTopic 1..1 TopicCode is SCT#416462003 "Wound (disorder)" 1..1 Category is OBSCAT#exam 1..1 AnatomicalLocation is type WoundAnatomicalLocation From 86430fb612b920ac1a35f9e307ac9d7112647fdf Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 12 Oct 2018 16:46:37 -0400 Subject: [PATCH 055/289] Eliminated Independent and NonIndependent --- spec/cimi_composition.txt | 3 +-- spec/cimi_composition_map.txt | 2 +- spec/cimi_core.txt | 18 +----------------- spec/cimi_element.txt | 2 +- spec/cimi_entity.txt | 2 +- spec/cimi_statement.txt | 1 - 6 files changed, 5 insertions(+), 23 deletions(-) diff --git a/spec/cimi_composition.txt b/spec/cimi_composition.txt index 0bbfdf8a..91cbc679 100644 --- a/spec/cimi_composition.txt +++ b/spec/cimi_composition.txt @@ -4,7 +4,7 @@ Description: "Documents, compositions, reports, and other structures involving m Uses: cimi.core, cimi.statement EntryElement: Composition -Based on: Independent +Based on: InformationEntry Description: "A composition represents a document such as a patient record, a knowledge artifact, or a catalog definition." //1..1 Status from http://hl7.org/fhir/ValueSet/composition-status //1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes @@ -12,7 +12,6 @@ Description: "A composition represents a document such as a patient record, a kn 0..* Section Element: Section - Based on: Content Description: "Represents a section containing entries in a composition." //0..1 Title 0..* ClinicalStatement diff --git a/spec/cimi_composition_map.txt b/spec/cimi_composition_map.txt index 8a713f5c..82432cec 100644 --- a/spec/cimi_composition_map.txt +++ b/spec/cimi_composition_map.txt @@ -2,7 +2,7 @@ Grammar: Map 5.1 Namespace: cimi.composition Target: FHIR_STU_3 -//Independent maps to Resource: +//InformationEntry maps to Resource: Composition maps to Composition: Section maps to section diff --git a/spec/cimi_core.txt b/spec/cimi_core.txt index e7df8478..f71beafd 100644 --- a/spec/cimi_core.txt +++ b/spec/cimi_core.txt @@ -5,31 +5,15 @@ Uses: shr.core, cimi.element, cimi.entity CodeSystem: MTH = http://ncimeta.nci.nih.gov -Element: Locatable -Description: "Abstract top level class in the CIMI hierarchy. The Locatable class reflects CIMI's implementation using Archetype Description Language (ADL). Its attributes (archetype_node_id, name, and archetype_details) are necessary to serialize CIMI definitions in ADL, but have no clinical relevance. To avoid complicating the profiles with irrelevant extensions, the attributes of Locatable have been omitted." - -Element: Independent -Based on: Locatable -Description: "Base class for classes in CIMI that stand alone. Analogous to FHIR's DomainResource." - -Element: NonIndependent // aka data element -Based on: Locatable -Description: "Parent for classes in CIMI that cannot stand alone. These reusable building blocks/data elements can be used to create classes by composition." - Element: DataType -Based on: NonIndependent Description: "Serves as a common ancestor of all CIMI types which represent the core granularity of the model." -Element: Content -Based on: Independent -Description: "Abstract ancestor of all concrete content types. A unit of content that makes up a composition - e.g., a clinical statement in a patient record, a simple or composite action is a knowledge document, a catalog entry in a catalog." - Element: InformationEntry -Based on: Content Concept: MTH#C1705654 Description: "An entry in a patient record or in a report, generally used for the documentation of clinical information about a subject of information such as a patient or a relative of the patient, asserted by a particular source, recorded, and potentially verified." 0..1 PersonOfRecord +//0..* SubjectOfInformation //0..1 SourceOfInformation //0..* Annotation //0..1 RecordStatus diff --git a/spec/cimi_element.txt b/spec/cimi_element.txt index 4ed6ee94..03950df3 100644 --- a/spec/cimi_element.txt +++ b/spec/cimi_element.txt @@ -83,7 +83,7 @@ Value: string // or id or code or CodeableConcept? Element: PartOf Description: "The larger entity that this is a portion of. For example, an organization might be part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." -Value: ref(Independent) +Value: ref(InformationEntry) Element: Status diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index 307b2ad1..5090c67f 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -5,7 +5,7 @@ Uses: shr.core, cimi.core, cimi.element, cimi.statement, cimi.datatypes Abstract Element: EntityOrRole -Based on: Independent +Based on: InformationEntry Description: "CIMI parent class for both Entity and Role." //Identifier diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 84f0d976..9b20d9cb 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -161,7 +161,6 @@ Based on: ActionStatement Description: "Abstract class representing a request to not perform any type of action." Abstract Element: ActionTopic -Based on: NonIndependent Description: "Compositional and reusable grouping of attributes that make up the clinical focus of an action statement, independent whether the action is potential or actual, past or future." 0..1 Category 1..1 TopicCode From cbeb460bd8b16c47891749e7b226406583131461 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 15 Oct 2018 15:22:47 -0400 Subject: [PATCH 056/289] Establishing new branch for "minized" FHIMI --- spec/cimi_composition.txt | 8 ++-- spec/cimi_core.txt | 76 ------------------------------------- spec/cimi_core_map.txt | 25 ------------ spec/cimi_element.txt | 2 +- spec/cimi_encounter.txt | 5 ++- spec/cimi_encounter_map.txt | 6 +-- spec/cimi_entity.txt | 8 ++-- spec/cimi_entity_map.txt | 3 +- spec/cimi_procedure.txt | 2 +- spec/cimi_procedure_map.txt | 12 +++--- spec/cimi_statement.txt | 51 ++++++++++++++++++------- spec/cimi_statement_map.txt | 8 ++-- spec/cimi_statement_vs.txt | 6 +-- spec/shr_base.txt | 39 ++++++++++++++++++- spec/shr_financial.txt | 2 +- spec/shr_occupation.txt | 12 ++---- spec/shr_occupation_map.txt | 2 +- spec/shr_oncology.txt | 2 +- spec/shr_research.txt | 2 +- spec/shr_wound.txt | 2 +- 20 files changed, 112 insertions(+), 161 deletions(-) delete mode 100644 spec/cimi_core.txt delete mode 100644 spec/cimi_core_map.txt diff --git a/spec/cimi_composition.txt b/spec/cimi_composition.txt index 91cbc679..ef3d8037 100644 --- a/spec/cimi_composition.txt +++ b/spec/cimi_composition.txt @@ -1,20 +1,20 @@ Grammar: DataElement 5.0 Namespace: cimi.composition Description: "Documents, compositions, reports, and other structures involving multiple resources." -Uses: cimi.core, cimi.statement +Uses: cimi.statement EntryElement: Composition Based on: InformationEntry -Description: "A composition represents a document such as a patient record, a knowledge artifact, or a catalog definition." +Description: "A composition represents a document such as an extract from a patient record, a knowledge artifact, or a catalog definition." //1..1 Status from http://hl7.org/fhir/ValueSet/composition-status //1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes -//1..1 CreationTime -- from Entry -- maps to date +//1..1 CreationTime -- from Entry -- maps to date 0..* Section Element: Section Description: "Represents a section containing entries in a composition." //0..1 Title - 0..* ClinicalStatement + 0..* InformationEntry diff --git a/spec/cimi_core.txt b/spec/cimi_core.txt deleted file mode 100644 index f71beafd..00000000 --- a/spec/cimi_core.txt +++ /dev/null @@ -1,76 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: cimi.core -Description: "The namespace containing definitions for basic classes in CIMI." -Uses: shr.core, cimi.element, cimi.entity - -CodeSystem: MTH = http://ncimeta.nci.nih.gov - -Element: DataType -Description: "Serves as a common ancestor of all CIMI types which represent the core granularity of the model." - - -Element: InformationEntry -Concept: MTH#C1705654 -Description: "An entry in a patient record or in a report, generally used for the documentation of clinical information about a subject of information such as a patient or a relative of the patient, asserted by a particular source, recorded, and potentially verified." -0..1 PersonOfRecord -//0..* SubjectOfInformation -//0..1 SourceOfInformation -//0..* Annotation -//0..1 RecordStatus -0..1 Recorded -0..1 Signed // Author -//0..* Cosigned -//0..* Verified -0..1 AdditionalText - - Element: PersonOfRecord - Concept: TBD - Description: "The person this entry belongs to." - Value: ref(Person) - -/* - Element: SourceOfInformation - Concept: MTH#C0449416 - Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." - Value: ref(EntityOrRole) //string or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) - 0..1 RelationshipToPersonOfRecord -*/ - Element: RelationshipToPersonOfRecord - Concept: MTH#C0015608 - Description: "The relationship to the person of record." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered - - Element: RecordStatus - Description: "Concept indicating the state of this record, e.g., 'entered in error'." - Value: CodeableConcept - - Element: Recorded - Description: "The person who entered the order on behalf of another individual for example in the case of a verbal or a telephone order." - Value: Attribution - - Element: Signed - Description: "Provenance information specific to the signing of the clinical statement." - Value: Attribution - - Element: Cosigned - Description: "Provenance information specific to the cosigning of the clinical statement." - Value: Attribution - - Element: Verified - Description: "Provenance information specific to the verification process associated with this statement (e.g., verifier, when verified, etc.)" - Value: Attribution - - Element: Attribution - Description: "Information ascribing the record to a particular contributor or responsible person." - 1..1 EntityOrRole - 0..1 RecordedOn - 0..1 Signature - - Element: RecordedOn - Description: "The time of the attribution action." - Value: instant - - Element: AdditionalText - Concept: MTH#C0947611 - Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." - Value: string // change to language-text \ No newline at end of file diff --git a/spec/cimi_core_map.txt b/spec/cimi_core_map.txt deleted file mode 100644 index 280182f4..00000000 --- a/spec/cimi_core_map.txt +++ /dev/null @@ -1,25 +0,0 @@ -Grammar: Map 5.1 -Namespace: cimi.core -Target: FHIR_STU_3 - - -PersonOfRecord maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: - Person.ActiveFlag maps to active - Person.HumanName maps to name - Person.AdministrativeGender maps to gender - Person.Headshot maps to photo - Person.Address maps to address - Person.ContactPoint maps to telecom - Person.LanguageUsed maps to communication - Person.DateOfBirth maps to birthDate - Person.MaritalStatus maps to maritalStatus -// PlaceOfBirth maps to http://hl7.org/fhir/StructureDefinition/birthPlace -// MultipleBirth maps to multipleBirth[x].boolean -// MultipleBirth.MultipleBirthOrder maps to multipleBirth[x].integer -// BirthSex maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex -// Race maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-race -// Ethnicity maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity -// MothersMaidenName maps to http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName -// MedicalInterpreterNeeded maps to http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired -// Deceased maps to deceased[x].boolean -// Deceased.DateOfDeath maps to deceased[x].dateTime \ No newline at end of file diff --git a/spec/cimi_element.txt b/spec/cimi_element.txt index 03950df3..684f4f37 100644 --- a/spec/cimi_element.txt +++ b/spec/cimi_element.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.element Description: "The Element Package defines reusable data elements that are used across multiple packages." -Uses: shr.core, shr.base, cimi.core, cimi.entity, cimi.datatypes +Uses: shr.core, shr.base, cimi.statement, cimi.entity, cimi.datatypes Element: Annotation diff --git a/spec/cimi_encounter.txt b/spec/cimi_encounter.txt index 70016722..6059ab26 100644 --- a/spec/cimi_encounter.txt +++ b/spec/cimi_encounter.txt @@ -1,13 +1,14 @@ Grammar: DataElement 5.0 Namespace: cimi.encounter Description: "The Encounter domain contains definitions that capture interactions between the person of record and healthcare providers, including inpatient, ambulatory care, and telecare." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.element, cimi.statement, cimi.entity + - Element: Encounter Based on: InformationEntry Concept: TBD Description: "A description of an interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient." +0..1 Patient 0..1 EncounterClass 0..* EncounterType 0..1 TimePeriod diff --git a/spec/cimi_encounter_map.txt b/spec/cimi_encounter_map.txt index 9de1d2cd..5976bcef 100644 --- a/spec/cimi_encounter_map.txt +++ b/spec/cimi_encounter_map.txt @@ -4,7 +4,7 @@ Target: FHIR_STU_3 Encounter maps to Encounter: - PersonOfRecord maps to subject + Patient maps to subject EncounterType maps to type // ServiceProvider maps to serviceProvider Status maps to status @@ -23,8 +23,8 @@ Encounter maps to Encounter: /* EncounterRequested maps to ReferralRequest: - Signed.EntityOrRole maps to requester.agent - PersonOfRecord maps to subject + SignedBy.EntityOrRole maps to requester.agent + Patient maps to subject ReferralDate maps to authoredOn //ReferralSourceType EncounterTopic.TopicCode maps to type diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index 5090c67f..6cc756ed 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -1,8 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.entity Description: "The namespace containing definitions for basic classes in CIMI." -Uses: shr.core, cimi.core, cimi.element, cimi.statement, cimi.datatypes - +Uses: shr.core, cimi.element, cimi.statement, cimi.datatypes Abstract Element: EntityOrRole Based on: InformationEntry @@ -95,7 +94,7 @@ Value: ref(Patient) or ref(Practitioner) Element: PatientOrPractitionerOrRelatedPerson Based on: EntityOrRole -Description: "A choice of Patient, Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping AdverseEvent.Signed to FHIR AdverseEvent." +Description: "A choice of Patient, Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping AdverseEvent.SignedBy to FHIR AdverseEvent." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) Element: PractitionerOrRelatedPerson @@ -103,11 +102,12 @@ Based on: EntityOrRole Description: "A choice of Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping EncounterPerformed.Participant to FHIR Encounter.participant.individual" Value: ref(Practitioner) or ref(RelatedPerson) +/* Element: AnyPersonOrOrganization Based on: EntityOrRole Description: "Needed for mapping to FHIR, for example, mapping to FHIR MedicationStatement.informationSource." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) //or ref(Organization) - +*/ EntryElement: Group Based on: EntityOrRole diff --git a/spec/cimi_entity_map.txt b/spec/cimi_entity_map.txt index bf07b7fa..f6a0e436 100644 --- a/spec/cimi_entity_map.txt +++ b/spec/cimi_entity_map.txt @@ -2,7 +2,6 @@ Grammar: Map 5.1 Namespace: cimi.entity Target: FHIR_STU_3 - Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: Person.ActiveFlag maps to active Person.HumanName maps to name @@ -136,5 +135,5 @@ Device maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-device: Version maps to version Url maps to url - + \ No newline at end of file diff --git a/spec/cimi_procedure.txt b/spec/cimi_procedure.txt index be8c66c3..f8524c32 100644 --- a/spec/cimi_procedure.txt +++ b/spec/cimi_procedure.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.procedure Description: "The CIMI procedure domain contains contexts, topics, and statements related to procedures." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.element, cimi.statement, cimi.entity CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category diff --git a/spec/cimi_procedure_map.txt b/spec/cimi_procedure_map.txt index 541975b7..727224d6 100644 --- a/spec/cimi_procedure_map.txt +++ b/spec/cimi_procedure_map.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 ProcedurePerformedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: ProcedureTopic.TopicCode maps to code - PersonOfRecord maps to subject + Patient maps to subject ProcedureTopic.Category maps to category constrain notDone to 0..0 constrain notDoneReason to 0..0 @@ -30,7 +30,7 @@ ProcedurePerformedStatement maps to http://hl7.org/fhir/us/core/StructureDefinit ProcedureNotPerformedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: ProcedureTopic.TopicCode maps to code - PersonOfRecord maps to subject + Patient maps to subject ProcedureTopic.Category maps to category // TODO the following is causing a crash // fix notDone to true @@ -55,11 +55,11 @@ SurgicalProcedurePerformedStatement maps to http://hl7.org/fhir/us/core/Structur ProcedureRequestedStatement maps to ProcedureRequest: _Entry.CreationTime maps to authoredOn - Signed.Value.EntityOrRole maps to requester + _Entry.SignedBy.Value.EntityOrRole maps to requester ProcedureTopic.TopicCode maps to code ProcedureTopic.Category maps to category constrain doNotPerform to 0..0 - PersonOfRecord maps to subject + Patient maps to subject ProcedureTopic.AnatomicalLocation maps to bodySite Encounter maps to context Reason maps to reasonCode @@ -74,10 +74,10 @@ ProcedureRequestedAgainstStatement maps to ProcedureRequest: fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal _Entry.CreationTime maps to authoredOn - Signed.Value.EntityOrRole maps to requester + _Entry.SignedBy.Value.EntityOrRole maps to requester ProcedureTopic.TopicCode maps to code ProcedureTopic.Category maps to category - PersonOfRecord maps to subject + Patient maps to subject ProcedureTopic.AnatomicalLocation maps to bodySite Reason maps to reasonCode // Encounter maps to context diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 9b20d9cb..21e63fe8 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.statement Description: "The namespace containing cimi-derived classes representing complete clinical statements." -Uses: shr.core, cimi.core, cimi.element, cimi.entity, cimi.encounter, cimi.datatypes +Uses: shr.core, cimi.element, cimi.entity, cimi.encounter, cimi.datatypes CodeSystem: LNC = http://loinc.org CodeSystem: SCT = http://snomed.info/sct @@ -10,24 +10,49 @@ CodeSystem: NCI = https://evs.nci.nih.gov/ftp1/CDISC/SDTM/ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category +Element: InformationEntry +Concept: MTH#C1705654 +Description: "Parent class for any entry in clinical or administrative health-related system, including information about organizations, providers, patients, services, payments, decision support artifacts, etc." + + Element: ClinicalStatement Based on: InformationEntry Concept: TBD Description: "A clinical statement is something an agent (human or machine) says and/or records, e.g., an observation, opinion, directive, record of action, or administrative entry." -0..1 PersonOfRecord -0..1 ContextCode +0..1 Patient +0..* SubjectOfInformation 0..1 Encounter // clinical statements are often associated with specific encounters +//0..1 SourceOfInformation +//0..* Annotation +0..1 AdditionalText + + Element: SubjectOfInformation + Description: "The specific thing whose property is being observed. This is only required if the thing observed is different than the person of record. For example, the subject of observatoin could be a specific condition if the property is progression, or a specific instance of a wound if the property is wound length." + Value: ref(InformationEntry) + + Element: SourceOfInformation + Concept: MTH#C0449416 + Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." + Value: ref(EntityOrRole) //string or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) + 0..1 RelationshipToPersonOfRecord + + Element: RelationshipToPersonOfRecord + Concept: MTH#C0015608 + Description: "The relationship to the person of record." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered + + Element: AdditionalText + Concept: MTH#C0947611 + Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." + Value: string // change to language-text - Element: ContextCode - Description: "Code representing the sense in which the statement is interpreted, for example, the degree of presence in a PresenceStatement." - Value: CodeableConcept //---------- Actions -------------- Abstract Element: ActionStatement Based on: ClinicalStatement Description: "Abstract class representing any type of action." -1..1 PersonOfRecord // constrain to required +1..1 Patient // constrain from 0..1 to 1..1 1..1 ActionTopic // introduce topics at this point 0..* Reason @@ -214,9 +239,8 @@ Based on: FindingStatement Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -1..1 PersonOfRecord +1..1 Patient 1..1 TopicCode - ContextCode is SCT#424975005 "Record Entity" //0..0 SourceOfInformation value is type AnyPersonOrOrganization // mapped to performer (who made the observation) 0..1 ResultValue 0..1 ExceptionValue from http://hl7.org/fhir/ValueSet/data-absent-reason if covered @@ -382,12 +406,12 @@ Description: "A coded finding from a laboratory test without further panel membe Abstract Element: AssertionStatement Based on: FindingStatement Description: "A clinical statement that asserts presence or absence." -1..1 PersonOfRecord +1..1 Patient Abstract Element: AssertionPresenceStatement // AssertPresence Based on: AssertionStatement Description: "Statement that a finding is present." - ContextCode from PresenceContextVS +// PresenceContextVS 1..1 VerificationStatus 0..1 Onset 0..1 Abatement @@ -419,7 +443,7 @@ Description: "Statement that a finding is present." Abstract Element: AssertionAbsenceStatement // AssertAbsence Based on: AssertionStatement Description: "Statement that a finding is absent." - ContextCode from AbsenceContextVS +// AbsenceContextVS EntryElement: ConditionPresenceStatement Based on: AssertionPresenceStatement @@ -508,8 +532,7 @@ EntryElement: ClinicalNote Based on: FindingStatement Concept: MTH#C0747978 "Progress Note" Description: "An entry concerning a patient where the result is a narrative text." -1..1 PersonOfRecord - ContextCode is SCT#424975005 "Record Entity" +1..1 Patient 1..1 AdditionalText // make required diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index da6849ea..3ae03f8c 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -6,12 +6,12 @@ ClinicalStatement maps to DomainResource: Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: // TODO: observationresults is only for labs - PersonOfRecord maps to subject + Patient maps to subject // SourceOfInformation.Value maps to performer // Why doesn't this work??? // Annotation maps to extension // RecordStatus maps to extension -// Cosigned maps to extension -// Verified maps to extension +// _Entry.CosignedBy maps to extension +// _Entry.VerifiedBy maps to extension TopicCode maps to code FindingMethod maps to method AdditionalText maps to comment @@ -47,7 +47,7 @@ Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-obse ConditionPresenceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: // _Entry.CreationTime maps to assertedDate // why doesn't this work? -// PersonOfRecord maps to subject +// Patient maps to subject // SourceOfInformation.Value maps to asserter // why doesn't this work? Category maps to category TopicCode maps to code diff --git a/spec/cimi_statement_vs.txt b/spec/cimi_statement_vs.txt index 6b38fa9a..ae795ba3 100644 --- a/spec/cimi_statement_vs.txt +++ b/spec/cimi_statement_vs.txt @@ -53,11 +53,11 @@ Description: "A code describing whether the finding in question is present, pos //SCT#410605003 "Confirmed present" //SCT#410591008 "Definitely present" SCT#410515003 "Known present" -SCT#410590009 "Known possible" SCT#410592001 "Probably present" +SCT#410590009 "Known possible" SCT#415684004 "Suspected" -SCT#410593006 "Probably not present" -SCT#261665006 "Unknown" +//SCT#410593006 "Probably not present" // should be reported as Absence +//SCT#261665006 "Unknown" ValueSet: AbsenceContextVS Description: "A code describing whether the finding is question is absent, unknown, or not suspected." diff --git a/spec/shr_base.txt b/spec/shr_base.txt index e8491666..e606e788 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.base Description: "Contains the SHR Entry definition -- the metadata added to any independent item in the SHR." -Uses: shr.core, cimi.entity, cimi.statement, cimi.datatypes +Uses: shr.core, cimi.element, cimi.entity, cimi.statement, cimi.datatypes CodeSystem: MTH = http://ncimeta.nci.nih.gov @@ -15,15 +15,21 @@ Description: "Metadata attributes that apply to any item represented in the stan 1..1 EntryType 1..1 CreationTime 1..1 LastUpdated +0..1 RecordStatus 0..1 Narrative 0..1 Language 0..* SecurityLabel 0..* Tag 0..* DerivedFrom +0..1 RecordedBy +0..1 SignedBy // Author +//0..* CosignedBy +//0..* VerifiedBy + Element: ShrId Concept: TBD - Description: "A unique, persistent, permanent identifier for the overall health record belonging to the PersonOfRecord." + Description: "A unique, persistent, permanent identifier for the overall health record belonging to the Patient." Value: id Element: EntryId @@ -41,6 +47,10 @@ Description: "Metadata attributes that apply to any item represented in the stan Description: "The most recent date the entry was changed." Value: instant + Element: RecordStatus + Description: "Concept indicating the state of this record, e.g., 'entered in error'." + Value: CodeableConcept + Element: Narrative Concept: TBD Description: "A human-readable narrative, potentially including images, that contains a summary of the resource, and may be used to represent the content of the resource to a human." @@ -67,6 +77,31 @@ Description: "Metadata attributes that apply to any item represented in the stan Description: "Indicates the source of information in the case the Entry has been created by logical extension or modification of one or more source entries." Value: ref(ClinicalStatement) + Element: RecordedBy + Description: "The person who entered the order on behalf of another individual for example in the case of a verbal or a telephone order." + Value: Attribution + + Element: SignedBy + Description: "Provenance information specific to the signing of the clinical statement." + Value: Attribution + + Element: CosignedBy + Description: "Provenance information specific to the cosigning of the clinical statement." + Value: Attribution + + Element: VerifiedBy + Description: "Provenance information specific to the verification process associated with this statement (e.g., verifier, when verified, etc.)" + Value: Attribution + + Element: Attribution + Description: "Information ascribing the record to a particular contributor or responsible person." + 1..1 EntityOrRole + 0..1 RecordedOn + 0..1 Signature + + Element: RecordedOn + Description: "The time of the attribution action." + Value: instant /* Element: HealthRecordId diff --git a/spec/shr_financial.txt b/spec/shr_financial.txt index 3f394cbf..3c00a0a5 100644 --- a/spec/shr_financial.txt +++ b/spec/shr_financial.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.financial Description: "The SHR Demographics domain contains definitions that describe basic characteristics of the person of record, such as name, address, and date of birth. Elements in the demographics domains are used for unique identification and patient matching." -Uses: shr.core, shr.base, cimi.core, cimi.entity, cimi.element +Uses: shr.core, shr.base, cimi.statement, cimi.entity, cimi.element Path: FHIR = http://hl7.org/fhir/ValueSet diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index f6096058..0745e1e3 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: odh Description: "Patient’s or family member's work information." -Uses: shr.core, shr.base, cimi.core, cimi.statement, cimi.composition, cimi.entity, cimi.element, cimi.encounter, cimi.datatypes +Uses: shr.core, shr.base, cimi.statement, cimi.composition, cimi.entity, cimi.element, cimi.encounter, cimi.datatypes CodeSystem: LNC = http://loinc.org CodeSystem: UCUM = http://unitsofmeasure.org @@ -221,9 +221,6 @@ Description: "A simplified observation for social histories." Category is OBSCAT#social-history 0..1 FocalSubjectModifier // Get rid of some unnecessary CIMI-isms -0..0 Recorded -0..0 Signed -0..0 ContextCode //0..0 SourceOfInformation 0..0 FindingMethod 0..0 AnatomicalLocation @@ -241,17 +238,14 @@ Description: "A simplified observation for social histories." //0..0 FindingStatus Element: FocalSubjectModifier - Description: "The focus of the observation, if someone other than the person of record (subject), identified only by the relationship to the PersonOfRecord." - Value: RelationshipToPersonOfRecord from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered - + Description: "The focus of the observation, if someone other than the person of record (subject), identified only by the relationship to the Patient." + Value: RelationshipToPersonOfRecord Element: CodedSocialHistoryObservation Based on: SocialHistoryObservation Description: "The result of social history questions, whose answer is expressed as a code." ResultValue value is type CodeableConcept - - /* UsualWork is in the value element Element: UsualWork diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index fb1d13fd..fe78cae1 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -4,7 +4,7 @@ Target: FHIR_STU_3 // do not map to US Core Results -- Brett says that's only for labs SocialHistoryObservation maps to Observation: - PersonOfRecord maps to subject + Patient maps to subject TopicCode maps to code Category maps to category EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index 21ff0cf6..1b8dfb98 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.oncology Description: "SHR implementation of ASCO requirements." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.element, cimi.statement, cimi.entity CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org diff --git a/spec/shr_research.txt b/spec/shr_research.txt index d162720d..b013e382 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.research Description: "The SHR research domain contains definitions related to the clinical trials and research studies." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.element, cimi.statement, cimi.entity EntryElement: Study diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index a357651a..4424b638 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: sw Description: "SHR implementation of the HL7 Pressure Ulcer Prevention Domain Analysis Model (May, 2011)." -Uses: shr.core, shr.base, cimi.core, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition, cimi.datatypes +Uses: shr.core, shr.base, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition, cimi.datatypes CodeSystem: UCUM = http://unitsofmeasure.org CodeSystem: LNC = http://loinc.org From 462ee9bf5717bcd69bbd4f72a3cdbc09c4d443da Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 15 Oct 2018 15:38:29 -0400 Subject: [PATCH 057/289] Clarified InformationEntry versus ClinicalStatement --- spec/cimi_composition_map.txt | 2 +- spec/cimi_datatypes.txt | 73 ----------------------------------- spec/cimi_datatypes_map.txt | 14 ------- spec/cimi_element.txt | 4 +- spec/cimi_entity.txt | 2 +- spec/cimi_statement.txt | 2 +- spec/cimi_statement_map.txt | 2 +- spec/shr_base.txt | 4 +- spec/shr_core.txt | 69 ++++++++++++++++++++++++++++++++- spec/shr_core_map.txt | 12 +++++- spec/shr_occupation.txt | 6 +-- spec/shr_wound.txt | 2 +- 12 files changed, 88 insertions(+), 104 deletions(-) delete mode 100644 spec/cimi_datatypes.txt delete mode 100644 spec/cimi_datatypes_map.txt diff --git a/spec/cimi_composition_map.txt b/spec/cimi_composition_map.txt index 82432cec..5bb69a08 100644 --- a/spec/cimi_composition_map.txt +++ b/spec/cimi_composition_map.txt @@ -6,7 +6,7 @@ Target: FHIR_STU_3 Composition maps to Composition: Section maps to section - Section.ClinicalStatement maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) + Section.InformationEntry maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) // (slice on = coding.code; slice strategy = includes) \ No newline at end of file diff --git a/spec/cimi_datatypes.txt b/spec/cimi_datatypes.txt deleted file mode 100644 index eef842c3..00000000 --- a/spec/cimi_datatypes.txt +++ /dev/null @@ -1,73 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: cimi.datatypes -Description: "The CIMI Data Types are the fundamental non-primitive types of the CIMI model. All data types in CIMI inherit from the non-archetypable DataType abstract class." -Uses: cimi.element, cimi.statement, shr.core - -Element: EmbeddedContent -Concept: TBD -Description: "Abstract class defining the common metadata of all types of encapsulated data, such as images." - -Element: ParsableContent -Based on: EmbeddedContent -Concept: TBD -Description: "A string that follows a formal syntax and can be analyzed and broken into meaningful parts." -Value: string -1..1 Formalism - - Element: Formalism - Concept: TBD - Description: "The system of formal syntax or interpretation associated with parsable content." - Value: CodeableConcept - -Element: Media -Based on: EmbeddedContent -Concept: TBD -Description: "A file that contains audio, video, image, or similar content." -0..1 BinaryData -0..1 ContentType -0..1 Language -0..1 ResourceLocation -0..1 ResourceSize -0..1 Hash -0..1 Title -0..1 CreationTime - - Element: BinaryData - Concept: TBD - Description: "The data itself." - Value: base64Binary - - Element: ContentType - Concept: TBD - Description: "Mime type of the content, with charset etc." - Value: code - - Element: Language - Concept: MTH#C0023008 - Description: "A human language, spoken or written." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/languages if covered - - Element: ResourceLocation - Concept: TBD - Description: "URI where data can be found." - Value: uri - - Element: ResourceSize - Concept: TBD - Description: "Number of bytes of content in the resource (if url provided)" - Value: unsignedInt - - Element: Hash - Concept: TBD - Description: "A hash code of the data (sha-1, base64ed)" - Value: base64Binary - - Element: CreationTime - Concept: MTH#C3669169 - Description: "The point in time when the information was recorded in the system of record." - Value: dateTime // we can map to instant from dateTime - -Element: PhotographicImage -Based on: Media -Concept: LNC#72170-4 - // ContentType from ImageMimeTypeVS if covered diff --git a/spec/cimi_datatypes_map.txt b/spec/cimi_datatypes_map.txt deleted file mode 100644 index 50b8d5c6..00000000 --- a/spec/cimi_datatypes_map.txt +++ /dev/null @@ -1,14 +0,0 @@ -Grammar: Map 5.1 -Namespace: cimi.datatypes -Target: FHIR_STU_3 - - -Media maps to Attachment: - BinaryData maps to data - ContentType maps to contentType - Language maps to language - ResourceLocation maps to url - ResourceSize maps to size - Hash maps to hash - Title maps to title - CreationTime maps to creation \ No newline at end of file diff --git a/spec/cimi_element.txt b/spec/cimi_element.txt index 684f4f37..8e7ed7fe 100644 --- a/spec/cimi_element.txt +++ b/spec/cimi_element.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.element Description: "The Element Package defines reusable data elements that are used across multiple packages." -Uses: shr.core, shr.base, cimi.statement, cimi.entity, cimi.datatypes +Uses: shr.core, shr.base, cimi.statement, cimi.entity Element: Annotation @@ -54,7 +54,6 @@ Value: CodeableConcept from AnatomicalLocationVS 0..1 Laterality 0..1 AnatomicalDirection - Element: Laterality Concept: MTH#C0925205 "Anatomical laterality" Description: "Anatomical location or specimen further detailing the side(s) of interest." @@ -74,7 +73,6 @@ Value: string // or id or code or CodeableConcept? 0..1 CodeSystem 0..1 EffectiveTimePeriod 0..1 Issuer - Element: Issuer Concept: TBD diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index 6cc756ed..0f5966bc 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.entity Description: "The namespace containing definitions for basic classes in CIMI." -Uses: shr.core, cimi.element, cimi.statement, cimi.datatypes +Uses: shr.core, cimi.element, cimi.statement Abstract Element: EntityOrRole Based on: InformationEntry diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 21e63fe8..238d149e 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.statement Description: "The namespace containing cimi-derived classes representing complete clinical statements." -Uses: shr.core, cimi.element, cimi.entity, cimi.encounter, cimi.datatypes +Uses: shr.core, cimi.element, cimi.entity, cimi.encounter CodeSystem: LNC = http://loinc.org CodeSystem: SCT = http://snomed.info/sct diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index 3ae03f8c..a5f194fd 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -2,7 +2,7 @@ Grammar: Map 5.1 Namespace: cimi.statement Target: FHIR_STU_3 -ClinicalStatement maps to DomainResource: +InformationEntry maps to DomainResource: Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: // TODO: observationresults is only for labs diff --git a/spec/shr_base.txt b/spec/shr_base.txt index e606e788..26489764 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.base Description: "Contains the SHR Entry definition -- the metadata added to any independent item in the SHR." -Uses: shr.core, cimi.element, cimi.entity, cimi.statement, cimi.datatypes +Uses: shr.core, cimi.element, cimi.entity, cimi.statement CodeSystem: MTH = http://ncimeta.nci.nih.gov @@ -75,7 +75,7 @@ Description: "Metadata attributes that apply to any item represented in the stan Element: DerivedFrom Concept: TBD Description: "Indicates the source of information in the case the Entry has been created by logical extension or modification of one or more source entries." - Value: ref(ClinicalStatement) + Value: ref(InformationEntry) Element: RecordedBy Description: "The person who entered the order on behalf of another individual for example in the case of a verbal or a telephone order." diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 06439a28..f2062822 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.core Description: "The SHR Core domain contains definitions for a variety of general-purpose elements that are used widely in SHR. These include definitions for coding, expressions of time, quantities, addresses, names, and more." -Uses: cimi.element, cimi.statement, cimi.datatypes +Uses: cimi.element, cimi.statement Path: FHIR = http://hl7.org/fhir/ValueSet // CodeSystem: CC = http://www.nationsonline.org/oneworld/country_code_list @@ -624,11 +624,76 @@ Concept: MTH#C0333052 Description: "A number or code associated with the product that identifies a particular release iteration." Value: string or id - Element: Title Concept: TBD Description: "A distinguishing word or group of words naming an item." Value: string +Element: EmbeddedContent +Concept: TBD +Description: "Abstract class defining the common metadata of all types of encapsulated data, such as images." + +Element: ParsableContent +Based on: EmbeddedContent +Concept: TBD +Description: "A string that follows a formal syntax and can be analyzed and broken into meaningful parts." +Value: string +1..1 Formalism + Element: Formalism + Concept: TBD + Description: "The system of formal syntax or interpretation associated with parsable content." + Value: CodeableConcept + +Element: Media +Based on: EmbeddedContent +Concept: TBD +Description: "A file that contains audio, video, image, or similar content." +0..1 BinaryData +0..1 ContentType +0..1 Language +0..1 ResourceLocation +0..1 ResourceSize +0..1 Hash +0..1 Title +0..1 CreationTime + + Element: BinaryData + Concept: TBD + Description: "The data itself." + Value: base64Binary + Element: ContentType + Concept: TBD + Description: "Mime type of the content, with charset etc." + Value: code + + Element: Language + Concept: MTH#C0023008 + Description: "A human language, spoken or written." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/languages if covered + + Element: ResourceLocation + Concept: TBD + Description: "URI where data can be found." + Value: uri + + Element: ResourceSize + Concept: TBD + Description: "Number of bytes of content in the resource (if url provided)" + Value: unsignedInt + + Element: Hash + Concept: TBD + Description: "A hash code of the data (sha-1, base64ed)" + Value: base64Binary + + Element: CreationTime + Concept: MTH#C3669169 + Description: "The point in time when the information was recorded in the system of record." + Value: dateTime // we can map to instant from dateTime + +Element: PhotographicImage +Based on: Media +Concept: LNC#72170-4 + // ContentType from ImageMimeTypeVS if covered diff --git a/spec/shr_core_map.txt b/spec/shr_core_map.txt index b6af2904..f32b3dd4 100644 --- a/spec/shr_core_map.txt +++ b/spec/shr_core_map.txt @@ -51,7 +51,6 @@ HumanName maps to HumanName: Purpose maps to use EffectiveTimePeriod maps to period - TimePeriod maps to Period: TimePeriodStart maps to start TimePeriodEnd maps to end @@ -96,7 +95,6 @@ Timing maps to Timing: RecurrencePattern.LifeEventOffset maps to repeat.offset RecurrencePattern.CountPerInterval.MinCount maps to repeat.frequency RecurrencePattern.CountPerInterval.MaxCount maps to repeat.frequencyMax - SampledData maps to SampledData: Value maps to data @@ -106,3 +104,13 @@ SampledData maps to SampledData: LowerLimit maps to lowerLimit UpperLimit maps to upperLimit Dimensions maps to dimensions + +Media maps to Attachment: + BinaryData maps to data + ContentType maps to contentType + Language maps to language + ResourceLocation maps to url + ResourceSize maps to size + Hash maps to hash + Title maps to title + CreationTime maps to creation \ No newline at end of file diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 0745e1e3..344f06da 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: odh Description: "Patient’s or family member's work information." -Uses: shr.core, shr.base, cimi.statement, cimi.composition, cimi.entity, cimi.element, cimi.encounter, cimi.datatypes +Uses: shr.core, shr.base, cimi.statement, cimi.composition, cimi.entity, cimi.element, cimi.encounter CodeSystem: LNC = http://loinc.org CodeSystem: UCUM = http://unitsofmeasure.org @@ -16,7 +16,7 @@ Description: "A composition represents a document such as a patient record, a kn Element: SocialHistorySection Based on: Section Description: "Represents a section containing entries in a social history composition." - ClinicalStatement is type SocialHistoryObservation + InformationEntry is type SocialHistoryObservation EntryElement: OccupationalDataForHealth Concept: LNC#74166-0 @@ -28,7 +28,7 @@ Element: OccupationalDataSection Concept: TBD Based on: SocialHistorySection Description: "Single section in the current OccupationalDataSummary, containing the person's history of employment and occupation, past and present." - ClinicalStatement + InformationEntry includes 0..* PersonEmploymentStatus includes 0..* RetirementDate includes 0..* CombatZonePeriod diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 4424b638..c260ebcf 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: sw Description: "SHR implementation of the HL7 Pressure Ulcer Prevention Domain Analysis Model (May, 2011)." -Uses: shr.core, shr.base, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition, cimi.datatypes +Uses: shr.core, shr.base, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition CodeSystem: UCUM = http://unitsofmeasure.org CodeSystem: LNC = http://loinc.org From d7c8fcae5331bdd4aff0d850f428376666b21c22 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 16 Oct 2018 08:15:28 -0400 Subject: [PATCH 058/289] Fixing up Assertion hierarchy --- spec/LandingPageBreastCancer.html | 2 +- spec/cimi_composition.txt | 4 +- spec/cimi_composition_map.txt | 4 +- spec/cimi_element.txt | 4 - spec/cimi_encounter.txt | 2 +- spec/cimi_encounter_map.txt | 2 +- spec/cimi_entity.txt | 2 +- spec/cimi_procedure.txt | 4 +- spec/cimi_statement.txt | 624 +++++++++++++++--------------- spec/cimi_statement_map.txt | 63 ++- spec/cimi_statement_vs.txt | 9 +- spec/shr_base.txt | 2 +- spec/shr_core.txt | 6 +- spec/shr_financial.txt | 2 +- spec/shr_occupation.txt | 97 +++-- spec/shr_occupation_map.txt | 16 +- spec/shr_oncology.txt | 159 ++++---- spec/shr_wound.txt | 113 +++--- 18 files changed, 559 insertions(+), 556 deletions(-) diff --git a/spec/LandingPageBreastCancer.html b/spec/LandingPageBreastCancer.html index 90774391..a686294b 100644 --- a/spec/LandingPageBreastCancer.html +++ b/spec/LandingPageBreastCancer.html @@ -84,7 +84,7 @@

Class Hierarchy

  • -
    Locatable* > Independent > Content > InformationEntry > ClinicalStatement > FindingStatement > Observation > LaboratoryObservation > CodedLaboratoryObservation > BreastCancerHistologicGrade
    +
    Locatable* > Independent > Content > InformationItem > ClinicalStatement > FindingStatement > Observation > LaboratoryObservation > CodedLaboratoryObservation > BreastCancerHistologicGrade
diff --git a/spec/cimi_composition.txt b/spec/cimi_composition.txt index ef3d8037..71e19afc 100644 --- a/spec/cimi_composition.txt +++ b/spec/cimi_composition.txt @@ -4,7 +4,7 @@ Description: "Documents, compositions, reports, and other structures involving m Uses: cimi.statement EntryElement: Composition -Based on: InformationEntry +Based on: InformationItem Description: "A composition represents a document such as an extract from a patient record, a knowledge artifact, or a catalog definition." //1..1 Status from http://hl7.org/fhir/ValueSet/composition-status //1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes @@ -14,7 +14,7 @@ Description: "A composition represents a document such as an extract from a pati Element: Section Description: "Represents a section containing entries in a composition." //0..1 Title - 0..* InformationEntry + 0..* InformationItem diff --git a/spec/cimi_composition_map.txt b/spec/cimi_composition_map.txt index 5bb69a08..666b2f0f 100644 --- a/spec/cimi_composition_map.txt +++ b/spec/cimi_composition_map.txt @@ -2,11 +2,11 @@ Grammar: Map 5.1 Namespace: cimi.composition Target: FHIR_STU_3 -//InformationEntry maps to Resource: +//InformationItem maps to Resource: Composition maps to Composition: Section maps to section - Section.InformationEntry maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) + Section.InformationItem maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) // (slice on = coding.code; slice strategy = includes) \ No newline at end of file diff --git a/spec/cimi_element.txt b/spec/cimi_element.txt index 8e7ed7fe..537d162a 100644 --- a/spec/cimi_element.txt +++ b/spec/cimi_element.txt @@ -78,10 +78,6 @@ Value: string // or id or code or CodeableConcept? Concept: TBD Description: "An organization who issues a qualification, identifier, or license." Value: ref(Organization) - -Element: PartOf -Description: "The larger entity that this is a portion of. For example, an organization might be part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." -Value: ref(InformationEntry) Element: Status diff --git a/spec/cimi_encounter.txt b/spec/cimi_encounter.txt index 6059ab26..5e65674a 100644 --- a/spec/cimi_encounter.txt +++ b/spec/cimi_encounter.txt @@ -5,7 +5,7 @@ Uses: shr.core, shr.base, cimi.element, cimi.statement, cimi.entity Element: Encounter -Based on: InformationEntry +Based on: InformationItem Concept: TBD Description: "A description of an interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient." 0..1 Patient diff --git a/spec/cimi_encounter_map.txt b/spec/cimi_encounter_map.txt index 5976bcef..47f87fe7 100644 --- a/spec/cimi_encounter_map.txt +++ b/spec/cimi_encounter_map.txt @@ -27,7 +27,7 @@ EncounterRequested maps to ReferralRequest: Patient maps to subject ReferralDate maps to authoredOn //ReferralSourceType - EncounterTopic.TopicCode maps to type + EncounterTopic.??? maps to type //TreatmentCooperation //PaymentSource EncounterStatus maps to status diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index 0f5966bc..d5d69bdd 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -4,7 +4,7 @@ Description: "The namespace containing definitions for basic classes in CIMI." Uses: shr.core, cimi.element, cimi.statement Abstract Element: EntityOrRole -Based on: InformationEntry +Based on: InformationItem Description: "CIMI parent class for both Entity and Role." //Identifier diff --git a/spec/cimi_procedure.txt b/spec/cimi_procedure.txt index f8524c32..9d18336c 100644 --- a/spec/cimi_procedure.txt +++ b/spec/cimi_procedure.txt @@ -24,7 +24,7 @@ Description: "Description of a healthcare procedure. This can be a physical inte Element: InputFinding Description: "Patient findings expected for the performance of the specified procedure. For instance, an x-ray of a fracture prior to a surgical procedure for a bone fracture." - Value: ref(FindingStatement) + Value: ref(Observation) Element: Indication Description: "Conditions or situations where the procedure is recommended. In the Performed context, the actual indication should be reported." @@ -150,7 +150,7 @@ Description: "A procedure that has been performed." Element: OutputFinding Description: "Patient findings documented during the performance of the procedure." - Value: ref(FindingStatement) + Value: ref(Finding) EntryElement: ProcedureNotPerformedStatement diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index 238d149e..c4aa40b9 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -10,218 +10,120 @@ CodeSystem: NCI = https://evs.nci.nih.gov/ftp1/CDISC/SDTM/ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category -Element: InformationEntry +Element: InformationItem Concept: MTH#C1705654 Description: "Parent class for any entry in clinical or administrative health-related system, including information about organizations, providers, patients, services, payments, decision support artifacts, etc." - -Element: ClinicalStatement -Based on: InformationEntry -Concept: TBD -Description: "A clinical statement is something an agent (human or machine) says and/or records, e.g., an observation, opinion, directive, record of action, or administrative entry." +Element: Finding +Based on: InformationItem +Description: "A determination, opinion, result, or measurement." 0..1 Patient -0..* SubjectOfInformation -0..1 Encounter // clinical statements are often associated with specific encounters -//0..1 SourceOfInformation -//0..* Annotation -0..1 AdditionalText - - Element: SubjectOfInformation - Description: "The specific thing whose property is being observed. This is only required if the thing observed is different than the person of record. For example, the subject of observatoin could be a specific condition if the property is progression, or a specific instance of a wound if the property is wound length." - Value: ref(InformationEntry) - - Element: SourceOfInformation - Concept: MTH#C0449416 - Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." - Value: ref(EntityOrRole) //string or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) - 0..1 RelationshipToPersonOfRecord - - Element: RelationshipToPersonOfRecord - Concept: MTH#C0015608 - Description: "The relationship to the person of record." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered - - Element: AdditionalText - Concept: MTH#C0947611 - Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." - Value: string // change to language-text - - -//---------- Actions -------------- - -Abstract Element: ActionStatement -Based on: ClinicalStatement -Description: "Abstract class representing any type of action." -1..1 Patient // constrain from 0..1 to 1..1 -1..1 ActionTopic // introduce topics at this point -0..* Reason - - Element: Reason - Concept: MTH#C0566251 - Description: "The justification for an action or non-action, conclusion, opinion, etc." - Value: string or CodeableConcept or ref(ClinicalStatement) - -Abstract Element: ActionPerformedStatement -Based on: ActionStatement -Description: "Abstract class representing performance of any type of action." -1..1 OccurrenceTimeOrPeriod // when the action took place -0..* Participant -1..1 Status should be from http://hl7.org/fhir/ValueSet/event-status -0..1 Method -0..* RelatedRequest -//0..1 EnactsPlan -//0..1 FulfillsOrder -0..1 ref(Facility) -0..1 Outcome // e.g., AdverseEvent +0..1 Encounter // findings are often associated with specific encounters +0..1 FindingMethod +//1..1 FindingStatus - Element: Participant - Concept: MTH#C1550369 - Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." - Value: ref(EntityOrRole) - 0..1 ParticipationType // role - 0..1 ParticipationPeriod - 0..1 OnBehalfOf - - Element: ParticipationType - Concept: MTH#C1553854 - Description: "The role played by the participant engaged in the action, for example, as the attending physician, surgical assistant, etc." - Value: CodeableConcept from FHIR/v3-ParticipationType - - Element: ParticipationPeriod - Concept: TBD - Description: "The point in time or span of time the participant is involved." - Value: TimePeriod - - Element: Method - Concept: TBD - Description: "The technique used to carry out an action, for example, the specific imaging technical or assessment vehicle." - Value: CodeableConcept // TODO: limit to a procedure code - - Element: RelatedRequest - Concept: TBD - Description: "The proposal, order, or plan that is partly or wholly fulfilled by the performance of this act." - Value: ref(ActionRequestedStatement) - - /* - Element: EnactsPlan + Element: FindingMethod Concept: TBD - Description: "The plan that is partly or wholly enacted by the performance of this act." - Value: ref(ActionRequestedStatement) + Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." + Value: CodeableConcept should be from FindingMethodVS - Element: FulfillsOrder - Concept: TBD - Description: "The order that is partly or wholly enacted by the performance of this act." - Value: ref() - */ - Element: Outcome + Element: FindingStatus Concept: TBD - Description: "The result of performing an action or behavior, for example, an adverse reaction or new finding." - Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/procedure-outcome - 0..* ref(ClinicalStatement) + Description: "Indicates whether the finding is preliminary, amended, final, etc." + Value: code from http://hl7.org/fhir/ValueSet/observation-status +//------------- Data Item (aka data element) ------------ -Abstract Element: ActionRequestedStatement -Based on: ActionStatement -Description: "Abstract class representing a request for any type of action." -1..1 Status should be from http://hl7.org/fhir/ValueSet/request-status -1..1 RequestIntent -0..1 ExpectedPerformanceTime -0..1 ExpectedPerformerType -0..1 ExpectedPerformer -0..1 ExpectedMethod -0..1 PriorityRank should be from http://hl7.org/fhir/ValueSet/request-priority -0..1 PerformerInstructions -0..1 PatientInstructions -0..1 CommunicationMethod +Abstract Element: DataItem +Based on: Finding +Description: "A non-separable question-answer pair (data element) consisting of an observable property (represented by a code), value (or exception value), reference range, and interpretation. An observation component represents question-answer pair, and lack sufficient context for full interpretation, e.g., a reference to a patient, problem, or body structure. They do not stand alone, but can be included in observations." +Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) +// exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 +1..1 ObservableCode // redundant with Concept +0..1 ExceptionValue from http://hl7.org/fhir/ValueSet/data-absent-reason if covered +0..* ReferenceRange +// 0..1 Interpretation - Element: RequestIntent - Concept: TBD - Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." - Value: code from http://hl7.org/fhir/ValueSet/request-intent - - Element: ExpectedPerformanceTime - Concept: TBD - Description: "When an action should be done. If the action is a series or recurs (e.g. daily blood sugar testing in the morning) then a Timing can be used to describe the periodicity." - Value: dateTime or date or TimePeriod or Timing + Element: ObservableCode + Description: "A code describing the aspect or property of the subject being observed or measured. The ObservableCode is the 'question code' that pairs to the 'answer' contained in the Value." + Value: CodeableConcept - Element: ExpectedPerformerType + Element: ExceptionValue Concept: TBD - Description: "What type of party should carry out the testing." - Value: CodeableConcept // what ValueSet?? + Description: "Reason that a value associated with a test or other finding is missing." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/data-absent-reason if covered - Element: ExpectedPerformer - Concept: TBD - Description: "Who should carry out the tests. For example, the patient or caregiver." - Value: ref(Entity) or ref(Organization) + Element: ReferenceRange + Concept: MTH#C0883335 + Description: "The usual or acceptable range for a test result." + Value: Range // TODO: align this with FHIR + 0..1 Type from http://hl7.org/fhir/ValueSet/referencerange-meaning if covered + 0..1 ApplicableSubpopulation + 0..1 ApplicableAgeRange - Element: ExpectedMethod - Concept: TBD - Description: "The method that should be used to carry out the action." - Value: ref(Method) - - Element: PerformerInstructions - Concept: TBD - Description: "Information for the performer of the test, if needed." - Value: string - - Element: PatientInstructions - Concept: TBD - Description: "Information for the patient, such as, where to get the test, how to prepare for the test, etc." - Value: string + Element: ApplicableSubpopulation + Concept: MTH#C0039309 "Target Population" + Description: "Codes to indicate the target population this reference range applies to. For example, a reference range may be based on the normal population or a particular sex or race." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/referencerange-appliesto if covered - Element: CommunicationMethod - Concept: TBD - Description: "This is the method the provider used to communicate. Examples include: Written, Telephoned, Verbal, Electronically Entered, Policy, Service Correction, Duplicate, etc. 'Code indicating the origin of the prescription.' - NCPDP Telecommunication (Field 419-DJ, Data Dictionary 201104). Possible values include: Written; Telephone; Electronic; Facsimile; Pharmacy; Not Known." - Value: CodeableConcept - - -Abstract Element: ActionNotPerformedStatement -Based on: ActionStatement -Description: "Abstract class representing non-performance of any type of action." -0..1 RelatedRequest -1..1 NonOccurrenceTimeOrPeriod - -Abstract Element: ActionRequestedAgainstStatement -Based on: ActionStatement -Description: "Abstract class representing a request to not perform any type of action." - -Abstract Element: ActionTopic -Description: "Compositional and reusable grouping of attributes that make up the clinical focus of an action statement, independent whether the action is potential or actual, past or future." -0..1 Category -1..1 TopicCode + Element: ApplicableAgeRange + Concept: TBD + Description: "The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so." // FHIR: how exactly does one indicate a neonatal or prenatal age? + Value: Range - Element: TopicCode - Concept: TBD - Description: "The concept representing the finding or action that is the topic of the statement. - - For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." + Element: CodedDataItem + Based on: DataItem + Description: "An data item whose value is a code (concept)." Value: CodeableConcept + 0..0 ReferenceRange //-------------Findings------------ -Abstract Element: FindingStatement -Based on: ClinicalStatement -Description: "A clinical statement representing a finding." -0..1 Focus -0..1 Interpretation -//1..1 FindingStatus -0..1 RelevantTime // CIMI's ClinicallyRelevantTime isn't a good name when it comes to employment and other life history events -0..1 FindingMethod -0..* Media - +EntryElement: Observation // TODO: be consistent, or stop using the word "Statement" in class names +Based on: DataItem +Concept: TBD +Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. +Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The Focus can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." +0..* Focus +0..1 RelevantTime +//0..0 Observer +0..1 DeltaFlag +1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered +0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? +0..1 AdditionalText +0..1 Interpretation +0..1 Device +0..1 Specimen +0..* Precondition +0..* Media +0..* DataItem +0..1 PanelMembers + Element: Focus - Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. For example, the finding could deal with a condition, a behavior, a wound, or tumor." - Value: string or CodeableConcept or Identifier or ref(EntityOrRole) or ref(ClinicalStatement) + Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. The Focus is only required if the thing observed is different than the person of record (patient). For example, the subject of observation could be a specific condition if the property is progression, or a specific instance of a wound if the property is wound length." + Value: string or CodeableConcept or Identifier or ref(InformationItem) + 0..1 RelationshipToPersonOfRecord + + Element: Observer + Concept: MTH#C0449416 + Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." + Value: ref(InformationItem) //string or ref(Practitioner) or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) + 0..1 RelationshipToPersonOfRecord + + Element: RelationshipToPersonOfRecord + Concept: MTH#C0015608 + Description: "The relationship to the person of record." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered + + Element: AdditionalText + Concept: MTH#C0947611 + Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." + Value: string // change to language-text Element: Interpretation Concept: MTH#C0420833 Description: "A clinical interpretation of a finding (applies to both assertions and observation)." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/observation-interpretation if covered - - Element: FindingStatus - Concept: TBD - Description: "Indicates whether the finding is preliminary, amended, final, etc." - Value: code from http://hl7.org/fhir/ValueSet/observation-status Element: RelevantTime Concept: TBD @@ -229,49 +131,6 @@ Description: "A clinical statement representing a finding." The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." Value: dateTime or TimePeriod - Element: FindingMethod - Concept: TBD - Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." - Value: CodeableConcept should be from FindingMethodVS - -EntryElement: Observation // TODO: be consistent, or stop using the word "Statement" in class names -Based on: FindingStatement -Concept: TBD -Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. -Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The subject of a finding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -1..1 Patient -1..1 TopicCode -//0..0 SourceOfInformation value is type AnyPersonOrOrganization // mapped to performer (who made the observation) -0..1 ResultValue -0..1 ExceptionValue from http://hl7.org/fhir/ValueSet/data-absent-reason if covered -0..1 DeltaFlag -//0..1 Issued -//0..* Observer -1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered -0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? -0..1 Device -0..1 Specimen -0..* Precondition -0..* ReferenceRange // applies to a quantitative measurement only -0..* EvaluationComponent -0..1 PanelMembers -0..1 FindingMethod -0..* Media - - Element: EvaluationComponent - Description: "A simplified, non-separable evaluation consisting of a finding code (represented by the Concept), value (or exception value), reference range, and interpretation. The subject of the evaluation component is the same as in the parent evaluation." - Value: (Quantity or CodeableConcept or string or Range or Ratio or Media or time or dateTime or TimePeriod or IntegerQuantity) - 0..1 TopicCode - 0..1 ExceptionValue from http://hl7.org/fhir/ValueSet/data-absent-reason if covered - 0..1 Interpretation - 0..* ReferenceRange - - Element: CodedEvaluationComponent - Based on: EvaluationComponent - Description: "An evaluation component whose value is a code (concept)." - Value: CodeableConcept - 0..0 ReferenceRange - Element: PanelMembers Concept: TBD Description: "PanelMembers represent the elements of a group of a related but independent evaluations. @@ -282,35 +141,7 @@ Observation has a value representing the result (answer), or an ExceptionValue i Concept: TBD Description: "A description of the conditions or context of an observation, for example, under sedation, fasting or post-exercise. Body position and body site are also qualifiers, but handled separately. A qualifier cannot modify the measurement type; for example, a fasting blood sugar is still a blood sugar. " Value: CodeableConcept or ref(Observation) - - Element: ReferenceRange - Concept: MTH#C0883335 - Description: "The usual or acceptable range for a test result." - Value: Range // TODO: align this with FHIR - 0..1 Type from http://hl7.org/fhir/ValueSet/referencerange-meaning if covered - 0..1 ApplicableSubpopulation - 0..1 ApplicableAgeRange - - Element: ApplicableSubpopulation - Concept: MTH#C0039309 "Target Population" - Description: "Codes to indicate the target population this reference range applies to. For example, a reference range may be based on the normal population or a particular sex or race." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/referencerange-appliesto if covered - - Element: ApplicableAgeRange - Concept: TBD - Description: "The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so." // FHIR: how exactly does one indicate a neonatal or prenatal age? - Value: Range - - Element: ResultValue - Concept: TBD - Description: "The finding itself, such as the blood pressure value recorded." - Value: (Quantity or CodeableConcept or string or boolean or Range or Ratio or time or dateTime or TimePeriod) - - Element: ExceptionValue - Concept: TBD - Description: "Reason that a value associated with a test or other finding is missing." - Value: CodeableConcept - + Element: DeltaFlag Concept: MTH#C1705241 Description: "Indicator of significant change (delta) from the last or previous measurement." @@ -320,10 +151,6 @@ Observation has a value representing the result (answer), or an ExceptionValue i // Description: "The date and time this observation was made available to providers, typically after the results have been reviewed and verified." // Value: instant - Element: Observer - Description: "The person or organization who observed or informed the reporter about the characteristic, potentially the clinician, the patient, or a related person." - Value: ref(Practitioner) or ref(Organization) or ref(Patient) or ref(RelatedPerson) - // Non-Laboratory Results @@ -335,37 +162,37 @@ Description: "An observation not based on a specimen." EntryElement: SimpleNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation having no components or panel members" -0..0 EvaluationComponent +0..0 DataItem 0..0 PanelMembers EntryElement: CodedNonLaboratoryObservation Based on: NonLaboratoryObservation Concept: TBD Description: "The result of evaluations (measurements, tests, or questions) whose answer is expressed as a code." - ResultValue value is type CodeableConcept +Value: CodeableConcept 0..0 ReferenceRange EntryElement: SimpleCodedNonLaboratoryObservation Based on: CodedNonLaboratoryObservation Description: "An observation whose result is a code, and also having no components or panel members" -0..0 EvaluationComponent +0..0 DataItem 0..0 PanelMembers EntryElement: ComponentOnlyNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation with components, but without a result value or panel members." -0..0 ResultValue +0..0 Value 0..0 ExceptionValue 0..0 PanelMembers 0..0 ReferenceRange -EntryElement: PanelOnlyNonLaboratoryObservation -Based on: NonLaboratoryObservation +EntryElement: Panel +Based on: Observation Description: "An observation with panel members, but without a result value or components." -0..0 ResultValue +0..0 Value 0..0 ExceptionValue 0..0 ReferenceRange -0..0 EvaluationComponent +0..0 DataItem 1..1 PanelMembers // Laboratory Measurements and Results @@ -373,8 +200,9 @@ Description: "An observation with panel members, but without a result value or c EntryElement: LaboratoryObservation Based on: Observation Description: "A coded finding based on a specimen collected from a patient." +1..1 Patient 1..1 Specimen -0..0 AnatomicalLocation // AnatomicalLocation is Specimen.CollectionSite +0..0 AnatomicalLocation // AnatomicalLocation is determined indirectly from Specimen.CollectionSite Category is OBSCAT#laboratory 0..* DiagnosticService @@ -386,42 +214,70 @@ Description: "A coded finding based on a specimen collected from a patient." EntryElement: CodedLaboratoryObservation Based on: LaboratoryObservation Description: "A coded finding from a laboratory test." - ResultValue value is type CodeableConcept +Value: CodeableConcept 0..0 ReferenceRange EntryElement: SimpleLaboratoryObservation Based on: LaboratoryObservation Description: "A coded finding from a laboratory test without further panel members or components." -0..0 EvaluationComponent +0..0 DataItem 0..0 PanelMembers EntryElement: SimpleCodedLaboratoryObservation Based on: CodedLaboratoryObservation Description: "A coded finding from a laboratory test without further panel members or components." -0..0 EvaluationComponent +0..0 DataItem 0..0 PanelMembers //---------- Assertions ------------- -Abstract Element: AssertionStatement -Based on: FindingStatement -Description: "A clinical statement that asserts presence or absence." -1..1 Patient +Abstract Element: ExistenceAssertion +Based on: Finding +Description: "An assertion that an event has or has not taken place, or a relationship, situation, condition, or other phenomenon is present or absent." +0..* PartOf +1..1 PresentOrAbsent +1..1 ObjectTypeCode +1..1 VerificationStatus +0..1 ObjectIdentifier +0..1 Certainty + + Element: PartOf + Description: "The larger entity that the asserted item is a portion of. For example, a wound tunnel might be part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." + Value: ref(InformationItem) -Abstract Element: AssertionPresenceStatement // AssertPresence -Based on: AssertionStatement + Element: BelongsTo + Description: "The person, place, event, condition, other statement that this object belongs to, if other than the patient. For example, a wound tunnel belongs to a wound." + Value: ref(InformationItem) + + Element: PresentOrAbsent + Description: "Whether the object is present or absent, exists or does not exist." + Value: CodeableConcept from PresentAbsentVS + + Element: ObjectTypeCode + Description: "A code representing the type of event, condition, or phenomenon that is being asserted to exist or not exist, for example, the SNOMED-CT code for pneumonia." + Value: CodeableConcept + + Element: VerificationStatus + Concept: TBD + Description: "Whether an assessment has been confirmed by testing or observation." + Value: CodeableConcept + + Element: ObjectIdentifier + Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." + Value: string + + Element: Certainty + Concept: TBD + Description: "The degree of confidence in a conclusion or assertion." + Value: CodeableConcept + +Abstract Element: PresenceAssertion // AssertPresence +Based on: ExistenceAssertion Description: "Statement that a finding is present." -// PresenceContextVS -1..1 VerificationStatus + PresentOrAbsent is SCT#52101004 "Present (qualifier value)" 0..1 Onset 0..1 Abatement -0..1 Certainty - - Element: VerificationStatus - Concept: TBD - Description: "Whether an assessment has been confirmed by testing or observation. - CIMI Alignment: This attribute has been defined to align with FHIR. In AllergyIntolerance, the type is code." - Value: CodeableConcept +0..1 Certainty from PresenceCertaintyVS Element: Onset Concept: LNC#85585-8 @@ -432,29 +288,21 @@ Description: "Statement that a finding is present." Concept: LNC#88878-4 Description: "The end, remission or resolution." Value: dateTime or Age or boolean or TimePeriod or Range or string - - Element: Certainty - Concept: TBD - Description: "The degree of confidence in a conclusion or assertion." - Value: CodeableConcept - - -Abstract Element: AssertionAbsenceStatement // AssertAbsence -Based on: AssertionStatement -Description: "Statement that a finding is absent." -// AbsenceContextVS +Abstract Element: AbsenceAssertion +Based on: ExistenceAssertion +Description: "Statement that an entity, person, role, condition, or phenomenon is absent." +0..1 Certainty from AbsenceCertaintyVS EntryElement: ConditionPresenceStatement -Based on: AssertionPresenceStatement +Based on: PresenceAssertion Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." //0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson -1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered +1..1 ObjectTypeCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation 0..* ConditionCause -0..1 ConditionIdentifier 1..1 ClinicalStatus 0..1 WhenClinicallyRecognized 0..1 PresentOnAdmission @@ -464,14 +312,9 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Element: ConditionCause Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" - Value: CodeableConcept or ref(Entity) or ref(ClinicalStatement) + Value: CodeableConcept or ref(Entity) or ref(Finding) // probably other attributes needed, such as likelihood or type of cause - Element: ConditionIdentifier - Concept: TBD - Description: "A human-readable identifier for the condition at the finding site, for example, a wound number or tumor identifier." - Value: string - Element: ClinicalStatus Concept: TBD Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." @@ -521,30 +364,169 @@ Description: "A condition that is or may be present in a subject. 'Condition' is EntryElement: ConditionAbsenceStatement -Based on: AssertionAbsenceStatement +Based on: AbsenceAssertion Concept: MTH#C0277541 "no disease present" Description: "A finding that a condition is or was not present in the subject at a certain time or time period, not necessarily the time the information is gathered." -1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered + ObjectTypeCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation EntryElement: ClinicalNote -Based on: FindingStatement +Based on: Finding Concept: MTH#C0747978 "Progress Note" Description: "An entry concerning a patient where the result is a narrative text." 1..1 Patient 1..1 AdditionalText // make required + +//---------- Actions -------------- + +Abstract Element: ActionStatement +Based on: InformationItem +Description: "Abstract class representing any type of action." +1..1 Patient // constrain from 0..1 to 1..1 +0..1 Encounter // actions often take place during an encounter +1..1 ActionTopic // introduce topics at this point +0..* Reason + + Element: Reason + Concept: MTH#C0566251 + Description: "The justification for an action or non-action, conclusion, opinion, etc." + Value: string or CodeableConcept or ref(Finding) + +Abstract Element: ActionPerformedStatement +Based on: ActionStatement +Description: "Abstract class representing performance of any type of action." +1..1 OccurrenceTimeOrPeriod // when the action took place +0..* Participant +1..1 Status should be from http://hl7.org/fhir/ValueSet/event-status +0..1 Method +0..* RelatedRequest +//0..1 EnactsPlan +//0..1 FulfillsOrder +0..1 ref(Facility) +0..1 Outcome // e.g., AdverseEvent + + Element: Participant + Concept: MTH#C1550369 + Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." + Value: ref(EntityOrRole) + 0..1 ParticipationType // role + 0..1 ParticipationPeriod + 0..1 OnBehalfOf + + Element: ParticipationType + Concept: MTH#C1553854 + Description: "The role played by the participant engaged in the action, for example, as the attending physician, surgical assistant, etc." + Value: CodeableConcept from FHIR/v3-ParticipationType + + Element: ParticipationPeriod + Concept: TBD + Description: "The point in time or span of time the participant is involved." + Value: TimePeriod + Element: Method + Concept: TBD + Description: "The technique used to carry out an action, for example, the specific imaging technical or assessment vehicle." + Value: CodeableConcept // TODO: limit to a procedure code + + Element: RelatedRequest + Concept: TBD + Description: "The proposal, order, or plan that is partly or wholly fulfilled by the performance of this act." + Value: ref(ActionRequestedStatement) + + /* + Element: EnactsPlan + Concept: TBD + Description: "The plan that is partly or wholly enacted by the performance of this act." + Value: ref(ActionRequestedStatement) -EntryElement: FindingSiteConditionPresenceStatement -Based on: ConditionPresenceStatement -Concept: MTH#C1268086 -Description: "Presence of a distinct anatomical or pathological morphological feature or organizational pattern, acquired or innate. Examples include tissue types, tumors, and wounds. Body structures are continuants that allow observations of the same body structure to be related to be tracked over time." -1..* AnatomicalLocation + Element: FulfillsOrder + Concept: TBD + Description: "The order that is partly or wholly enacted by the performance of this act." + Value: ref() + */ + Element: Outcome + Concept: TBD + Description: "The result of performing an action or behavior, for example, an adverse reaction or new finding." + Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/procedure-outcome + 0..* ref(Finding) + + +Abstract Element: ActionRequestedStatement +Based on: ActionStatement +Description: "Abstract class representing a request for any type of action." +1..1 Status should be from http://hl7.org/fhir/ValueSet/request-status +1..1 RequestIntent +0..1 ExpectedPerformanceTime +0..1 ExpectedPerformerType +0..1 ExpectedPerformer +0..1 ExpectedMethod +0..1 PriorityRank should be from http://hl7.org/fhir/ValueSet/request-priority +0..1 PerformerInstructions +0..1 PatientInstructions +0..1 CommunicationMethod + + Element: RequestIntent + Concept: TBD + Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." + Value: code from http://hl7.org/fhir/ValueSet/request-intent + + Element: ExpectedPerformanceTime + Concept: TBD + Description: "When an action should be done. If the action is a series or recurs (e.g. daily blood sugar testing in the morning) then a Timing can be used to describe the periodicity." + Value: dateTime or date or TimePeriod or Timing + + Element: ExpectedPerformerType + Concept: TBD + Description: "What type of party should carry out the testing." + Value: CodeableConcept // what ValueSet?? + + Element: ExpectedPerformer + Concept: TBD + Description: "Who should carry out the tests. For example, the patient or caregiver." + Value: ref(Entity) or ref(Organization) + + Element: ExpectedMethod + Concept: TBD + Description: "The method that should be used to carry out the action." + Value: ref(Method) + + Element: PerformerInstructions + Concept: TBD + Description: "Information for the performer of the test, if needed." + Value: string + + Element: PatientInstructions + Concept: TBD + Description: "Information for the patient, such as, where to get the test, how to prepare for the test, etc." + Value: string + + Element: CommunicationMethod + Concept: TBD + Description: "This is the method the provider used to communicate. Examples include: Written, Telephoned, Verbal, Electronically Entered, Policy, Service Correction, Duplicate, etc. 'Code indicating the origin of the prescription.' - NCPDP Telecommunication (Field 419-DJ, Data Dictionary 201104). Possible values include: Written; Telephone; Electronic; Facsimile; Pharmacy; Not Known." + Value: CodeableConcept + + +Abstract Element: ActionNotPerformedStatement +Based on: ActionStatement +Description: "Abstract class representing non-performance of any type of action." +0..1 RelatedRequest +1..1 NonOccurrenceTimeOrPeriod + +Abstract Element: ActionRequestedAgainstStatement +Based on: ActionStatement +Description: "Abstract class representing a request to not perform any type of action." + +Abstract Element: ActionTopic +Description: "Compositional and reusable grouping of attributes that make up the clinical focus of an action statement, independent whether the action is potential or actual, past or future." +0..1 Category +1..1 TopicCode + + Element: TopicCode + Concept: TBD + Description: "The concept representing the finding or action that is the topic of the statement. + + For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." + Value: CodeableConcept -EntryElement: FindingSiteConditionAbsenceStatement // AssertionOfAbsenceStatement? -Based on: ConditionAbsenceStatement -Concept: TBD -Description: "Absence of a distinct anatomical or pathological morphological feature or organizational pattern, acquired or innate. Examples include tissue types, tumors, and wounds. Body structures are continuants that allow observations of the same body structure to be related to be tracked over time." -1..* AnatomicalLocation diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index a5f194fd..a68c9ede 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -2,17 +2,58 @@ Grammar: Map 5.1 Namespace: cimi.statement Target: FHIR_STU_3 -InformationEntry maps to DomainResource: +InformationItem maps to DomainResource: + +// do not map Observation to US Core Results -- Brett says that's only for labs +Observation maps to Observation: // TODO: observationresults is only for labs + Patient maps to subject +// SourceOfInformation.Value maps to performer // Why doesn't this work??? +// Annotation maps to extension +// RecordStatus maps to extension +// _Entry.CosignedBy maps to extension +// _Entry.VerifiedBy maps to extension + ObservableCode maps to code + FindingMethod maps to method + AdditionalText maps to comment +// Media maps to extension + Category maps to category + AnatomicalLocation maps to bodySite + Device maps to device + Specimen maps to specimen +// Precondition maps to extension + ReferenceRange maps to referenceRange + ReferenceRange.Range.LowerBound maps to referenceRange.low + ReferenceRange.Range.UpperBound maps to referenceRange.high + ReferenceRange.Type maps to referenceRange.type + ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo + ReferenceRange.ApplicableAgeRange maps to referenceRange.age + DataItem maps to component (slice on = coding.code; slice strategy = includes) + DataItem._Concept maps to component.code + DataItem.Value maps to component.value[x] + DataItem.ExceptionValue maps to component.dataAbsentReason + //DataItem.Interpretation maps to component.interpretation + DataItem.ReferenceRange maps to component.referenceRange + fix related.type to #has-member + PanelMembers maps to related + PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) + Value maps to value[x] + ExceptionValue maps to dataAbsentReason + Interpretation maps to interpretation +// Issued maps to issued +// FindingStatus maps to status + RelevantTime maps to effective[x] + Encounter maps to context + DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta -Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: // TODO: observationresults is only for labs +LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: // TODO: observationresults is only for labs Patient maps to subject // SourceOfInformation.Value maps to performer // Why doesn't this work??? // Annotation maps to extension // RecordStatus maps to extension // _Entry.CosignedBy maps to extension // _Entry.VerifiedBy maps to extension - TopicCode maps to code + ObservableCode maps to code FindingMethod maps to method AdditionalText maps to comment // Media maps to extension @@ -27,16 +68,16 @@ Observation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-obse ReferenceRange.Type maps to referenceRange.type ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age - EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) - EvaluationComponent._Concept maps to component.code - EvaluationComponent.Value maps to component.value[x] - EvaluationComponent.ExceptionValue maps to component.dataAbsentReason - EvaluationComponent.Interpretation maps to component.interpretation - EvaluationComponent.ReferenceRange maps to component.referenceRange + DataItem maps to component (slice on = coding.code; slice strategy = includes) + DataItem._Concept maps to component.code + DataItem.Value maps to component.value[x] + DataItem.ExceptionValue maps to component.dataAbsentReason + //DataItem.Interpretation maps to component.interpretation + DataItem.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) - ResultValue maps to value[x] + Value maps to value[x] ExceptionValue maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued @@ -50,7 +91,7 @@ ConditionPresenceStatement maps to http://hl7.org/fhir/us/core/StructureDefiniti // Patient maps to subject // SourceOfInformation.Value maps to asserter // why doesn't this work? Category maps to category - TopicCode maps to code + ObjectTypeCode maps to code constrain bodySite to 0..0 AnatomicalLocation maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Encounter maps to context diff --git a/spec/cimi_statement_vs.txt b/spec/cimi_statement_vs.txt index ae795ba3..0056c0c2 100644 --- a/spec/cimi_statement_vs.txt +++ b/spec/cimi_statement_vs.txt @@ -47,7 +47,12 @@ Description: "Reasons that a value associated with a test or other finding is #instrument-malfunction "Missing due to instrument malfunction." -ValueSet: PresenceContextVS +ValueSet: PresentAbsentVS +Description: "Indicator if the assertion is assertion of presence or absence" +SCT#52101004 "Present (qualifier value)" +SCT#2667000 "Absent (qualifier value)" + +ValueSet: PresenceCertaintyVS Description: "A code describing whether the finding in question is present, possible, suspected, etc." //SCT#36692007 "Known" //SCT#410605003 "Confirmed present" @@ -59,7 +64,7 @@ SCT#415684004 "Suspected" //SCT#410593006 "Probably not present" // should be reported as Absence //SCT#261665006 "Unknown" -ValueSet: AbsenceContextVS +ValueSet: AbsenceCertaintyVS Description: "A code describing whether the finding is question is absent, unknown, or not suspected." SCT#410516002 "Known absent" SCT#410594000 "Definitely not present" diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 26489764..49c97c89 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -75,7 +75,7 @@ Description: "Metadata attributes that apply to any item represented in the stan Element: DerivedFrom Concept: TBD Description: "Indicates the source of information in the case the Entry has been created by logical extension or modification of one or more source entries." - Value: ref(InformationEntry) + Value: ref(InformationItem) Element: RecordedBy Description: "The person who entered the order on behalf of another individual for example in the case of a verbal or a telephone order." diff --git a/spec/shr_core.txt b/spec/shr_core.txt index f2062822..1f30dc1d 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -418,19 +418,19 @@ Description: "The measurement or linear extent of something from end to end; the Units with Coding from UnitsOfLengthVS Element: Depth -Based on: EvaluationComponent +Based on: DataItem Concept: SCT#131197000 "Depth (qualifier value)" Description: "The extent downward or inward; the perpendicular measurement from the surface downward to determine deepness." Value: Quantity with units UCUM#cm Element: Area -Based on: EvaluationComponent +Based on: DataItem Concept: SCT#42798000 "Area (qualifier value)" Description: "The extent of a 2-dimensional surface enclosed within a boundary." Value: Quantity with units UCUM#cm2 Element: ClockDirection -Based on: CodedEvaluationComponent +Based on: CodedDataItem Concept: LNC#72294-2 Description: "A direction indicated by an angle relative to 12 o'clock." Value: CodeableConcept from ClockDirectionVS diff --git a/spec/shr_financial.txt b/spec/shr_financial.txt index 3c00a0a5..eb40d5db 100644 --- a/spec/shr_financial.txt +++ b/spec/shr_financial.txt @@ -8,7 +8,7 @@ Path: FHIR = http://hl7.org/fhir/ValueSet // ------------ TODO: move to Payment domain ------------ EntryElement: Coverage -Based on: InformationEntry +Based on: InformationItem Concept: MTH#C0021682 "HealthInsurance" Description: "Health insurance coverage available (even if not used for payment for a given encounter)." 0..1 Status from http://hl7.org/fhir/ValueSet/fm-status diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 344f06da..05ededc3 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -16,7 +16,7 @@ Description: "A composition represents a document such as a patient record, a kn Element: SocialHistorySection Based on: Section Description: "Represents a section containing entries in a social history composition." - InformationEntry is type SocialHistoryObservation + InformationItem is type SocialHistoryObservation EntryElement: OccupationalDataForHealth Concept: LNC#74166-0 @@ -28,7 +28,7 @@ Element: OccupationalDataSection Concept: TBD Based on: SocialHistorySection Description: "Single section in the current OccupationalDataSummary, containing the person's history of employment and occupation, past and present." - InformationEntry + InformationItem includes 0..* PersonEmploymentStatus includes 0..* RetirementDate includes 0..* CombatZonePeriod @@ -41,11 +41,9 @@ Concept: LNC#74165-2 "HistoryOfEmploymentStatus" Description: "The self-reported current and historical data about a person's economic relationship to work (e.g. having one or more jobs), including start and end dates. A person's Employment Status could change over time, for example, a person could be employed following a period of choosing to not be in the labor force. Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." - TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" - ResultValue value is type CodeableConcept -// ResultValue from EmploymentStatusVS - ResultValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 -0..0 EvaluationComponent +Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 + ObservableCode is LNC#74165-2 "HistoryOfEmploymentStatus" +0..0 DataItem 0..0 FocalSubjectModifier EntryElement: RetirementDate @@ -54,9 +52,9 @@ Concept: LNC#87510-4 "Date of Retirement" Description: "A self-reported date that a person considers themselves to have ‘retired’. A person can be both retired and employed (an Employment Status); most often, a person would be retired from one job and employed in another job. A person also can have more than one retirement date; for example, a person could retire from military service, then later retire from a civilian job. Multiple retirement dates should be recorded using multiple FHIR resources. Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." - TopicCode is LNC#87510-4 "Date of Retirement" - ResultValue value is type dateTime -0..0 EvaluationComponent +Value: dateTime + ObservableCode is LNC#87510-4 "Date of Retirement" +0..0 DataItem 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. 0..0 FocalSubjectModifier @@ -65,9 +63,9 @@ Based on: SocialHistoryObservation Concept: LNC#87511-2 Description: "Self-reported date range(s) when a person worked in what is considered a combat zone; sometimes called a hazardous duty work. Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones. Multiple periods in combat zone should be recorded using multiple FHIR resources." - TopicCode is LNC#87511-2 - ResultValue value is type TimePeriod -0..0 EvaluationComponent +Value: TimePeriod + ObservableCode is LNC#87511-2 +0..0 DataItem 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. 0..0 FocalSubjectModifier // only patient @@ -78,31 +76,30 @@ Description: "Related data elements about the work a person reports having perfo Knowledge of person's Usual Work can potentially assist in diagnosis, treatment and/or prevention of chronic condition(s) or conditions with a long latency. The potential for exposure to Occupational Hazard(s) related to an Occupation and/or an Industry can change over time, and a person could have been in and out of their Usual Work over time, so additional data are helpful to fully evaluate the possible impact of the person's Usual Work on their health and guide appropriate use of screening tests to detect early disease. Example: a person has worked for a total of 30 years as a 'secretary' (Occupation), but in various industries, mostly hotel construction. Her Usual Occupation is 'secretary' and her Usual Industry is 'hotel construction.' Usual Work does not include work that was unpaid or voluntary." - TopicCode is LNC#21843-8 -// ResultValue from OccupationVS - ResultValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 - EvaluationComponent +Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 + ObservableCode is LNC#21843-8 + DataItem includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration 1..1 RelevantTime RelevantTime value is type TimePeriod Element: UsualIndustry - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#21844-6 "History of Usual industry" Description: "The industry (type of business) which the subject has worked in for the longest duration while in the usual occupation. For example, a person who has spent 30 years as a secretary in various industries, but mostly in construction, would record a usual occupation of secretary and a usual industry of construction." // "A history of this observation is not retained. Actually past versions of the observation could be retained, but the panel should refer to the latest one only. //Value: CodeableConcept from IndustryVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - TopicCode is LNC#21844-6 "History of Usual industry" + ObservableCode is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#74163-7 "Usual occupation duration" Description: "The total time spent on an activity, inclusive of all time intervals, whether continuous or interrupted." Value: Quantity with units UCUM#a - TopicCode is LNC#74163-7 "Usual occupation duration" + ObservableCode is LNC#74163-7 "Usual occupation duration" EntryElement: PastOrPresentJob Based on: CodedSocialHistoryObservation @@ -111,10 +108,10 @@ Description: "Related data elements for a current or previous job, as reported b A person can have more than one job at the same time and multiple jobs over time, so the data related to each job must remain in the record in perpetuity. Each job should be recorded in a separate instance of PastOrPresentJob. A person's job can be a social determinant of their health and information about a person's job can support patient care, population health, and public health. In patient care, knowledge of a person's past or present job(s) can impact recognition, diagnosis, management, and treatment of injuries and illnesses. These data also can be used for clinical decision support and to prompt discussion of preventive care measures. For example, a record of jobs that require prolonged time in the sun might prompt a health care provider to inquire if the person wears protective clothing or sunscreen while working. At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." - TopicCode is LNC#11341-5 "History of Occupation" -0..0 ResultValue +0..0 Value + ObservableCode is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization - EvaluationComponent + DataItem includes 0..1 Occupation includes 0..1 PastOrPresentIndustry includes 0..1 WorkClassification @@ -129,7 +126,7 @@ includes 0..1 IsCurrentJob RelevantTime value is type TimePeriod Element: Occupation - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#85659-1 "Occupation CDC Census code" Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 @@ -147,71 +144,71 @@ includes 0..1 IsCurrentJob Description: "An Organization as defined in FHIR" Element: PastOrPresentIndustry - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#86188-0 Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." // Value: CodeableConcept from IndustryVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - TopicCode is LNC#86188-0 + ObservableCode is LNC#86188-0 Element: WorkClassification - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#85104-8 "Compensation and sector employment type" Description: "Type of compensation and sector for a person's job, such as 'paid work, self-employed' or 'voluntary work', as reported by the person." //Value: CodeableConcept from WorkClassificationVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 - TopicCode is LNC#85104-8 "Compensation and sector employment type" + ObservableCode is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#87707-6 Description: "A coded indicator of responsibilities for directing work and personnel management responsibilities for a person's job, as reported by the person. For US military jobs, this is pay grade." //Value: CodeableConcept from SupervisoryLevelVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 - TopicCode is LNC#87707-6 + ObservableCode is LNC#87707-6 Element: JobDuty - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#63761-1 Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " Value: string 0..0 ReferenceRange - TopicCode is LNC#63761-1 + ObservableCode is LNC#63761-1 Element: OccupationalHazard - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#87729-0 Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." Value: string 0..0 ReferenceRange - TopicCode is LNC#87729-0 + ObservableCode is LNC#87729-0 Element: WorkSchedule - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#74159-5 Description: "Typical arrangement of working hours for a person's job, as reported by the person." //Value: CodeableConcept from WorkScheduleVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 - TopicCode is LNC#74159-5 + ObservableCode is LNC#74159-5 Element: WeeklyWorkDays - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#74160-3 Description: "The average number of days per week that a person spends performing their duties for work." Value: Quantity with units UCUM#d 0..0 ReferenceRange Element: DailyWorkHours - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#87512-0 Description: "The average number of hours in a day that a person spends performing their duties for work." Value: Quantity with units UCUM#h 0..0 ReferenceRange - TopicCode is LNC#87512-0 + ObservableCode is LNC#87512-0 // Last minute addition 8/17 based on Genny's comment Element: IsCurrentJob - Based on: CodedEvaluationComponent + Based on: CodedDataItem Description: "A flag indicating if this is the person's current job (at the time the resource was last updated)." Value: CodeableConcept from YesNoVS @@ -244,12 +241,12 @@ Description: "A simplified observation for social histories." Element: CodedSocialHistoryObservation Based on: SocialHistoryObservation Description: "The result of social history questions, whose answer is expressed as a code." - ResultValue value is type CodeableConcept +Value: 0..1 CodeableConcept /* UsualWork is in the value element Element: UsualWork - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#21843-8 "History of Usual Occupation" // Occupation is LNC#74287-4 Description: "A person's work or business" Value: CodeableConcept from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 // VS defined in FHIR 3.2 and not found in 3.0.1 @@ -258,8 +255,8 @@ EntryElement: MilitaryServiceHistory Based on: CodedSocialHistoryObservation Description: "History of service in the US military." Category is OBSCAT#social-history - TopicCode is MTH#C3714797 - EvaluationComponent + ObservableCode is MTH#C3714797 + DataItem includes 1..1 MilitaryStatus includes 0..1 MilitaryServiceDischargeStatus includes 0..1 MilitaryBranch @@ -270,30 +267,30 @@ includes 0..1 ServiceConnectedDisability Element: MilitaryStatus Concept: MTH#C1550416 - Based on: CodedEvaluationComponent + Based on: CodedDataItem Description: "The current connection to the US military." Value: CodeableConcept from MilitaryStatusVS Element: MilitaryServiceDischargeStatus Concept: TBD - Based on: CodedEvaluationComponent + Based on: CodedDataItem Description: "How the subject was formally discharged from the US Military." Value: CodeableConcept from MilitaryServiceDischargeStatusVS Element: MilitaryBranch Concept: MTH#C2129058 - Based on: CodedEvaluationComponent + Based on: CodedDataItem Description: "The branch of the US military that the subject has served." Value: CodeableConcept from USMilitaryBranchVS Element: MilitaryServiceEra Concept: TBD - Based on: CodedEvaluationComponent + Based on: CodedDataItem Description: "The time period of US military service." Value: CodeableConcept from MilitaryServiceEraVS Element: ServiceConnectedDisability - Based on: EvaluationComponent + Based on: DataItem Concept: TBD Description: "Percentage disability resulting from US Military Service." Value: Quantity with units UCUM#% diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index fe78cae1..b4c6efda 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -5,16 +5,16 @@ Target: FHIR_STU_3 // do not map to US Core Results -- Brett says that's only for labs SocialHistoryObservation maps to Observation: Patient maps to subject - TopicCode maps to code + ObservableCode maps to code Category maps to category - EvaluationComponent maps to component (slice on = coding.code; slice strategy = includes) - EvaluationComponent._Concept maps to component.code - EvaluationComponent.Value maps to component.value[x] - EvaluationComponent.ExceptionValue maps to component.dataAbsentReason - EvaluationComponent.Interpretation maps to component.interpretation - EvaluationComponent.ReferenceRange maps to component.referenceRange + DataItem maps to component (slice on = coding.code; slice strategy = includes) + DataItem._Concept maps to component.code + DataItem.Value maps to component.value[x] + DataItem.ExceptionValue maps to component.dataAbsentReason +// DataItem.Interpretation maps to component.interpretation + DataItem.ReferenceRange maps to component.referenceRange // constrain related to 0..0 - ResultValue maps to value[x] + Value maps to value[x] // ExceptionValue maps to dataAbsentReason RelevantTime maps to effective[x] // Encounter maps to context diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index 1b8dfb98..1dee250e 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -42,7 +42,7 @@ EntryElement: BreastCancerPresenceStatement Based on: ConditionPresenceStatement Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." - TopicCode from BreastCancerTypeVS + ObjectTypeCode from BreastCancerTypeVS Stage.StageDetail value is type BreastCancerStage 0..1 FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding AnatomicalLocation is type BreastSite @@ -59,11 +59,10 @@ EntryElement: BreastCancerStage Based on: Observation Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. Description: "The stage of a breast cancer. Different staging systems use different staging groups, so there are currently no terminology bindings associated with this class." - ResultValue value is type CodeableConcept - ResultValue should be from http://loinc.org/LL240-3 - TopicCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" +Value: CodeableConcept should be from http://loinc.org/LL240-3 + ObservableCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" 0..1 StageTimingPrefix - EvaluationComponent + DataItem includes 0..1 BreastCancerPrimaryTumorClassification includes 0..1 BreastCancerRegionalNodesClassification includes 0..1 BreastCancerDistantMetastasesClassification @@ -85,14 +84,14 @@ includes 0..1 BreastCancerHistologicGrade Element: BreastCancerPrimaryTumorClassification Concept: SCT#78873005 "T category" - Based on: CodedEvaluationComponent + Based on: CodedDataItem Description: "The size and extent of the primary tumor, based on criteria defined by the staging system being used." Value: CodeableConcept 0..1 StageSuffix Element: BreastCancerRegionalNodesClassification Concept: SCT#277206009 "N category" //RMB: was LNC#59525-6, which is specific to AJCC 7th edition - Based on: CodedEvaluationComponent + Based on: CodedDataItem Description: "The presence of metastases in regional lymph nodes, based on criteria defined by the staging system being used." Value: CodeableConcept 0..1 StageSuffix @@ -104,7 +103,7 @@ includes 0..1 BreastCancerHistologicGrade Element: BreastCancerDistantMetastasesClassification Concept: SCT#277208005 "M category (observable entity)" //RMB: was LNC#59522-3, which is specific to AJCC 7th edition - Based on: CodedEvaluationComponent + Based on: CodedDataItem Description: "The presence of distant metastases, based on criteria defined by the staging system being used." Value: CodeableConcept @@ -113,10 +112,9 @@ EntryElement: DCISNuclearGrade Concept: MTH#C18513 // What is the proper LOINC code? Based on: SimpleCodedLaboratoryObservation Description: "An evaluation of the size and shape of the nucleus in tumor cells and the percentage of tumor cells that are in the process of dividing or growing. Cancers with low nuclear grade grow and spread less quickly than cancers with high nuclear grade." - ResultValue value is type CodeableConcept - ResultValue.CodeableConcept from NuclearGradeVS +Value: CodeableConcept from NuclearGradeVS Specimen is type BreastSpecimen - TopicCode is MTH#C18513 + ObservableCode is MTH#C18513 DiagnosticService is #pathology @@ -124,13 +122,12 @@ EntryElement: BreastCancerHistologicGrade Concept: LNC#44648-4 Based on: CodedLaboratoryObservation Description: "The Elston Grade/Nottingham Score, representative of the aggressive potential of the tumor. Well differentiated cells (Grade 1) look similar to normal cells and are usually slow growing, while poorly differentiated cells (Grade 3) look very different than normal and are fast-growing." - ResultValue value is type CodeableConcept - ResultValue.CodeableConcept from NottinghamCombinedGradeVS +Value: CodeableConcept from NottinghamCombinedGradeVS ExceptionValue from NottinghamNullVS - TopicCode is LNC#44648-4 + ObservableCode is LNC#44648-4 Specimen is type BreastSpecimen DiagnosticService is #pathology - EvaluationComponent + DataItem includes 0..1 TubuleFormationScore includes 0..1 NuclearPleomorphismScore includes 0..1 MitoticCountScore @@ -139,21 +136,21 @@ includes 0..1 MitoticCountScore //RMB: the CAP form has two additional options for each of these subcomponents: "only microinvasion present" and "no residual invasive carcinoma", both of which are situations where a histologic grade wouldn't be assigned. Because the our exceptions value set doesn't handle these options (and possibly others related to other data elements, should we allow for a string option to contain reasons for missing data? Otherwise the expection value set might become unruly. Element: TubuleFormationScore Concept: LNC#85321-8 "Granular differentiation" // SHOULD BE LOINC - Based on: CodedEvaluationComponent + Based on: CodedDataItem Description: "Glandular differentiation [Score] in Breast cancer specimen Qualitative by Nottingham." Value: CodeableConcept from TubuleFormationScoreVS //TODO: Determine if it is better to use codes as opposed to a number 1, 2 or 3. Observations don't support integer or posInteger ExceptionValue from NottinghamComponentNullVS Element: NuclearPleomorphismScore Concept: LNC#44645-0 - Based on: CodedEvaluationComponent + Based on: CodedDataItem Description: "Nuclear pleomorphism in Breast tumor Qualitative by Nottingham." Value: CodeableConcept from NuclearPleomorphismScoreVS ExceptionValue from NottinghamComponentNullVS Element: MitoticCountScore Concept: LNC#85300-2 - Based on: CodedEvaluationComponent + Based on: CodedDataItem Description: "Mitotic rate [Score] in Breast cancer specimen Qualitative by Nottingham." Value: CodeableConcept from MitoticCountScoreVS // 1 to 3 //RMB: this shouldn't be different from TubuleFormationScore and NuclearPleomorphismScore. They have the same scoring mechanism. Suggest using local codes. ExceptionValue from MitoticCountScoreNullVS @@ -163,12 +160,11 @@ Based on: CodedLaboratoryObservation Concept: LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" Description: "Estrogen receptor alpha is the predominant estrogen receptor expressed in breast tissue and is overexpressed in around 50% of breast carcinomas. ER status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options. The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." - ResultValue value is type CodeableConcept - ResultValue.CodeableConcept from PositiveNegativeVS - TopicCode is LNC#16112-5 +Value: CodeableConcept from PositiveNegativeVS + ObservableCode is LNC#16112-5 DiagnosticService is #pathology Specimen is type BreastSpecimen - EvaluationComponent + DataItem includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers @@ -186,18 +182,17 @@ Based on: CodedLaboratoryObservation Concept: LNC#16113-3 Description: "Progesterone receptor status is a factor in determining prognosis and treatment options. The value is the percentage of cells that test (stain) positive for the presence of a receptor. The interpretation of positive or negative (found in the interpretation property) is based on the staining percentage, and may take into account the staining intensity. Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." - ResultValue value is type CodeableConcept - ResultValue.CodeableConcept from PositiveNegativeVS - TopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" +Value: CodeableConcept from PositiveNegativeVS + ObservableCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" DiagnosticService is #pathology Specimen is type BreastSpecimen - EvaluationComponent + DataItem includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers Element: NuclearPositivity - Based on: EvaluationComponent + Based on: DataItem Concept: TBD // apparently no LOINC code Description: "The percentage of cells that test (stain) positive for the presence of a receptor. We are seeking feedback on whether nuclear positivity should be an exact percentage or a range of percentages. As currently defined, an exact nuclear positivity could be represented by a zero-width range, where the lower and upper bounds would be the same number." @@ -206,7 +201,7 @@ includes 0..1 AverageStainingIntensity Element: AverageStainingIntensity Concept: SCT#444775005 "Average intensity of positive staining neoplastic cells (observable entity)" - Based on: CodedEvaluationComponent + Based on: CodedDataItem Description: "The degree or magnitude of staining (nuclear positivity) across cells in the specimen." Value: CodeableConcept from StainingIntensityVS @@ -214,13 +209,13 @@ EntryElement: HER2ReceptorStatus Based on: CodedLaboratoryObservation Concept: LNC#48676-1 "HER2 [Interpretation] in Tissue" Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." - ResultValue.CodeableConcept from PositiveNegativeEquivocalVS - TopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" +Value: CodeableConcept from PositiveNegativeEquivocalVS + ObservableCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" DiagnosticService is #pathology Specimen is type BreastSpecimen 0..0 Precondition 0..0 FindingMethod -0..0 EvaluationComponent +0..0 DataItem PanelMembers.Observation includes 0..* HER2byIHC includes 0..* HER2byFISH @@ -230,20 +225,20 @@ EntryElement: HER2byIHC Based on: CodedLaboratoryObservation Concept: LNC#85319-2 Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (IHC). " - ResultValue.CodeableConcept from HER2byIHCScoreVS +Value: CodeableConcept from HER2byIHCScoreVS ExceptionValue from HER2byIHCScoreNullVS Interpretation from PositiveNegativeEquivocalVS - TopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" -0..0 FindingMethod // pre-coordinated in the TopicCode + ObservableCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" +0..0 FindingMethod // pre-coordinated in the ObservableCode DiagnosticService is #pathology 0..0 Precondition Specimen is type BreastSpecimen - EvaluationComponent + DataItem includes 0..1 CompleteMembraneStainingPercent 0..0 PanelMembers Element: CompleteMembraneStainingPercent - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#85328-3 "Cells.HER2 uniform intense membrane staining/100 cells" Description: "Percentage of cells with uniform intense complete membrane staining." Value: Quantity with units UCUM#% // TODO: Percentage causes CLI error @@ -254,36 +249,36 @@ EntryElement: HER2byFISH Based on: LaboratoryObservation Concept: LNC#85318-4 // Corrected 5/12/2018 by MK Description: "HER2 receptor status as determined by single-probe or dual-probe Fluorescence In Situ Hybridization (FISH)." -0..0 ResultValue +0..0 Value 0..0 ExceptionValue - TopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" + ObservableCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" FindingMethod from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS DiagnosticService is #pathology 0..0 Precondition Specimen is type BreastSpecimen - EvaluationComponent + DataItem includes 0..1 AverageHER2SignalsPerCell includes 0..1 AverageCEP17SignalsPerCell includes 0..1 HER2toCEP17Ratio 0..0 PanelMembers Element: AverageHER2SignalsPerCell - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#74860-8 Description: "Average number of HER2 signals per cell" Value: Quantity 0..0 ReferenceRange Element: AverageCEP17SignalsPerCell - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#74861-6 Description: "Average number CEP17 signals per cell (dual probe only)" Value: Quantity 0..0 ReferenceRange Element: HER2toCEP17Ratio - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#49683-6 Description: "HER2 to CEP17 Ratio (dual probe only)" Value: Quantity @@ -294,9 +289,8 @@ Based on: SimpleLaboratoryObservation Concept: MTH#C1709318 Description: "The Oncotype DX test for invasive breast cancer examines the activity of 21 genes in a patient’s breast tumor tissue to provide personalized information for tailoring treatment based on the biology of their individual disease. The value from 0 to 100 indicates the estimated risk of recurrence, with the highest risk indicated by a score greater than 31. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" - ResultValue value is type Quantity - ResultValue.Quantity with units UCUM#1 - TopicCode is MTH#C1709318 +Value: Quantity with units UCUM#1 + ObservableCode is MTH#C1709318 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type ref(BreastSpecimen) @@ -307,9 +301,8 @@ Based on: SimpleLaboratoryObservation Concept: MTH#C3898101 Description: "The Oncotype DX test for DCIS (Ductal Carcinoma in Situ) breast cancer. Risk scores range from 0 to 100 with the following interpretations: 0-38: Low-Risk, 39-54: Intermediate-Risk, 55+: High-Risk. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" - ResultValue value is type Quantity - ResultValue.Quantity with units UCUM#1 - TopicCode is MTH#C3898101 +Value: Quantity with units UCUM#1 + ObservableCode is MTH#C3898101 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -319,9 +312,8 @@ Based on: SimpleLaboratoryObservation Concept: LNC#76544-6 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Prosigna. The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Risk of Recurrence Score in the literature), which is correlated with the probability of distant recurrence at ten years for post-menopausal women with hormone receptor positive, early stage breast cancer." - ResultValue value is type Quantity - ResultValue.Quantity with units UCUM#1 - TopicCode is LNC#76544-6 +Value: Quantity with units UCUM#1 + ObservableCode is LNC#76544-6 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -332,8 +324,8 @@ Concept: MTH#C2827401 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Mammaprint. In the United States, MammaPrint can only be used on cancers that are stage I or stage II, invasive, smaller than 5 centimeters, and estrogen-receptor-positive or -negative. Scores range from -1.0 to +1.0, with scores less than 0 indicating high risk, and scores greater than 0 indicating low risk. The is currently no LOINC code for Mammaprint test." - ResultValue value is type Quantity - TopicCode is MTH#C2827401 +Value: Quantity + ObservableCode is MTH#C2827401 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -343,13 +335,12 @@ EntryElement: DiseaseProgression Based on: Observation Concept: MTH#C0421176 "Progression" Description: "A finding related to the current trend of a particular existing disease. This concept is most often used for chronic and incurable diseases where the status and trendline of the disease is an important determinant of therapy and prognosis. The specific disorder being evaluated must be cited in the Focus_Reference or Focus_CodeableConcept as a reference to a Condition." - ResultValue value is type CodeableConcept - ResultValue from ProgressionVS - TopicCode is MTH#C0421176 "Progression" +Value: CodeableConcept from ProgressionVS + ObservableCode is MTH#C0421176 "Progression" 0..* ProgressionEvidence // "ProgressionEvidence" is somewhat related to FindingMethod, which represents the test or procedure used to generate the result; it is typically a LOINC code (0..1) 0..0 Specimen -0..0 EvaluationComponent +0..0 DataItem 0..0 Precondition 0..0 ReferenceRange // applies to a quantitative measurement only @@ -362,90 +353,90 @@ Description: "A finding related to the current trend of a particular existing di /* Element: Aneusomy - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: CAP#30478 Description: "Aneusomy (as defined by vendor kit used)" Value: CodeableConcept from YesNoVS Element: HeterogeneousSignals - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: CAP#30482 Description: "Whether In Situ Hybridization signals were heterogeneous." Value: CodeableConcept from YesNoVS Element: PercentageAmplified - Based on: EvaluationComponent + Based on: DataItem Concept: CAP#31073 Description: "Percentage of cells with amplified HER2 signals" Value: Quantity with units UCUM#% Element: NuclearPositivity - Based on: EvaluationComponent + Based on: DataItem Concept: TBD Description: "The percentage of cells that test (stain) positive for the presence of a receptor." Value: Range Element: PrimaryAntibody - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: CAP#31092 Description: "" Value: CodeableConcept Element: StainingControl - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: CAP#25895 Description: "Whether control cells were present." Value: CodeableConcept from StainingControlVS if covered Element: AllredProportionScore Concept: CAP#31054 - Based on: EvaluationComponent + Based on: DataItem Description: "Part of Allred scoring, based on the percentage of cells that stain for a receptor, on a scale of 0 to 5." Value: Quantity with units UCUM#1 Element: AllredIntensityScore Concept: CAP#29749 - Based on: EvaluationComponent + Based on: DataItem Description: "Part of the Allred scoring, based on the intensity of that staining, on a scale of 0 to 3." Value: Quantity with units UCUM#1 Element: AllredTotalScore Concept: CAP#31056 - Based on: EvaluationComponent + Based on: DataItem Description: "The total Allred score, the total of proportion and intensity scores, from 0 to 8." Value: Quantity with units UCUM#1 // unsignedInt - limit to max of 8 Element: OtherReceptorScoringSystem Concept: CAP#31062 - Based on: CodedEvaluationComponent + Based on: CodedDataItem Description: "A scoring system other than Allred." EntryElement: TumorDimensions Based on: SimpleCodedObservation Concept: MTH#C4086369 0..0 Value - TopicCode is TBD#TBD + ObservableCode is TBD#TBD DiagnosticService is #pathology - EvaluationComponent + DataItem includes 0..1 TumorPrimaryDimensionSize includes 0..1 TumorSecondaryDimensionSize includes 0..1 SizeOfGrossTumorBed Element: TumorPrimaryDimensionSize Description: "The longest diameter of the primary tumor." - Based on: EvaluationComponent + Based on: DataItem Concept: TBD Value: Quantity with units UCUM#mm Element: TumorSecondaryDimensionSize Description: "The longest perpendicular diameter of the primary tumor." - Based on: EvaluationComponent + Based on: DataItem Concept: TBD Value: Quantity with units UCUM#mm Element: SizeOfGrossTumorBed - Based on: EvaluationComponent + Based on: DataItem Concept: TBD Description: "The largest dimension of the gross tumor bed/fibrotic area." Value: Quantity with units UCUM#mm @@ -456,9 +447,9 @@ Based on: SimpleCodedObservation Concept: MTH#C4086369 Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." Value: CodeableConcept from PositiveNegativeVS - TopicCode is MTH#C4086369 + ObservableCode is MTH#C4086369 DiagnosticService is #pathology - EvaluationComponent + DataItem includes 0..1 TumorMarginDescription includes 0..1 Cellularity // not sure this belongs here includes 0..1 PercentageInSituCarcinoma // not sure this belongs here @@ -466,18 +457,18 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Element: TumorMarginDescription Concept: TBD - Based on: CodedEvaluationComponent + Based on: CodedDataItem Description: "Description of the edge or border of tumor in situ by radiologist or of removed tumor by pathologist." Value: CodeableConcept from TumorMarginDescriptionVS Element: Cellularity Concept: MTH#C4055283 - Based on: EvaluationComponent + Based on: DataItem Description: "Percentage of cells in a sample that are cancerous" Value: Quantity with units UCUM#% Element: PercentageInSituCarcinoma - Based on: EvaluationComponent + Based on: DataItem Concept: TBD Description: "The percentage of the cancer that is in situ, as opposed to invading other tissues." Value: Quantity with units UCUM#% @@ -489,9 +480,9 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Concept: MTH#C4049944 Description: "Ki-67 is a protein phosphatase whose expression is strongly associated with cell proliferation and encoded by the MKI67 gene. The Ki67 labeling index is the fraction of Ki-67-positive cells to total cells in a tumor specimen and may be useful for determining prognosis with respect to survival and disease recurrence. The more positive cells there are, the more quickly they are dividing and forming new cells. ReferenceRange: Low <10, Intermediate 10-20, >20 High" Value: Quantity with units UCUM#% - TopicCode is LNC#29593-1 + ObservableCode is LNC#29593-1 DiagnosticService is #pathology - EvaluationComponent + DataItem includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered Element: S-PhaseFraction @@ -500,7 +491,7 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Description: "An expression of the number of mitoses found in a stated number of cells. The S-phase fraction number tells you what percentage of cells in the tissue sample are in the process of copying their genetic information (DNA). This S-phase, short for synthesis phase, happens just before a cell divides into two new cells. ReferenceRange: Low <6, Intermediate 6-10, >10 High." Value: Quantity with units UCUM#% DiagnosticService is #pathology - TopicCode is LNC#29593-1 + ObservableCode is LNC#29593-1 EntryElement: GeneticVariant Based on: Observation @@ -513,11 +504,11 @@ Value: CodeableConcept from PositiveNegativeVS 0..0 ReferenceRange 0..0 DeltaFlag 0..0 AnatomicalLocation - EvaluationComponent + DataItem includes 0..1 Refseq Element: Refseq - Based on: EvaluationComponent + Based on: DataItem Concept: TBD Description: "The Reference Sequence (RefSeq) collection provides a comprehensive, integrated, non-redundant, well-annotated set of sequences, including genomic DNA, transcripts, and proteins. RefSeq sequences form a foundation for medical, functional, and diversity studies. They provide a stable reference for genome annotation, gene identification and characterization, mutation and polymorphism analysis (especially RefSeqGene records), expression studies, and comparative analyses." Value: CodeableConcept from RefseqVS @@ -526,9 +517,9 @@ EntryElement: BreastCancerGeneticAnalysisObservation Concept: TBD Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." - Observation.TopicCode is TBD#TBD + Observation.ObservableCode is TBD#TBD DiagnosticService is #genetics -0..0 EvaluationComponent +0..0 DataItem PanelMembers.EvaluationresultRecorded includes 1..1 BRCA1Variant includes 1..1 BRCA2Variant diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index c260ebcf..7ea5149e 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -65,16 +65,15 @@ See https://s.details.loinc.org/LOINC/39135-9.html?sections=Comprehensive //------------- Wound Absence or Presence --------------- EntryElement: WoundPresenceAssertion -Based on: FindingSiteConditionPresenceStatement -Concept: SCT#416462003 "Wound (disorder)" -Description: "A determination that a wound that exists at a particular body site. +Based on: ConditionPresenceStatement +Concept: SCT#416462003 "Wound (disorder)" // LNC#72300-7 Wound Type? +Description: "A determination that a particular type of wound that exists at a particular body site. The WoundIdentifier serves as a link between this assertion and assessments of the wound that might occur at later times. Multiple wound assessments can be associated with a single wound." Onset value is type dateTime // nowhere to put code LOINC 85585-8 Date of Onset {mm/dd/yyyy} Abatement value is type dateTime // nowhere to put code 88878-4 Date of abatement {mm/dd/yyyy} 1..1 Category is OBSCAT#exam -1..1 TopicCode is SCT#416462003 "Wound (disorder)" -1..1 WoundType -0..1 ConditionIdentifier is type WoundIdentifier +1..1 ObjectTypeCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered +0..1 ObjectIdentifier is type WoundIdentifier 0..1 ConditionCause is type WoundTypeEtiology 1..1 AnatomicalLocation is type WoundAnatomicalLocation 0..0 Severity // not sure if zeroing it out should be prohibited, but it is not part of LOINC panel @@ -83,18 +82,10 @@ The WoundIdentifier serves as a link between this assertion and assessments of t 0..0 Device 0..0 Precondition - Element: WoundType - Based on: TopicCode - Concept: LNC#72300-7 - Description: "A type code describing the wound or skin injury. - Differentiating pressure ulcers and other types of wounds is important for an accurate count of their number and for identifying appropriate wound treatment. The values will be used for documenting and retrieving data regarding the number and types of wounds present. " - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered - Element: WoundIdentifier - Based on: ConditionIdentifier + Based on: ObjectIdentifier Concept: LNC#81666-0 Description: "A human-readable identifier for the lesion; e.g., a letter or integer." - Value: string Element: WoundTypeEtiology Based on: ConditionCause @@ -111,10 +102,10 @@ The WoundIdentifier serves as a link between this assertion and assessments of t EntryElement: WoundAbsenceAssertion -Based on: FindingSiteConditionAbsenceStatement +Based on: ConditionAbsenceStatement Description: "Documents the absence of a wound at a given body site. No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicalLocation." -1..1 TopicCode is SCT#416462003 "Wound (disorder)" +1..1 ObjectTypeCode is SCT#416462003 "Wound (disorder)" 1..1 Category is OBSCAT#exam 1..1 AnatomicalLocation is type WoundAnatomicalLocation @@ -124,16 +115,16 @@ EntryElement: WoundAssessmentPanel Based on: NonLaboratoryObservation Concept: LNC#39135-9 Description: "Group of observations regarding the properties and severity of a wound." +0..0 Value 1..1 WoundIdentifier Interpretation is type WoundAssessmentInterpretation -0..0 ResultValue 0..0 ExceptionValue 0..0 AnatomicalLocation // carried by wound assertion 0..0 Device - TopicCode is LNC#39135-9 + ObservableCode is LNC#39135-9 0..0 ReferenceRange Media is type PhotographicImage // 72170-4 Photographic image [Media] - EvaluationComponent + DataItem includes 0..1 WoundEpisode // very similar to Episodicity or ClinicalStatus, but value set is different. includes 0..1 WoundTrend includes 0..1 WoundPeriwoundDescription // 72301-5 Description of Periwound @@ -152,46 +143,46 @@ includes 0..1 WoundExudateObservation // 72292-6 Wound exudate observation includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Element: WoundEpisode - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#89252-1 "Episode of Wound" Description: "Wound episode refers to a period of the wound, an incident in the course of a wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.4/expansion Element: WoundPeriwoundDescription - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#72301-5 Description: "A description of the skin around the wound (periwound). Color, induration, warmth and edema should be assessed. Redness of the surrounding skin can be indicative of unrelieved pressure. Irritation of the surrounding skin can result from exposure to feces or urine, a reaction to the dressing or tape, or inappropriate removal of dressing or tape. Redness, tenderness, warmth and swelling are classical clinical signs of infection. [Reference: Brown, P., 2009]" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.2/expansion //could be from http://loinc.org/vs/LL2216-1 Element: WoundVisibleInternalStructure - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#89250-5 Description: "Exposed body structures, devices, and/or foreign bodies visible by the naked eye in a wound." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.1/expansion // should be from http://loinc.org/vs/LL4935-4 Element: WoundPressureUlcerAssociation - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: TBD Description: "Is the wound associated with a device or pressure point?" Value: CodeableConcept from YesNoUnknownVS Element: WoundTunnelingPresentOrAbsent - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#72298-3 Description: "The presence or absence of wound tunneling." Value: CodeableConcept from PresentAbsentVS // LOINC: should re-use the same Snomed codes for Present-Absent Element: WoundUnderminingPresentOrAbsent - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#72295-9 Description: "The presence or absence of wound undermining." Value: CodeableConcept from PresentAbsentVS Element: WoundExudatePresentOrAbsent - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#89259-6 Description: "The presence or absence of wound exudate." Value: CodeableConcept from PresentAbsentVS @@ -203,7 +194,7 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Value: CodeableConcept from http://loinc.org/vs/LL3816-7 if covered // underpowered? 'normal' and 'other' Element: WoundTrend - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#89253-9 Description: "Whether a condition is improving, worsening, stable, or resolved." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.5/expansion // should be from http://loinc.org/vs/LL4938-8 with values improved, deteriorated, stablized or resolved. Resolved is missing from the VS in VSAC @@ -215,21 +206,21 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89254-7 Description: "The appearance of the base (bed) of the wound, together with the percentage of the bed with each type of appearance." 1..1 WoundIdentifier - TopicCode is LNC#89254-7 + ObservableCode is LNC#89254-7 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - EvaluationComponent + DataItem includes 1..1 WoundBedAppearance includes 1..1 WoundBedAppearancePercentage Element: WoundBedAppearance - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#72371-8 Description: "Appearance of wound base (bed)." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.6/expansion //could be from http://loinc.org/vs/LL2237-7 Element: WoundBedAppearancePercentage - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#72370-0 Description: "Area of wound bed appearance/Entire ​Area of wound bed." Value: Quantity with units UCUM#% @@ -239,23 +230,23 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: TBD Description: "Color of part or all of the wound base (bed), and the percentage of the area with that color." 1..1 WoundIdentifier - TopicCode is TBD#TBD + ObservableCode is TBD#TBD 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - EvaluationComponent + DataItem includes 1..1 WoundBedColor includes 1..1 WoundBedColorAreaPercentage // LOINC: Why precoordinate a general concept such as 'color' with the concept of wound bed? Element: WoundBedColor - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#39132-6 Description: "Color of Wound base (bed)." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.7/expansion //could be from http://loinc.org/vs/LL2338-3 // LOINC: Why precoordinate a general concept such as 'percentage of area' with the concept of wound bed? Element: WoundBedColorAreaPercentage - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#89255-4 Description: "Wound bed area identified by color/​Area of wound bed." Value: Quantity with units UCUM#% @@ -265,23 +256,23 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89256-2 Description: "The state of the tissue at the edge of the wound." 1..1 WoundIdentifier - TopicCode is LNC#89256-2 + ObservableCode is LNC#89256-2 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - EvaluationComponent + DataItem includes 1..1 WoundEdgeDescription includes 0..1 WoundEdgeColor // LOINC:Is the entire edge of the wound described by one color? Or should it be by percentage, similar to the wound bed? // LOINC: Why precoordinate a general concept such as 'color' with the concept of wound edge? Element: WoundEdgeDescription - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#72304-9 Description: "Edge of wound description." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.8/expansion // could be from http://loinc.org/vs/LL2230-2 Element: WoundEdgeColor - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#39133-4 Description: "Color of Wound edge." Value: CodeableConcept could be from http://loinc.org/vs/LL2338-3 @@ -291,10 +282,10 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89257-0 Description: "A discharging blind-ended track that extends from the surface of an organ to an underlying area or abscess cavity. The track is invariably lined with granulation tissue. In chronic cases this may be augmented with epithelial tissue." 1..1 WoundIdentifier - TopicCode is LNC#89257-0 + ObservableCode is LNC#89257-0 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - EvaluationComponent + DataItem includes 0..1 WoundTunnelLength includes 0..1 WoundTunnelClockDirection @@ -302,14 +293,14 @@ includes 0..1 WoundTunnelClockDirection // LOINC: why precoordinate clock position + tunneling? Element: WoundTunnelLength - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#72296-7 Description: "Length of wound tunneling." Value: Quantity with units UCUM#cm // LOINC: should require use the full clock position value set Element: WoundTunnelClockDirection - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#72297-5 Description: "Clock position of wound tunnel" Value: CodeableConcept from ClockDirectionVS @@ -319,23 +310,23 @@ EntryElement: WoundUnderminingObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89258-8 Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage around the wound margin. Undermining are narrow sinus tracts away from the wound margins and go downward into the wound." - TopicCode is LNC#89258-8 + ObservableCode is LNC#89258-8 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - EvaluationComponent + DataItem includes 0..1 WoundUnderminingLength includes 0..1 WoundUnderminingClockDirection Element: WoundUnderminingLength - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#72293-4 Description: "Length of wound undermining." Value: Quantity with units UCUM#cm // LOINC: should require use the full clock position value set Element: WoundUnderminingClockDirection - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#72294-2 Description: "Clock position of wound undermining" Value: CodeableConcept from ClockDirectionVS @@ -344,11 +335,11 @@ EntryElement: WoundExudateObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72292-6 Description: "Description of the fluid produced by a wound." - TopicCode is LNC#72292-6 + ObservableCode is LNC#72292-6 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - EvaluationComponent + DataItem includes 0..1 WoundExudateAmount includes 0..1 WoundExudateVolume includes 1..1 WoundExudateAppearance @@ -358,32 +349,32 @@ includes 0..1 WoundExudateOdor // LOINC: Wound area should be in wound size panel, not wound exudate panel Element: WoundExudateAmount - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#39116-9 Description:"Drainage amount of wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.10/expansion //could be from http://loinc.org/vs/LL2222-9 Element: WoundExudateVolume - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#39122-7 Description:"Appearance of exudate from wound" Value: Quantity with units UCUM#mL Element: WoundExudateAppearance - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#72290-0 Description:"Appearance of exudate from wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.11/expansion //could be from http://loinc.org/vs/LL2220-3 Element: WoundExudateColor - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#72289-2 Description:"Color of exudate from wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.12/expansion // could be from http://loinc.org/vs/LL2219-5 Element: WoundExudateOdor - Based on: CodedEvaluationComponent + Based on: CodedDataItem Concept: LNC#72288-4 Description:"Odor of exudate from wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.13/expansion @@ -393,36 +384,36 @@ EntryElement: WoundSizeObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72287-6 Description: "The estimated or measured dimensions of a wound." - TopicCode is LNC#72287-6 + ObservableCode is LNC#72287-6 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - EvaluationComponent + DataItem includes 1..1 WoundLength includes 1..1 WoundWidth includes 0..1 WoundDepth includes 0..1 WoundArea Element: WoundLength - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#39126-8 Description: "Length of the wound (longest dimension)." Value: Quantity with units UCUM#cm Element: WoundWidth - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#39125-0 Description: "Width of the wound (perpendicular to longest dimension)." Value: Quantity with units UCUM#cm Element: WoundDepth - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#39127-6 Description: "Depth of the wound." Value: Quantity with units UCUM#cm Element: WoundArea - Based on: EvaluationComponent + Based on: DataItem Concept: LNC#89260-4 Description: "Area of the wound." Value: Quantity with units UCUM#cm2 From 021ab058495b268977d893d14d596d3e1193ec3a Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 16 Oct 2018 09:42:13 -0400 Subject: [PATCH 059/289] DataElementItem is a parent of Finding --- spec/cimi_statement.txt | 150 +++++++++++++++++------------------- spec/cimi_statement_map.txt | 36 ++++----- spec/shr_core.txt | 6 +- spec/shr_occupation.txt | 80 ++++++++++--------- spec/shr_occupation_map.txt | 14 ++-- spec/shr_oncology.txt | 132 +++++++++++++++---------------- spec/shr_wound.txt | 104 +++++++++++++------------ 7 files changed, 259 insertions(+), 263 deletions(-) diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt index c4aa40b9..b71003ac 100644 --- a/spec/cimi_statement.txt +++ b/spec/cimi_statement.txt @@ -14,45 +14,21 @@ Element: InformationItem Concept: MTH#C1705654 Description: "Parent class for any entry in clinical or administrative health-related system, including information about organizations, providers, patients, services, payments, decision support artifacts, etc." -Element: Finding -Based on: InformationItem -Description: "A determination, opinion, result, or measurement." -0..1 Patient -0..1 Encounter // findings are often associated with specific encounters -0..1 FindingMethod -//1..1 FindingStatus - - Element: FindingMethod - Concept: TBD - Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." - Value: CodeableConcept should be from FindingMethodVS - - Element: FindingStatus - Concept: TBD - Description: "Indicates whether the finding is preliminary, amended, final, etc." - Value: code from http://hl7.org/fhir/ValueSet/observation-status - //------------- Data Item (aka data element) ------------ -Abstract Element: DataItem -Based on: Finding -Description: "A non-separable question-answer pair (data element) consisting of an observable property (represented by a code), value (or exception value), reference range, and interpretation. An observation component represents question-answer pair, and lack sufficient context for full interpretation, e.g., a reference to a patient, problem, or body structure. They do not stand alone, but can be included in observations." -Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) +Element: DataElementItem +Based on: InformationItem +Description: "A non-separable question-answer pair (data element) consisting of an observable property (represented by a code), value (or exception value), reference range, and interpretation. An observation component represents question-answer pair, and lack sufficient context for full interpretation, e.g., a reference to a patient, problem, or body structure. They do not stand alone, but can be included in observations." +Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) // exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 -1..1 ObservableCode // redundant with Concept -0..1 ExceptionValue from http://hl7.org/fhir/ValueSet/data-absent-reason if covered -0..* ReferenceRange -// 0..1 Interpretation +1..1 DataItemCode // redundant with Concept +0..1 ReferenceRange // included here because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. +0..1 ExceptionValue - Element: ObservableCode - Description: "A code describing the aspect or property of the subject being observed or measured. The ObservableCode is the 'question code' that pairs to the 'answer' contained in the Value." + Element: DataItemCode + Description: "A code describing the data item. In an observation, the code reprsents the 'question': the aspect or property of the subject being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist, for example, the SNOMED-CT code for pneumonia." Value: CodeableConcept - Element: ExceptionValue - Concept: TBD - Description: "Reason that a value associated with a test or other finding is missing." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/data-absent-reason if covered - Element: ReferenceRange Concept: MTH#C0883335 Description: "The usual or acceptable range for a test result." @@ -71,22 +47,57 @@ Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time Description: "The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so." // FHIR: how exactly does one indicate a neonatal or prenatal age? Value: Range - Element: CodedDataItem - Based on: DataItem - Description: "An data item whose value is a code (concept)." - Value: CodeableConcept - 0..0 ReferenceRange + Element: ExceptionValue + Concept: TBD + Description: "Reason that a value associated with a test or other finding is missing." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/data-absent-reason if covered + +Element: CodedDataElement +Based on: DataElementItem +Description: "An data item whose value is a code (concept)." +Value: 0..1 CodeableConcept +0..0 ReferenceRange + +Element: QuantitativeDataElement +Based on: DataElementItem +Description: "An data item whose value is a code (concept)." +Value: 0..1 Quantity //-------------Findings------------ +Element: Finding +Based on: DataElementItem +Description: "A data item with context, representing a determination, opinion, result, or measurement." +0..1 Patient +0..* Focus +0..1 Encounter // findings are often associated with specific encounters +0..1 FindingMethod +1..1 FindingStatus + + Element: Focus + Description: "The aspect or attribute of the subject of information that the finding relates to. The Focus is only required if the thing observed is different than the person of record (patient). For example, the subject of observation could be a specific condition if the property is progression, or a specific instance of a wound if the property is wound length. Focus should not be used to record anatomical location." + Value: string or CodeableConcept or Identifier or ref(InformationItem) + 0..1 RelationshipToPersonOfRecord + + Element: FindingMethod + Concept: TBD + Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." + Value: CodeableConcept should be from FindingMethodVS + + Element: FindingStatus + Concept: TBD + Description: "Indicates whether the finding is preliminary, amended, final, etc." + Value: code or CodeableConcept + + EntryElement: Observation // TODO: be consistent, or stop using the word "Statement" in class names -Based on: DataItem +Based on: Finding Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The Focus can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -0..* Focus 0..1 RelevantTime //0..0 Observer +// 0..1 Interpretation 0..1 DeltaFlag 1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered 0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? @@ -96,13 +107,11 @@ Observation has a value representing the result (answer), or an ExceptionValue i 0..1 Specimen 0..* Precondition 0..* Media -0..* DataItem + FindingStatus value is type code + FindingStatus from http://hl7.org/fhir/ValueSet/observation-status +0..* DataElementItem 0..1 PanelMembers - - Element: Focus - Description: "The aspect or attribute of the subject of information that the finding relates to, other than an anatomical location. The Focus is only required if the thing observed is different than the person of record (patient). For example, the subject of observation could be a specific condition if the property is progression, or a specific instance of a wound if the property is wound length." - Value: string or CodeableConcept or Identifier or ref(InformationItem) - 0..1 RelationshipToPersonOfRecord + Element: Observer Concept: MTH#C0449416 @@ -162,7 +171,7 @@ Description: "An observation not based on a specimen." EntryElement: SimpleNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation having no components or panel members" -0..0 DataItem +0..0 DataElementItem 0..0 PanelMembers EntryElement: CodedNonLaboratoryObservation @@ -175,7 +184,7 @@ Value: CodeableConcept EntryElement: SimpleCodedNonLaboratoryObservation Based on: CodedNonLaboratoryObservation Description: "An observation whose result is a code, and also having no components or panel members" -0..0 DataItem +0..0 DataElementItem 0..0 PanelMembers EntryElement: ComponentOnlyNonLaboratoryObservation @@ -192,7 +201,7 @@ Description: "An observation with panel members, but without a result value or c 0..0 Value 0..0 ExceptionValue 0..0 ReferenceRange -0..0 DataItem +0..0 DataElementItem 1..1 PanelMembers // Laboratory Measurements and Results @@ -220,13 +229,13 @@ Value: CodeableConcept EntryElement: SimpleLaboratoryObservation Based on: LaboratoryObservation Description: "A coded finding from a laboratory test without further panel members or components." -0..0 DataItem +0..0 DataElementItem 0..0 PanelMembers EntryElement: SimpleCodedLaboratoryObservation Based on: CodedLaboratoryObservation Description: "A coded finding from a laboratory test without further panel members or components." -0..0 DataItem +0..0 DataElementItem 0..0 PanelMembers //---------- Assertions ------------- @@ -234,34 +243,18 @@ Description: "A coded finding from a laboratory test without further panel membe Abstract Element: ExistenceAssertion Based on: Finding Description: "An assertion that an event has or has not taken place, or a relationship, situation, condition, or other phenomenon is present or absent." +Value: CodeableConcept from PresentAbsentVS +0..0 ReferenceRange +0..0 ExceptionValue 0..* PartOf -1..1 PresentOrAbsent -1..1 ObjectTypeCode -1..1 VerificationStatus 0..1 ObjectIdentifier 0..1 Certainty + FindingStatus value is type CodeableConcept Element: PartOf - Description: "The larger entity that the asserted item is a portion of. For example, a wound tunnel might be part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." - Value: ref(InformationItem) - - Element: BelongsTo - Description: "The person, place, event, condition, other statement that this object belongs to, if other than the patient. For example, a wound tunnel belongs to a wound." + Description: "The larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." Value: ref(InformationItem) - Element: PresentOrAbsent - Description: "Whether the object is present or absent, exists or does not exist." - Value: CodeableConcept from PresentAbsentVS - - Element: ObjectTypeCode - Description: "A code representing the type of event, condition, or phenomenon that is being asserted to exist or not exist, for example, the SNOMED-CT code for pneumonia." - Value: CodeableConcept - - Element: VerificationStatus - Concept: TBD - Description: "Whether an assessment has been confirmed by testing or observation." - Value: CodeableConcept - Element: ObjectIdentifier Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." Value: string @@ -271,10 +264,10 @@ Description: "An assertion that an event has or has not taken place, or a relat Description: "The degree of confidence in a conclusion or assertion." Value: CodeableConcept -Abstract Element: PresenceAssertion // AssertPresence +Abstract Element: PresenceAssertion Based on: ExistenceAssertion Description: "Statement that a finding is present." - PresentOrAbsent is SCT#52101004 "Present (qualifier value)" + Value is SCT#52101004 "Present (qualifier value)" 0..1 Onset 0..1 Abatement 0..1 Certainty from PresenceCertaintyVS @@ -292,14 +285,15 @@ Description: "Statement that a finding is present." Abstract Element: AbsenceAssertion Based on: ExistenceAssertion Description: "Statement that an entity, person, role, condition, or phenomenon is absent." + Value is SCT#2667000 "Absent (qualifier value)" 0..1 Certainty from AbsenceCertaintyVS -EntryElement: ConditionPresenceStatement +EntryElement: ConditionPresenceAssertion Based on: PresenceAssertion Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." //0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson -1..1 ObjectTypeCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered + DataItemCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation 0..* ConditionCause @@ -363,11 +357,11 @@ Description: "A condition that is or may be present in a subject. 'Condition' is -EntryElement: ConditionAbsenceStatement +EntryElement: ConditionAbsenceAssertion Based on: AbsenceAssertion Concept: MTH#C0277541 "no disease present" Description: "A finding that a condition is or was not present in the subject at a certain time or time period, not necessarily the time the information is gathered." - ObjectTypeCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered + DataItemCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt index a68c9ede..39f353af 100644 --- a/spec/cimi_statement_map.txt +++ b/spec/cimi_statement_map.txt @@ -12,7 +12,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs // RecordStatus maps to extension // _Entry.CosignedBy maps to extension // _Entry.VerifiedBy maps to extension - ObservableCode maps to code + DataItemCode maps to code FindingMethod maps to method AdditionalText maps to comment // Media maps to extension @@ -27,12 +27,12 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.Type maps to referenceRange.type ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age - DataItem maps to component (slice on = coding.code; slice strategy = includes) - DataItem._Concept maps to component.code - DataItem.Value maps to component.value[x] - DataItem.ExceptionValue maps to component.dataAbsentReason - //DataItem.Interpretation maps to component.interpretation - DataItem.ReferenceRange maps to component.referenceRange + DataElementItem maps to component (slice on = coding.code; slice strategy = includes) + DataElementItem._Concept maps to component.code + DataElementItem.Value maps to component.value[x] + DataElementItem.ExceptionValue maps to component.dataAbsentReason + //DataElementItem.Interpretation maps to component.interpretation + DataElementItem.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) @@ -53,7 +53,7 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us // RecordStatus maps to extension // _Entry.CosignedBy maps to extension // _Entry.VerifiedBy maps to extension - ObservableCode maps to code + DataItemCode maps to code FindingMethod maps to method AdditionalText maps to comment // Media maps to extension @@ -68,12 +68,12 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us ReferenceRange.Type maps to referenceRange.type ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age - DataItem maps to component (slice on = coding.code; slice strategy = includes) - DataItem._Concept maps to component.code - DataItem.Value maps to component.value[x] - DataItem.ExceptionValue maps to component.dataAbsentReason - //DataItem.Interpretation maps to component.interpretation - DataItem.ReferenceRange maps to component.referenceRange + DataElementItem maps to component (slice on = coding.code; slice strategy = includes) + DataElementItem._Concept maps to component.code + DataElementItem.Value maps to component.value[x] + DataElementItem.ExceptionValue maps to component.dataAbsentReason + //DataElementItem.Interpretation maps to component.interpretation + DataElementItem.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) @@ -86,17 +86,17 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us Encounter maps to context DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta -ConditionPresenceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: +ConditionPresenceAssertion maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: // _Entry.CreationTime maps to assertedDate // why doesn't this work? // Patient maps to subject // SourceOfInformation.Value maps to asserter // why doesn't this work? Category maps to category - ObjectTypeCode maps to code + DataItemCode maps to code constrain bodySite to 0..0 AnatomicalLocation maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Encounter maps to context ClinicalStatus maps to clinicalStatus - VerificationStatus maps to verificationStatus + FindingStatus maps to verificationStatus Onset maps to onset[x] Abatement maps to abatement[x] Severity maps to severity @@ -105,6 +105,6 @@ ConditionPresenceStatement maps to http://hl7.org/fhir/us/core/StructureDefiniti Stage.StageDetail maps to stage.assessment -ConditionAbsenceStatement maps to Basic: +ConditionAbsenceAssertion maps to Basic: // There is no mechanism in FHIR (not Condition, not Observation) to say "Patient does not have Condition X" diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 1f30dc1d..76df2aae 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -418,19 +418,19 @@ Description: "The measurement or linear extent of something from end to end; the Units with Coding from UnitsOfLengthVS Element: Depth -Based on: DataItem +Based on: DataElementItem Concept: SCT#131197000 "Depth (qualifier value)" Description: "The extent downward or inward; the perpendicular measurement from the surface downward to determine deepness." Value: Quantity with units UCUM#cm Element: Area -Based on: DataItem +Based on: DataElementItem Concept: SCT#42798000 "Area (qualifier value)" Description: "The extent of a 2-dimensional surface enclosed within a boundary." Value: Quantity with units UCUM#cm2 Element: ClockDirection -Based on: CodedDataItem +Based on: CodedDataElement Concept: LNC#72294-2 Description: "A direction indicated by an angle relative to 12 o'clock." Value: CodeableConcept from ClockDirectionVS diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 05ededc3..42fd78d8 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -42,8 +42,8 @@ Description: "The self-reported current and historical data about a person's eco A person's Employment Status could change over time, for example, a person could be employed following a period of choosing to not be in the labor force. Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 - ObservableCode is LNC#74165-2 "HistoryOfEmploymentStatus" -0..0 DataItem + DataItemCode is LNC#74165-2 "HistoryOfEmploymentStatus" +0..0 DataElementItem 0..0 FocalSubjectModifier EntryElement: RetirementDate @@ -53,8 +53,8 @@ Description: "A self-reported date that a person considers themselves to have A person can be both retired and employed (an Employment Status); most often, a person would be retired from one job and employed in another job. A person also can have more than one retirement date; for example, a person could retire from military service, then later retire from a civilian job. Multiple retirement dates should be recorded using multiple FHIR resources. Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." Value: dateTime - ObservableCode is LNC#87510-4 "Date of Retirement" -0..0 DataItem + DataItemCode is LNC#87510-4 "Date of Retirement" +0..0 DataElementItem 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. 0..0 FocalSubjectModifier @@ -64,8 +64,8 @@ Concept: LNC#87511-2 Description: "Self-reported date range(s) when a person worked in what is considered a combat zone; sometimes called a hazardous duty work. Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones. Multiple periods in combat zone should be recorded using multiple FHIR resources." Value: TimePeriod - ObservableCode is LNC#87511-2 -0..0 DataItem + DataItemCode is LNC#87511-2 +0..0 DataElementItem 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. 0..0 FocalSubjectModifier // only patient @@ -77,29 +77,29 @@ Knowledge of person's Usual Work can potentially assist in diagnosis, treatment Example: a person has worked for a total of 30 years as a 'secretary' (Occupation), but in various industries, mostly hotel construction. Her Usual Occupation is 'secretary' and her Usual Industry is 'hotel construction.' Usual Work does not include work that was unpaid or voluntary." Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 - ObservableCode is LNC#21843-8 - DataItem + DataItemCode is LNC#21843-8 + DataElementItem includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration 1..1 RelevantTime RelevantTime value is type TimePeriod Element: UsualIndustry - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#21844-6 "History of Usual industry" Description: "The industry (type of business) which the subject has worked in for the longest duration while in the usual occupation. For example, a person who has spent 30 years as a secretary in various industries, but mostly in construction, would record a usual occupation of secretary and a usual industry of construction." // "A history of this observation is not retained. Actually past versions of the observation could be retained, but the panel should refer to the latest one only. //Value: CodeableConcept from IndustryVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - ObservableCode is LNC#21844-6 "History of Usual industry" + DataItemCode is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#74163-7 "Usual occupation duration" Description: "The total time spent on an activity, inclusive of all time intervals, whether continuous or interrupted." Value: Quantity with units UCUM#a - ObservableCode is LNC#74163-7 "Usual occupation duration" + DataItemCode is LNC#74163-7 "Usual occupation duration" EntryElement: PastOrPresentJob Based on: CodedSocialHistoryObservation @@ -109,9 +109,9 @@ A person can have more than one job at the same time and multiple jobs over time A person's job can be a social determinant of their health and information about a person's job can support patient care, population health, and public health. In patient care, knowledge of a person's past or present job(s) can impact recognition, diagnosis, management, and treatment of injuries and illnesses. These data also can be used for clinical decision support and to prompt discussion of preventive care measures. For example, a record of jobs that require prolonged time in the sun might prompt a health care provider to inquire if the person wears protective clothing or sunscreen while working. At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." 0..0 Value - ObservableCode is LNC#11341-5 "History of Occupation" + DataItemCode is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization - DataItem + DataElementItem includes 0..1 Occupation includes 0..1 PastOrPresentIndustry includes 0..1 WorkClassification @@ -126,7 +126,7 @@ includes 0..1 IsCurrentJob RelevantTime value is type TimePeriod Element: Occupation - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#85659-1 "Occupation CDC Census code" Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 @@ -144,71 +144,69 @@ includes 0..1 IsCurrentJob Description: "An Organization as defined in FHIR" Element: PastOrPresentIndustry - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#86188-0 Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." // Value: CodeableConcept from IndustryVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - ObservableCode is LNC#86188-0 + DataItemCode is LNC#86188-0 Element: WorkClassification - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#85104-8 "Compensation and sector employment type" Description: "Type of compensation and sector for a person's job, such as 'paid work, self-employed' or 'voluntary work', as reported by the person." //Value: CodeableConcept from WorkClassificationVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 - ObservableCode is LNC#85104-8 "Compensation and sector employment type" + DataItemCode is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#87707-6 Description: "A coded indicator of responsibilities for directing work and personnel management responsibilities for a person's job, as reported by the person. For US military jobs, this is pay grade." //Value: CodeableConcept from SupervisoryLevelVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 - ObservableCode is LNC#87707-6 + DataItemCode is LNC#87707-6 Element: JobDuty - Based on: DataItem + Based on: DataElementItem Concept: LNC#63761-1 Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " Value: string - 0..0 ReferenceRange - ObservableCode is LNC#63761-1 + DataItemCode is LNC#63761-1 Element: OccupationalHazard - Based on: DataItem + Based on: DataElementItem Concept: LNC#87729-0 Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." Value: string - 0..0 ReferenceRange - ObservableCode is LNC#87729-0 + DataItemCode is LNC#87729-0 Element: WorkSchedule - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#74159-5 Description: "Typical arrangement of working hours for a person's job, as reported by the person." //Value: CodeableConcept from WorkScheduleVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 - ObservableCode is LNC#74159-5 + DataItemCode is LNC#74159-5 Element: WeeklyWorkDays - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#74160-3 Description: "The average number of days per week that a person spends performing their duties for work." Value: Quantity with units UCUM#d 0..0 ReferenceRange Element: DailyWorkHours - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#87512-0 Description: "The average number of hours in a day that a person spends performing their duties for work." Value: Quantity with units UCUM#h + DataItemCode is LNC#87512-0 0..0 ReferenceRange - ObservableCode is LNC#87512-0 // Last minute addition 8/17 based on Genny's comment Element: IsCurrentJob - Based on: CodedDataItem + Based on: CodedDataElement Description: "A flag indicating if this is the person's current job (at the time the resource was last updated)." Value: CodeableConcept from YesNoVS @@ -246,7 +244,7 @@ Value: 0..1 CodeableConcept /* UsualWork is in the value element Element: UsualWork - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#21843-8 "History of Usual Occupation" // Occupation is LNC#74287-4 Description: "A person's work or business" Value: CodeableConcept from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 // VS defined in FHIR 3.2 and not found in 3.0.1 @@ -255,8 +253,8 @@ EntryElement: MilitaryServiceHistory Based on: CodedSocialHistoryObservation Description: "History of service in the US military." Category is OBSCAT#social-history - ObservableCode is MTH#C3714797 - DataItem + DataItemCode is MTH#C3714797 + DataElementItem includes 1..1 MilitaryStatus includes 0..1 MilitaryServiceDischargeStatus includes 0..1 MilitaryBranch @@ -267,30 +265,30 @@ includes 0..1 ServiceConnectedDisability Element: MilitaryStatus Concept: MTH#C1550416 - Based on: CodedDataItem + Based on: CodedDataElement Description: "The current connection to the US military." Value: CodeableConcept from MilitaryStatusVS Element: MilitaryServiceDischargeStatus Concept: TBD - Based on: CodedDataItem + Based on: CodedDataElement Description: "How the subject was formally discharged from the US Military." Value: CodeableConcept from MilitaryServiceDischargeStatusVS Element: MilitaryBranch Concept: MTH#C2129058 - Based on: CodedDataItem + Based on: CodedDataElement Description: "The branch of the US military that the subject has served." Value: CodeableConcept from USMilitaryBranchVS Element: MilitaryServiceEra Concept: TBD - Based on: CodedDataItem + Based on: CodedDataElement Description: "The time period of US military service." Value: CodeableConcept from MilitaryServiceEraVS Element: ServiceConnectedDisability - Based on: DataItem + Based on: DataElementItem Concept: TBD Description: "Percentage disability resulting from US Military Service." Value: Quantity with units UCUM#% diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index b4c6efda..6829637f 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -5,14 +5,14 @@ Target: FHIR_STU_3 // do not map to US Core Results -- Brett says that's only for labs SocialHistoryObservation maps to Observation: Patient maps to subject - ObservableCode maps to code + DataItemCode maps to code Category maps to category - DataItem maps to component (slice on = coding.code; slice strategy = includes) - DataItem._Concept maps to component.code - DataItem.Value maps to component.value[x] - DataItem.ExceptionValue maps to component.dataAbsentReason -// DataItem.Interpretation maps to component.interpretation - DataItem.ReferenceRange maps to component.referenceRange + DataElementItem maps to component (slice on = coding.code; slice strategy = includes) + DataElementItem._Concept maps to component.code + DataElementItem.Value maps to component.value[x] + DataElementItem.ExceptionValue maps to component.dataAbsentReason +// DataElementItem.Interpretation maps to component.interpretation + DataElementItem.ReferenceRange maps to component.referenceRange // constrain related to 0..0 Value maps to value[x] // ExceptionValue maps to dataAbsentReason diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index 1dee250e..ab555106 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -39,10 +39,10 @@ Description: "Specimen resulting from biopsy or excision of breast and surroundi Value: TimePeriod EntryElement: BreastCancerPresenceStatement -Based on: ConditionPresenceStatement +Based on: ConditionPresenceAssertion Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." - ObjectTypeCode from BreastCancerTypeVS + DataItemCode from BreastCancerTypeVS Stage.StageDetail value is type BreastCancerStage 0..1 FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding AnatomicalLocation is type BreastSite @@ -60,9 +60,9 @@ Based on: Observation Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. Description: "The stage of a breast cancer. Different staging systems use different staging groups, so there are currently no terminology bindings associated with this class." Value: CodeableConcept should be from http://loinc.org/LL240-3 - ObservableCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" + DataItemCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" 0..1 StageTimingPrefix - DataItem + DataElementItem includes 0..1 BreastCancerPrimaryTumorClassification includes 0..1 BreastCancerRegionalNodesClassification includes 0..1 BreastCancerDistantMetastasesClassification @@ -84,14 +84,14 @@ includes 0..1 BreastCancerHistologicGrade Element: BreastCancerPrimaryTumorClassification Concept: SCT#78873005 "T category" - Based on: CodedDataItem + Based on: CodedDataElement Description: "The size and extent of the primary tumor, based on criteria defined by the staging system being used." Value: CodeableConcept 0..1 StageSuffix Element: BreastCancerRegionalNodesClassification Concept: SCT#277206009 "N category" //RMB: was LNC#59525-6, which is specific to AJCC 7th edition - Based on: CodedDataItem + Based on: CodedDataElement Description: "The presence of metastases in regional lymph nodes, based on criteria defined by the staging system being used." Value: CodeableConcept 0..1 StageSuffix @@ -103,7 +103,7 @@ includes 0..1 BreastCancerHistologicGrade Element: BreastCancerDistantMetastasesClassification Concept: SCT#277208005 "M category (observable entity)" //RMB: was LNC#59522-3, which is specific to AJCC 7th edition - Based on: CodedDataItem + Based on: CodedDataElement Description: "The presence of distant metastases, based on criteria defined by the staging system being used." Value: CodeableConcept @@ -114,7 +114,7 @@ Based on: SimpleCodedLaboratoryObservation Description: "An evaluation of the size and shape of the nucleus in tumor cells and the percentage of tumor cells that are in the process of dividing or growing. Cancers with low nuclear grade grow and spread less quickly than cancers with high nuclear grade." Value: CodeableConcept from NuclearGradeVS Specimen is type BreastSpecimen - ObservableCode is MTH#C18513 + DataItemCode is MTH#C18513 DiagnosticService is #pathology @@ -124,10 +124,10 @@ Based on: CodedLaboratoryObservation Description: "The Elston Grade/Nottingham Score, representative of the aggressive potential of the tumor. Well differentiated cells (Grade 1) look similar to normal cells and are usually slow growing, while poorly differentiated cells (Grade 3) look very different than normal and are fast-growing." Value: CodeableConcept from NottinghamCombinedGradeVS ExceptionValue from NottinghamNullVS - ObservableCode is LNC#44648-4 + DataItemCode is LNC#44648-4 Specimen is type BreastSpecimen DiagnosticService is #pathology - DataItem + DataElementItem includes 0..1 TubuleFormationScore includes 0..1 NuclearPleomorphismScore includes 0..1 MitoticCountScore @@ -136,21 +136,21 @@ includes 0..1 MitoticCountScore //RMB: the CAP form has two additional options for each of these subcomponents: "only microinvasion present" and "no residual invasive carcinoma", both of which are situations where a histologic grade wouldn't be assigned. Because the our exceptions value set doesn't handle these options (and possibly others related to other data elements, should we allow for a string option to contain reasons for missing data? Otherwise the expection value set might become unruly. Element: TubuleFormationScore Concept: LNC#85321-8 "Granular differentiation" // SHOULD BE LOINC - Based on: CodedDataItem + Based on: CodedDataElement Description: "Glandular differentiation [Score] in Breast cancer specimen Qualitative by Nottingham." Value: CodeableConcept from TubuleFormationScoreVS //TODO: Determine if it is better to use codes as opposed to a number 1, 2 or 3. Observations don't support integer or posInteger ExceptionValue from NottinghamComponentNullVS Element: NuclearPleomorphismScore Concept: LNC#44645-0 - Based on: CodedDataItem + Based on: CodedDataElement Description: "Nuclear pleomorphism in Breast tumor Qualitative by Nottingham." Value: CodeableConcept from NuclearPleomorphismScoreVS ExceptionValue from NottinghamComponentNullVS Element: MitoticCountScore Concept: LNC#85300-2 - Based on: CodedDataItem + Based on: CodedDataElement Description: "Mitotic rate [Score] in Breast cancer specimen Qualitative by Nottingham." Value: CodeableConcept from MitoticCountScoreVS // 1 to 3 //RMB: this shouldn't be different from TubuleFormationScore and NuclearPleomorphismScore. They have the same scoring mechanism. Suggest using local codes. ExceptionValue from MitoticCountScoreNullVS @@ -161,10 +161,10 @@ Concept: LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" Description: "Estrogen receptor alpha is the predominant estrogen receptor expressed in breast tissue and is overexpressed in around 50% of breast carcinomas. ER status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options. The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." Value: CodeableConcept from PositiveNegativeVS - ObservableCode is LNC#16112-5 + DataItemCode is LNC#16112-5 DiagnosticService is #pathology Specimen is type BreastSpecimen - DataItem + DataElementItem includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers @@ -183,25 +183,24 @@ Concept: LNC#16113-3 Description: "Progesterone receptor status is a factor in determining prognosis and treatment options. The value is the percentage of cells that test (stain) positive for the presence of a receptor. The interpretation of positive or negative (found in the interpretation property) is based on the staining percentage, and may take into account the staining intensity. Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." Value: CodeableConcept from PositiveNegativeVS - ObservableCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" + DataItemCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" DiagnosticService is #pathology Specimen is type BreastSpecimen - DataItem + DataElementItem includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers Element: NuclearPositivity - Based on: DataItem + Based on: DataElementItem Concept: TBD // apparently no LOINC code Description: "The percentage of cells that test (stain) positive for the presence of a receptor. We are seeking feedback on whether nuclear positivity should be an exact percentage or a range of percentages. As currently defined, an exact nuclear positivity could be represented by a zero-width range, where the lower and upper bounds would be the same number." Value: Range - 0..0 ReferenceRange Element: AverageStainingIntensity Concept: SCT#444775005 "Average intensity of positive staining neoplastic cells (observable entity)" - Based on: CodedDataItem + Based on: CodedDataElement Description: "The degree or magnitude of staining (nuclear positivity) across cells in the specimen." Value: CodeableConcept from StainingIntensityVS @@ -210,12 +209,12 @@ Based on: CodedLaboratoryObservation Concept: LNC#48676-1 "HER2 [Interpretation] in Tissue" Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." Value: CodeableConcept from PositiveNegativeEquivocalVS - ObservableCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" + DataItemCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" DiagnosticService is #pathology Specimen is type BreastSpecimen 0..0 Precondition 0..0 FindingMethod -0..0 DataItem +0..0 DataElementItem PanelMembers.Observation includes 0..* HER2byIHC includes 0..* HER2byFISH @@ -228,22 +227,22 @@ Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (I Value: CodeableConcept from HER2byIHCScoreVS ExceptionValue from HER2byIHCScoreNullVS Interpretation from PositiveNegativeEquivocalVS - ObservableCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" -0..0 FindingMethod // pre-coordinated in the ObservableCode + DataItemCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" +0..0 FindingMethod // pre-coordinated in the DataItemCode DiagnosticService is #pathology 0..0 Precondition Specimen is type BreastSpecimen - DataItem + DataElementItem includes 0..1 CompleteMembraneStainingPercent 0..0 PanelMembers Element: CompleteMembraneStainingPercent - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#85328-3 "Cells.HER2 uniform intense membrane staining/100 cells" Description: "Percentage of cells with uniform intense complete membrane staining." Value: Quantity with units UCUM#% // TODO: Percentage causes CLI error 0..0 ReferenceRange - 0..0 Interpretation +// 0..0 Interpretation EntryElement: HER2byFISH Based on: LaboratoryObservation @@ -251,37 +250,34 @@ Concept: LNC#85318-4 // Corrected 5/12/2018 by MK Description: "HER2 receptor status as determined by single-probe or dual-probe Fluorescence In Situ Hybridization (FISH)." 0..0 Value 0..0 ExceptionValue - ObservableCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" + DataItemCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" FindingMethod from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS DiagnosticService is #pathology 0..0 Precondition Specimen is type BreastSpecimen - DataItem + DataElementItem includes 0..1 AverageHER2SignalsPerCell includes 0..1 AverageCEP17SignalsPerCell includes 0..1 HER2toCEP17Ratio 0..0 PanelMembers Element: AverageHER2SignalsPerCell - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#74860-8 Description: "Average number of HER2 signals per cell" - Value: Quantity 0..0 ReferenceRange Element: AverageCEP17SignalsPerCell - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#74861-6 Description: "Average number CEP17 signals per cell (dual probe only)" - Value: Quantity 0..0 ReferenceRange Element: HER2toCEP17Ratio - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#49683-6 Description: "HER2 to CEP17 Ratio (dual probe only)" - Value: Quantity 0..0 ReferenceRange EntryElement: OncotypeDxInvasiveRecurrenceScore @@ -290,7 +286,7 @@ Concept: MTH#C1709318 Description: "The Oncotype DX test for invasive breast cancer examines the activity of 21 genes in a patient’s breast tumor tissue to provide personalized information for tailoring treatment based on the biology of their individual disease. The value from 0 to 100 indicates the estimated risk of recurrence, with the highest risk indicated by a score greater than 31. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" Value: Quantity with units UCUM#1 - ObservableCode is MTH#C1709318 + DataItemCode is MTH#C1709318 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type ref(BreastSpecimen) @@ -302,7 +298,7 @@ Concept: MTH#C3898101 Description: "The Oncotype DX test for DCIS (Ductal Carcinoma in Situ) breast cancer. Risk scores range from 0 to 100 with the following interpretations: 0-38: Low-Risk, 39-54: Intermediate-Risk, 55+: High-Risk. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" Value: Quantity with units UCUM#1 - ObservableCode is MTH#C3898101 + DataItemCode is MTH#C3898101 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -313,7 +309,7 @@ Concept: LNC#76544-6 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Prosigna. The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Risk of Recurrence Score in the literature), which is correlated with the probability of distant recurrence at ten years for post-menopausal women with hormone receptor positive, early stage breast cancer." Value: Quantity with units UCUM#1 - ObservableCode is LNC#76544-6 + DataItemCode is LNC#76544-6 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -325,7 +321,7 @@ Description: "Breast cancer genomic signature assay for 10-year risk of distant In the United States, MammaPrint can only be used on cancers that are stage I or stage II, invasive, smaller than 5 centimeters, and estrogen-receptor-positive or -negative. Scores range from -1.0 to +1.0, with scores less than 0 indicating high risk, and scores greater than 0 indicating low risk. The is currently no LOINC code for Mammaprint test." Value: Quantity - ObservableCode is MTH#C2827401 + DataItemCode is MTH#C2827401 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -336,11 +332,11 @@ Based on: Observation Concept: MTH#C0421176 "Progression" Description: "A finding related to the current trend of a particular existing disease. This concept is most often used for chronic and incurable diseases where the status and trendline of the disease is an important determinant of therapy and prognosis. The specific disorder being evaluated must be cited in the Focus_Reference or Focus_CodeableConcept as a reference to a Condition." Value: CodeableConcept from ProgressionVS - ObservableCode is MTH#C0421176 "Progression" + DataItemCode is MTH#C0421176 "Progression" 0..* ProgressionEvidence // "ProgressionEvidence" is somewhat related to FindingMethod, which represents the test or procedure used to generate the result; it is typically a LOINC code (0..1) 0..0 Specimen -0..0 DataItem +0..0 DataElementItem 0..0 Precondition 0..0 ReferenceRange // applies to a quantitative measurement only @@ -353,90 +349,90 @@ Value: CodeableConcept from ProgressionVS /* Element: Aneusomy - Based on: CodedDataItem + Based on: CodedDataElement Concept: CAP#30478 Description: "Aneusomy (as defined by vendor kit used)" Value: CodeableConcept from YesNoVS Element: HeterogeneousSignals - Based on: CodedDataItem + Based on: CodedDataElement Concept: CAP#30482 Description: "Whether In Situ Hybridization signals were heterogeneous." Value: CodeableConcept from YesNoVS Element: PercentageAmplified - Based on: DataItem + Based on: DataElementItem Concept: CAP#31073 Description: "Percentage of cells with amplified HER2 signals" Value: Quantity with units UCUM#% Element: NuclearPositivity - Based on: DataItem + Based on: DataElementItem Concept: TBD Description: "The percentage of cells that test (stain) positive for the presence of a receptor." Value: Range Element: PrimaryAntibody - Based on: CodedDataItem + Based on: CodedDataElement Concept: CAP#31092 Description: "" Value: CodeableConcept Element: StainingControl - Based on: CodedDataItem + Based on: CodedDataElement Concept: CAP#25895 Description: "Whether control cells were present." Value: CodeableConcept from StainingControlVS if covered Element: AllredProportionScore Concept: CAP#31054 - Based on: DataItem + Based on: DataElementItem Description: "Part of Allred scoring, based on the percentage of cells that stain for a receptor, on a scale of 0 to 5." Value: Quantity with units UCUM#1 Element: AllredIntensityScore Concept: CAP#29749 - Based on: DataItem + Based on: DataElementItem Description: "Part of the Allred scoring, based on the intensity of that staining, on a scale of 0 to 3." Value: Quantity with units UCUM#1 Element: AllredTotalScore Concept: CAP#31056 - Based on: DataItem + Based on: DataElementItem Description: "The total Allred score, the total of proportion and intensity scores, from 0 to 8." Value: Quantity with units UCUM#1 // unsignedInt - limit to max of 8 Element: OtherReceptorScoringSystem Concept: CAP#31062 - Based on: CodedDataItem + Based on: CodedDataElement Description: "A scoring system other than Allred." EntryElement: TumorDimensions Based on: SimpleCodedObservation Concept: MTH#C4086369 0..0 Value - ObservableCode is TBD#TBD + DataItemCode is TBD#TBD DiagnosticService is #pathology - DataItem + DataElementItem includes 0..1 TumorPrimaryDimensionSize includes 0..1 TumorSecondaryDimensionSize includes 0..1 SizeOfGrossTumorBed Element: TumorPrimaryDimensionSize Description: "The longest diameter of the primary tumor." - Based on: DataItem + Based on: DataElementItem Concept: TBD Value: Quantity with units UCUM#mm Element: TumorSecondaryDimensionSize Description: "The longest perpendicular diameter of the primary tumor." - Based on: DataItem + Based on: DataElementItem Concept: TBD Value: Quantity with units UCUM#mm Element: SizeOfGrossTumorBed - Based on: DataItem + Based on: DataElementItem Concept: TBD Description: "The largest dimension of the gross tumor bed/fibrotic area." Value: Quantity with units UCUM#mm @@ -447,9 +443,9 @@ Based on: SimpleCodedObservation Concept: MTH#C4086369 Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." Value: CodeableConcept from PositiveNegativeVS - ObservableCode is MTH#C4086369 + DataItemCode is MTH#C4086369 DiagnosticService is #pathology - DataItem + DataElementItem includes 0..1 TumorMarginDescription includes 0..1 Cellularity // not sure this belongs here includes 0..1 PercentageInSituCarcinoma // not sure this belongs here @@ -457,18 +453,18 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Element: TumorMarginDescription Concept: TBD - Based on: CodedDataItem + Based on: CodedDataElement Description: "Description of the edge or border of tumor in situ by radiologist or of removed tumor by pathologist." Value: CodeableConcept from TumorMarginDescriptionVS Element: Cellularity Concept: MTH#C4055283 - Based on: DataItem + Based on: DataElementItem Description: "Percentage of cells in a sample that are cancerous" Value: Quantity with units UCUM#% Element: PercentageInSituCarcinoma - Based on: DataItem + Based on: DataElementItem Concept: TBD Description: "The percentage of the cancer that is in situ, as opposed to invading other tissues." Value: Quantity with units UCUM#% @@ -480,9 +476,9 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Concept: MTH#C4049944 Description: "Ki-67 is a protein phosphatase whose expression is strongly associated with cell proliferation and encoded by the MKI67 gene. The Ki67 labeling index is the fraction of Ki-67-positive cells to total cells in a tumor specimen and may be useful for determining prognosis with respect to survival and disease recurrence. The more positive cells there are, the more quickly they are dividing and forming new cells. ReferenceRange: Low <10, Intermediate 10-20, >20 High" Value: Quantity with units UCUM#% - ObservableCode is LNC#29593-1 + DataItemCode is LNC#29593-1 DiagnosticService is #pathology - DataItem + DataElementItem includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered Element: S-PhaseFraction @@ -491,7 +487,7 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Description: "An expression of the number of mitoses found in a stated number of cells. The S-phase fraction number tells you what percentage of cells in the tissue sample are in the process of copying their genetic information (DNA). This S-phase, short for synthesis phase, happens just before a cell divides into two new cells. ReferenceRange: Low <6, Intermediate 6-10, >10 High." Value: Quantity with units UCUM#% DiagnosticService is #pathology - ObservableCode is LNC#29593-1 + DataItemCode is LNC#29593-1 EntryElement: GeneticVariant Based on: Observation @@ -504,11 +500,11 @@ Value: CodeableConcept from PositiveNegativeVS 0..0 ReferenceRange 0..0 DeltaFlag 0..0 AnatomicalLocation - DataItem + DataElementItem includes 0..1 Refseq Element: Refseq - Based on: DataItem + Based on: DataElementItem Concept: TBD Description: "The Reference Sequence (RefSeq) collection provides a comprehensive, integrated, non-redundant, well-annotated set of sequences, including genomic DNA, transcripts, and proteins. RefSeq sequences form a foundation for medical, functional, and diversity studies. They provide a stable reference for genome annotation, gene identification and characterization, mutation and polymorphism analysis (especially RefSeqGene records), expression studies, and comparative analyses." Value: CodeableConcept from RefseqVS @@ -517,9 +513,9 @@ EntryElement: BreastCancerGeneticAnalysisObservation Concept: TBD Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." - Observation.ObservableCode is TBD#TBD + Observation.DataItemCode is TBD#TBD DiagnosticService is #genetics -0..0 DataItem +0..0 DataElementItem PanelMembers.EvaluationresultRecorded includes 1..1 BRCA1Variant includes 1..1 BRCA2Variant diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 7ea5149e..0f010746 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -65,14 +65,14 @@ See https://s.details.loinc.org/LOINC/39135-9.html?sections=Comprehensive //------------- Wound Absence or Presence --------------- EntryElement: WoundPresenceAssertion -Based on: ConditionPresenceStatement +Based on: ConditionPresenceAssertion Concept: SCT#416462003 "Wound (disorder)" // LNC#72300-7 Wound Type? Description: "A determination that a particular type of wound that exists at a particular body site. The WoundIdentifier serves as a link between this assertion and assessments of the wound that might occur at later times. Multiple wound assessments can be associated with a single wound." Onset value is type dateTime // nowhere to put code LOINC 85585-8 Date of Onset {mm/dd/yyyy} Abatement value is type dateTime // nowhere to put code 88878-4 Date of abatement {mm/dd/yyyy} 1..1 Category is OBSCAT#exam -1..1 ObjectTypeCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered +1..1 DataItemCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered 0..1 ObjectIdentifier is type WoundIdentifier 0..1 ConditionCause is type WoundTypeEtiology 1..1 AnatomicalLocation is type WoundAnatomicalLocation @@ -102,10 +102,10 @@ The WoundIdentifier serves as a link between this assertion and assessments of t EntryElement: WoundAbsenceAssertion -Based on: ConditionAbsenceStatement +Based on: ConditionAbsenceAssertion Description: "Documents the absence of a wound at a given body site. No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicalLocation." -1..1 ObjectTypeCode is SCT#416462003 "Wound (disorder)" +1..1 DataItemCode is SCT#416462003 "Wound (disorder)" 1..1 Category is OBSCAT#exam 1..1 AnatomicalLocation is type WoundAnatomicalLocation @@ -121,10 +121,10 @@ Description: "Group of observations regarding the properties and severity of a w 0..0 ExceptionValue 0..0 AnatomicalLocation // carried by wound assertion 0..0 Device - ObservableCode is LNC#39135-9 + DataItemCode is LNC#39135-9 0..0 ReferenceRange Media is type PhotographicImage // 72170-4 Photographic image [Media] - DataItem + DataElementItem includes 0..1 WoundEpisode // very similar to Episodicity or ClinicalStatus, but value set is different. includes 0..1 WoundTrend includes 0..1 WoundPeriwoundDescription // 72301-5 Description of Periwound @@ -143,46 +143,46 @@ includes 0..1 WoundExudateObservation // 72292-6 Wound exudate observation includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Element: WoundEpisode - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#89252-1 "Episode of Wound" Description: "Wound episode refers to a period of the wound, an incident in the course of a wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.4/expansion Element: WoundPeriwoundDescription - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#72301-5 Description: "A description of the skin around the wound (periwound). Color, induration, warmth and edema should be assessed. Redness of the surrounding skin can be indicative of unrelieved pressure. Irritation of the surrounding skin can result from exposure to feces or urine, a reaction to the dressing or tape, or inappropriate removal of dressing or tape. Redness, tenderness, warmth and swelling are classical clinical signs of infection. [Reference: Brown, P., 2009]" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.2/expansion //could be from http://loinc.org/vs/LL2216-1 Element: WoundVisibleInternalStructure - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#89250-5 Description: "Exposed body structures, devices, and/or foreign bodies visible by the naked eye in a wound." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.1/expansion // should be from http://loinc.org/vs/LL4935-4 Element: WoundPressureUlcerAssociation - Based on: CodedDataItem + Based on: CodedDataElement Concept: TBD Description: "Is the wound associated with a device or pressure point?" Value: CodeableConcept from YesNoUnknownVS Element: WoundTunnelingPresentOrAbsent - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#72298-3 Description: "The presence or absence of wound tunneling." Value: CodeableConcept from PresentAbsentVS // LOINC: should re-use the same Snomed codes for Present-Absent Element: WoundUnderminingPresentOrAbsent - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#72295-9 Description: "The presence or absence of wound undermining." Value: CodeableConcept from PresentAbsentVS Element: WoundExudatePresentOrAbsent - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#89259-6 Description: "The presence or absence of wound exudate." Value: CodeableConcept from PresentAbsentVS @@ -194,7 +194,7 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Value: CodeableConcept from http://loinc.org/vs/LL3816-7 if covered // underpowered? 'normal' and 'other' Element: WoundTrend - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#89253-9 Description: "Whether a condition is improving, worsening, stable, or resolved." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.5/expansion // should be from http://loinc.org/vs/LL4938-8 with values improved, deteriorated, stablized or resolved. Resolved is missing from the VS in VSAC @@ -206,73 +206,75 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89254-7 Description: "The appearance of the base (bed) of the wound, together with the percentage of the bed with each type of appearance." 1..1 WoundIdentifier - ObservableCode is LNC#89254-7 + DataItemCode is LNC#89254-7 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DataItem + DataElementItem includes 1..1 WoundBedAppearance includes 1..1 WoundBedAppearancePercentage Element: WoundBedAppearance - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#72371-8 Description: "Appearance of wound base (bed)." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.6/expansion //could be from http://loinc.org/vs/LL2237-7 Element: WoundBedAppearancePercentage - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#72370-0 Description: "Area of wound bed appearance/Entire ​Area of wound bed." - Value: Quantity with units UCUM#% + Value: Quantity with units UCUM#% + 0..0 ReferenceRange EntryElement: WoundBedColorObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: TBD Description: "Color of part or all of the wound base (bed), and the percentage of the area with that color." 1..1 WoundIdentifier - ObservableCode is TBD#TBD + DataItemCode is TBD#TBD 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DataItem + DataElementItem includes 1..1 WoundBedColor includes 1..1 WoundBedColorAreaPercentage // LOINC: Why precoordinate a general concept such as 'color' with the concept of wound bed? Element: WoundBedColor - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#39132-6 Description: "Color of Wound base (bed)." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.7/expansion //could be from http://loinc.org/vs/LL2338-3 // LOINC: Why precoordinate a general concept such as 'percentage of area' with the concept of wound bed? Element: WoundBedColorAreaPercentage - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#89255-4 Description: "Wound bed area identified by color/​Area of wound bed." Value: Quantity with units UCUM#% + 0..0 ReferenceRange EntryElement: WoundEdgeObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89256-2 Description: "The state of the tissue at the edge of the wound." 1..1 WoundIdentifier - ObservableCode is LNC#89256-2 + DataItemCode is LNC#89256-2 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DataItem + DataElementItem includes 1..1 WoundEdgeDescription includes 0..1 WoundEdgeColor // LOINC:Is the entire edge of the wound described by one color? Or should it be by percentage, similar to the wound bed? // LOINC: Why precoordinate a general concept such as 'color' with the concept of wound edge? Element: WoundEdgeDescription - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#72304-9 Description: "Edge of wound description." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.8/expansion // could be from http://loinc.org/vs/LL2230-2 Element: WoundEdgeColor - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#39133-4 Description: "Color of Wound edge." Value: CodeableConcept could be from http://loinc.org/vs/LL2338-3 @@ -282,10 +284,10 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89257-0 Description: "A discharging blind-ended track that extends from the surface of an organ to an underlying area or abscess cavity. The track is invariably lined with granulation tissue. In chronic cases this may be augmented with epithelial tissue." 1..1 WoundIdentifier - ObservableCode is LNC#89257-0 + DataItemCode is LNC#89257-0 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DataItem + DataElementItem includes 0..1 WoundTunnelLength includes 0..1 WoundTunnelClockDirection @@ -293,14 +295,15 @@ includes 0..1 WoundTunnelClockDirection // LOINC: why precoordinate clock position + tunneling? Element: WoundTunnelLength - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#72296-7 Description: "Length of wound tunneling." Value: Quantity with units UCUM#cm + 0..0 ReferenceRange // LOINC: should require use the full clock position value set Element: WoundTunnelClockDirection - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#72297-5 Description: "Clock position of wound tunnel" Value: CodeableConcept from ClockDirectionVS @@ -310,23 +313,24 @@ EntryElement: WoundUnderminingObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89258-8 Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage around the wound margin. Undermining are narrow sinus tracts away from the wound margins and go downward into the wound." - ObservableCode is LNC#89258-8 + DataItemCode is LNC#89258-8 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DataItem + DataElementItem includes 0..1 WoundUnderminingLength includes 0..1 WoundUnderminingClockDirection Element: WoundUnderminingLength - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#72293-4 Description: "Length of wound undermining." Value: Quantity with units UCUM#cm + 0..0 ReferenceRange // LOINC: should require use the full clock position value set Element: WoundUnderminingClockDirection - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#72294-2 Description: "Clock position of wound undermining" Value: CodeableConcept from ClockDirectionVS @@ -335,11 +339,11 @@ EntryElement: WoundExudateObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72292-6 Description: "Description of the fluid produced by a wound." - ObservableCode is LNC#72292-6 + DataItemCode is LNC#72292-6 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DataItem + DataElementItem includes 0..1 WoundExudateAmount includes 0..1 WoundExudateVolume includes 1..1 WoundExudateAppearance @@ -349,32 +353,32 @@ includes 0..1 WoundExudateOdor // LOINC: Wound area should be in wound size panel, not wound exudate panel Element: WoundExudateAmount - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#39116-9 Description:"Drainage amount of wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.10/expansion //could be from http://loinc.org/vs/LL2222-9 Element: WoundExudateVolume - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#39122-7 Description:"Appearance of exudate from wound" Value: Quantity with units UCUM#mL Element: WoundExudateAppearance - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#72290-0 Description:"Appearance of exudate from wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.11/expansion //could be from http://loinc.org/vs/LL2220-3 Element: WoundExudateColor - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#72289-2 Description:"Color of exudate from wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.12/expansion // could be from http://loinc.org/vs/LL2219-5 Element: WoundExudateOdor - Based on: CodedDataItem + Based on: CodedDataElement Concept: LNC#72288-4 Description:"Odor of exudate from wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.13/expansion @@ -384,39 +388,43 @@ EntryElement: WoundSizeObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72287-6 Description: "The estimated or measured dimensions of a wound." - ObservableCode is LNC#72287-6 + DataItemCode is LNC#72287-6 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DataItem + DataElementItem includes 1..1 WoundLength includes 1..1 WoundWidth includes 0..1 WoundDepth includes 0..1 WoundArea Element: WoundLength - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#39126-8 Description: "Length of the wound (longest dimension)." Value: Quantity with units UCUM#cm + 0..0 ReferenceRange Element: WoundWidth - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#39125-0 Description: "Width of the wound (perpendicular to longest dimension)." Value: Quantity with units UCUM#cm + 0..0 ReferenceRange Element: WoundDepth - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#39127-6 Description: "Depth of the wound." Value: Quantity with units UCUM#cm + 0..0 ReferenceRange Element: WoundArea - Based on: DataItem + Based on: QuantitativeDataElement Concept: LNC#89260-4 Description: "Area of the wound." Value: Quantity with units UCUM#cm2 + 0..0 ReferenceRange /* Old Stuff Element: SupportSurface From 9521923b2eb25562dc71912c5ad6ae114a8be44f Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 16 Oct 2018 10:28:07 -0400 Subject: [PATCH 060/289] Merging CIMI back into SHR Some files really shouldn't be named CIMI --- spec/cimi_composition.txt | 2 +- spec/cimi_element.txt | 2 +- spec/cimi_entity.txt | 8 +- spec/cimi_procedure.txt | 2 +- spec/cimi_statement.txt | 526 ------------------ spec/cimi_statement_map.txt | 110 ---- spec/ig-cimi-config.json | 2 +- spec/shr_base.txt | 519 ++++++++++++++++- spec/shr_base_map.txt | 109 +++- ...{cimi_statement_vs.txt => shr_base_vs.txt} | 2 +- spec/shr_core.txt | 6 +- .../{cimi_encounter.txt => shr_encounter.txt} | 5 +- ...ncounter_map.txt => shr_encounter_map.txt} | 2 +- ..._encounter_vs.txt => shr_encounter_vs.txt} | 2 +- spec/shr_financial.txt | 2 +- spec/shr_occupation.txt | 20 +- spec/shr_occupation_map.txt | 12 +- spec/shr_oncology.txt | 52 +- spec/shr_research.txt | 2 +- spec/shr_wound.txt | 18 +- 20 files changed, 691 insertions(+), 712 deletions(-) delete mode 100644 spec/cimi_statement.txt delete mode 100644 spec/cimi_statement_map.txt rename spec/{cimi_statement_vs.txt => shr_base_vs.txt} (99%) rename spec/{cimi_encounter.txt => shr_encounter.txt} (98%) rename spec/{cimi_encounter_map.txt => shr_encounter_map.txt} (97%) rename spec/{cimi_encounter_vs.txt => shr_encounter_vs.txt} (98%) diff --git a/spec/cimi_composition.txt b/spec/cimi_composition.txt index 71e19afc..dfd369da 100644 --- a/spec/cimi_composition.txt +++ b/spec/cimi_composition.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.composition Description: "Documents, compositions, reports, and other structures involving multiple resources." -Uses: cimi.statement +Uses: shr.base EntryElement: Composition Based on: InformationItem diff --git a/spec/cimi_element.txt b/spec/cimi_element.txt index 537d162a..316f3412 100644 --- a/spec/cimi_element.txt +++ b/spec/cimi_element.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.element Description: "The Element Package defines reusable data elements that are used across multiple packages." -Uses: shr.core, shr.base, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.entity Element: Annotation diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index d5d69bdd..7287bec1 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -1,14 +1,13 @@ Grammar: DataElement 5.0 Namespace: cimi.entity Description: "The namespace containing definitions for basic classes in CIMI." -Uses: shr.core, cimi.element, cimi.statement +Uses: shr.core, cimi.element, shr.base Abstract Element: EntityOrRole Based on: InformationItem Description: "CIMI parent class for both Entity and Role." //Identifier - Abstract Element: Role Based on: EntityOrRole Description: "Capacity in which an actor is involved in an activity. For instance, 'attending physician'. Note that attributes of the actor (an entity) that remain constant regardless of the role the actor plays should be part of the entity and not the role. For instance, a person may be a practitioner and a patient. In both cases their date of birth will be the same and thus such information should not be part of the role." @@ -18,7 +17,6 @@ Based on: EntityOrRole Concept: TBD Description: "Root class for entities such as people, organizations, and devices that have a separately identifiable existence." - EntryElement: Patient Based on: Role Concept: MTH#C1299487 @@ -110,7 +108,7 @@ Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) //or ref(Organi */ EntryElement: Group -Based on: EntityOrRole +Based on: Entity Concept: MTH#C0441833 Description: "A set of entities (personnel, material, or places) to be considered together. May be a pool of like-type resources, a team, or combination of personnel, material and places." 0..1 ActiveFlag @@ -265,8 +263,6 @@ Description: "A type of prescription drug or over-the-counter drug that is used Description: "The kind of container the medication comes in." Value: CodeableConcept - - EntryElement: Person Based on: Entity Concept: MTH#C0027361 diff --git a/spec/cimi_procedure.txt b/spec/cimi_procedure.txt index 9d18336c..3f0357de 100644 --- a/spec/cimi_procedure.txt +++ b/spec/cimi_procedure.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.procedure Description: "The CIMI procedure domain contains contexts, topics, and statements related to procedures." -Uses: shr.core, shr.base, cimi.element, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.element, cimi.entity CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category diff --git a/spec/cimi_statement.txt b/spec/cimi_statement.txt deleted file mode 100644 index b71003ac..00000000 --- a/spec/cimi_statement.txt +++ /dev/null @@ -1,526 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: cimi.statement -Description: "The namespace containing cimi-derived classes representing complete clinical statements." -Uses: shr.core, cimi.element, cimi.entity, cimi.encounter - -CodeSystem: LNC = http://loinc.org -CodeSystem: SCT = http://snomed.info/sct -CodeSystem: MTH = http://ncimeta.nci.nih.gov -CodeSystem: NCI = https://evs.nci.nih.gov/ftp1/CDISC/SDTM/ -CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category - - -Element: InformationItem -Concept: MTH#C1705654 -Description: "Parent class for any entry in clinical or administrative health-related system, including information about organizations, providers, patients, services, payments, decision support artifacts, etc." - -//------------- Data Item (aka data element) ------------ - -Element: DataElementItem -Based on: InformationItem -Description: "A non-separable question-answer pair (data element) consisting of an observable property (represented by a code), value (or exception value), reference range, and interpretation. An observation component represents question-answer pair, and lack sufficient context for full interpretation, e.g., a reference to a patient, problem, or body structure. They do not stand alone, but can be included in observations." -Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) -// exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 -1..1 DataItemCode // redundant with Concept -0..1 ReferenceRange // included here because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. -0..1 ExceptionValue - - Element: DataItemCode - Description: "A code describing the data item. In an observation, the code reprsents the 'question': the aspect or property of the subject being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist, for example, the SNOMED-CT code for pneumonia." - Value: CodeableConcept - - Element: ReferenceRange - Concept: MTH#C0883335 - Description: "The usual or acceptable range for a test result." - Value: Range // TODO: align this with FHIR - 0..1 Type from http://hl7.org/fhir/ValueSet/referencerange-meaning if covered - 0..1 ApplicableSubpopulation - 0..1 ApplicableAgeRange - - Element: ApplicableSubpopulation - Concept: MTH#C0039309 "Target Population" - Description: "Codes to indicate the target population this reference range applies to. For example, a reference range may be based on the normal population or a particular sex or race." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/referencerange-appliesto if covered - - Element: ApplicableAgeRange - Concept: TBD - Description: "The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so." // FHIR: how exactly does one indicate a neonatal or prenatal age? - Value: Range - - Element: ExceptionValue - Concept: TBD - Description: "Reason that a value associated with a test or other finding is missing." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/data-absent-reason if covered - -Element: CodedDataElement -Based on: DataElementItem -Description: "An data item whose value is a code (concept)." -Value: 0..1 CodeableConcept -0..0 ReferenceRange - -Element: QuantitativeDataElement -Based on: DataElementItem -Description: "An data item whose value is a code (concept)." -Value: 0..1 Quantity - -//-------------Findings------------ - -Element: Finding -Based on: DataElementItem -Description: "A data item with context, representing a determination, opinion, result, or measurement." -0..1 Patient -0..* Focus -0..1 Encounter // findings are often associated with specific encounters -0..1 FindingMethod -1..1 FindingStatus - - Element: Focus - Description: "The aspect or attribute of the subject of information that the finding relates to. The Focus is only required if the thing observed is different than the person of record (patient). For example, the subject of observation could be a specific condition if the property is progression, or a specific instance of a wound if the property is wound length. Focus should not be used to record anatomical location." - Value: string or CodeableConcept or Identifier or ref(InformationItem) - 0..1 RelationshipToPersonOfRecord - - Element: FindingMethod - Concept: TBD - Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." - Value: CodeableConcept should be from FindingMethodVS - - Element: FindingStatus - Concept: TBD - Description: "Indicates whether the finding is preliminary, amended, final, etc." - Value: code or CodeableConcept - - -EntryElement: Observation // TODO: be consistent, or stop using the word "Statement" in class names -Based on: Finding -Concept: TBD -Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. -Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The Focus can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -0..1 RelevantTime -//0..0 Observer -// 0..1 Interpretation -0..1 DeltaFlag -1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered -0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? -0..1 AdditionalText -0..1 Interpretation -0..1 Device -0..1 Specimen -0..* Precondition -0..* Media - FindingStatus value is type code - FindingStatus from http://hl7.org/fhir/ValueSet/observation-status -0..* DataElementItem -0..1 PanelMembers - - - Element: Observer - Concept: MTH#C0449416 - Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." - Value: ref(InformationItem) //string or ref(Practitioner) or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) - 0..1 RelationshipToPersonOfRecord - - Element: RelationshipToPersonOfRecord - Concept: MTH#C0015608 - Description: "The relationship to the person of record." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered - - Element: AdditionalText - Concept: MTH#C0947611 - Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." - Value: string // change to language-text - - Element: Interpretation - Concept: MTH#C0420833 - Description: "A clinical interpretation of a finding (applies to both assertions and observation)." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/observation-interpretation if covered - - Element: RelevantTime - Concept: TBD - Description: "The time or time period that the finding addresses. - The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." - Value: dateTime or TimePeriod - - Element: PanelMembers - Concept: TBD - Description: "PanelMembers represent the elements of a group of a related but independent evaluations. - Examples are the measurements that compose a complete blood count (CBC), or the elements of a pathology report. Each member is an independent evaluation, but the grouping reflects a composite lab order, shared specimen, or a single report author. Typically the Category and Reason are not given for individual findings that are part of the panel, but rather given at the level of the panel itself." - 0..* ref(Observation) - - Element: Precondition - Concept: TBD - Description: "A description of the conditions or context of an observation, for example, under sedation, fasting or post-exercise. Body position and body site are also qualifiers, but handled separately. A qualifier cannot modify the measurement type; for example, a fasting blood sugar is still a blood sugar. " - Value: CodeableConcept or ref(Observation) - - Element: DeltaFlag - Concept: MTH#C1705241 - Description: "Indicator of significant change (delta) from the last or previous measurement." - Value: CodeableConcept from DeltaFlagVS - -// Element: Issued -// Description: "The date and time this observation was made available to providers, typically after the results have been reviewed and verified." -// Value: instant - - -// Non-Laboratory Results - -EntryElement: NonLaboratoryObservation -Based on: Observation -Description: "An observation not based on a specimen." -0..0 Specimen - -EntryElement: SimpleNonLaboratoryObservation -Based on: NonLaboratoryObservation -Description: "An observation having no components or panel members" -0..0 DataElementItem -0..0 PanelMembers - -EntryElement: CodedNonLaboratoryObservation -Based on: NonLaboratoryObservation -Concept: TBD -Description: "The result of evaluations (measurements, tests, or questions) whose answer is expressed as a code." -Value: CodeableConcept -0..0 ReferenceRange - -EntryElement: SimpleCodedNonLaboratoryObservation -Based on: CodedNonLaboratoryObservation -Description: "An observation whose result is a code, and also having no components or panel members" -0..0 DataElementItem -0..0 PanelMembers - -EntryElement: ComponentOnlyNonLaboratoryObservation -Based on: NonLaboratoryObservation -Description: "An observation with components, but without a result value or panel members." -0..0 Value -0..0 ExceptionValue -0..0 PanelMembers -0..0 ReferenceRange - -EntryElement: Panel -Based on: Observation -Description: "An observation with panel members, but without a result value or components." -0..0 Value -0..0 ExceptionValue -0..0 ReferenceRange -0..0 DataElementItem -1..1 PanelMembers - -// Laboratory Measurements and Results - -EntryElement: LaboratoryObservation -Based on: Observation -Description: "A coded finding based on a specimen collected from a patient." -1..1 Patient -1..1 Specimen -0..0 AnatomicalLocation // AnatomicalLocation is determined indirectly from Specimen.CollectionSite - Category is OBSCAT#laboratory -0..* DiagnosticService - - Element: DiagnosticService - Concept: TBD - Description: "The service completing the observations, e.g. biochemistry, microbiology, blood bank." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/diagnostic-service-sections if covered - -EntryElement: CodedLaboratoryObservation -Based on: LaboratoryObservation -Description: "A coded finding from a laboratory test." -Value: CodeableConcept -0..0 ReferenceRange - -EntryElement: SimpleLaboratoryObservation -Based on: LaboratoryObservation -Description: "A coded finding from a laboratory test without further panel members or components." -0..0 DataElementItem -0..0 PanelMembers - -EntryElement: SimpleCodedLaboratoryObservation -Based on: CodedLaboratoryObservation -Description: "A coded finding from a laboratory test without further panel members or components." -0..0 DataElementItem -0..0 PanelMembers - -//---------- Assertions ------------- - -Abstract Element: ExistenceAssertion -Based on: Finding -Description: "An assertion that an event has or has not taken place, or a relationship, situation, condition, or other phenomenon is present or absent." -Value: CodeableConcept from PresentAbsentVS -0..0 ReferenceRange -0..0 ExceptionValue -0..* PartOf -0..1 ObjectIdentifier -0..1 Certainty - FindingStatus value is type CodeableConcept - - Element: PartOf - Description: "The larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." - Value: ref(InformationItem) - - Element: ObjectIdentifier - Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." - Value: string - - Element: Certainty - Concept: TBD - Description: "The degree of confidence in a conclusion or assertion." - Value: CodeableConcept - -Abstract Element: PresenceAssertion -Based on: ExistenceAssertion -Description: "Statement that a finding is present." - Value is SCT#52101004 "Present (qualifier value)" -0..1 Onset -0..1 Abatement -0..1 Certainty from PresenceCertaintyVS - - Element: Onset - Concept: LNC#85585-8 - Description: "The beginning or first appearance of a mental or physical disorder." - Value: dateTime or Age or TimePeriod or Range or string - - Element: Abatement - Concept: LNC#88878-4 - Description: "The end, remission or resolution." - Value: dateTime or Age or boolean or TimePeriod or Range or string - -Abstract Element: AbsenceAssertion -Based on: ExistenceAssertion -Description: "Statement that an entity, person, role, condition, or phenomenon is absent." - Value is SCT#2667000 "Absent (qualifier value)" -0..1 Certainty from AbsenceCertaintyVS - -EntryElement: ConditionPresenceAssertion -Based on: PresenceAssertion -Concept: TBD -Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." -//0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson - DataItemCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered -1..* Category from ConditionCategoryVS -0..* AnatomicalLocation -0..* ConditionCause -1..1 ClinicalStatus -0..1 WhenClinicallyRecognized -0..1 PresentOnAdmission -0..1 Severity -0..1 Criticality -0..1 Stage - - Element: ConditionCause - Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" - Value: CodeableConcept or ref(Entity) or ref(Finding) - // probably other attributes needed, such as likelihood or type of cause - - Element: ClinicalStatus - Concept: TBD - Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." - Value: code from http://hl7.org/fhir/ValueSet/condition-clinical - - Element: WhenClinicallyRecognized - Concept: TBD - Description: "The time at which a condition or condition was first identified in a healthcare context." - Value: date - - Element: PresentOnAdmission - Concept: LNC#89251-3 "Condition present on admission" - Description: "If the problem or condition existed before the current episode of care." - Value: CodeableConcept from YesNoUnknownVS - - Element: Severity - Concept: MTH#C0392364 - Description: "Degree of harshness or extent of a symptom, disorder, or condition." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/condition-severity - - Element: Criticality - Concept: MTH#C3858539 "Criticality" - Description: "The potential clinical harm associated with a condition. When the worst case result is assessed to have a life-threatening or organ system threatening potential, it is considered to be of high criticality." - Value: code from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality - - Element: Stage - Concept: MTH#C0699749 - Description: "The relative advancement in the course of a disease. The value is the summary stage or stage group. StageDetail optionally contains the full staging information." - Value: CodeableConcept - 0..1 StageDetail - - Element: StageDetail - Concept: TBD - Description: "The full staging information" - Value: ref(Observation) - - Element: AlleviatingFactor - Concept: LNC#55258-8 - Description: "Activities that reduce the severity of the pathology" - Value: CodeableConcept - - Element: ExacerbatingFactor - Concept: LNC#55258-8 - Description: "Activities that increase the severity of the pathology" - Value: CodeableConcept - - - -EntryElement: ConditionAbsenceAssertion -Based on: AbsenceAssertion -Concept: MTH#C0277541 "no disease present" -Description: "A finding that a condition is or was not present in the subject at a certain time or time period, not necessarily the time the information is gathered." - DataItemCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered -1..* Category from ConditionCategoryVS -0..* AnatomicalLocation - -EntryElement: ClinicalNote -Based on: Finding -Concept: MTH#C0747978 "Progress Note" -Description: "An entry concerning a patient where the result is a narrative text." -1..1 Patient -1..1 AdditionalText // make required - - -//---------- Actions -------------- - -Abstract Element: ActionStatement -Based on: InformationItem -Description: "Abstract class representing any type of action." -1..1 Patient // constrain from 0..1 to 1..1 -0..1 Encounter // actions often take place during an encounter -1..1 ActionTopic // introduce topics at this point -0..* Reason - - Element: Reason - Concept: MTH#C0566251 - Description: "The justification for an action or non-action, conclusion, opinion, etc." - Value: string or CodeableConcept or ref(Finding) - -Abstract Element: ActionPerformedStatement -Based on: ActionStatement -Description: "Abstract class representing performance of any type of action." -1..1 OccurrenceTimeOrPeriod // when the action took place -0..* Participant -1..1 Status should be from http://hl7.org/fhir/ValueSet/event-status -0..1 Method -0..* RelatedRequest -//0..1 EnactsPlan -//0..1 FulfillsOrder -0..1 ref(Facility) -0..1 Outcome // e.g., AdverseEvent - - Element: Participant - Concept: MTH#C1550369 - Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." - Value: ref(EntityOrRole) - 0..1 ParticipationType // role - 0..1 ParticipationPeriod - 0..1 OnBehalfOf - - Element: ParticipationType - Concept: MTH#C1553854 - Description: "The role played by the participant engaged in the action, for example, as the attending physician, surgical assistant, etc." - Value: CodeableConcept from FHIR/v3-ParticipationType - - Element: ParticipationPeriod - Concept: TBD - Description: "The point in time or span of time the participant is involved." - Value: TimePeriod - - Element: Method - Concept: TBD - Description: "The technique used to carry out an action, for example, the specific imaging technical or assessment vehicle." - Value: CodeableConcept // TODO: limit to a procedure code - - Element: RelatedRequest - Concept: TBD - Description: "The proposal, order, or plan that is partly or wholly fulfilled by the performance of this act." - Value: ref(ActionRequestedStatement) - - /* - Element: EnactsPlan - Concept: TBD - Description: "The plan that is partly or wholly enacted by the performance of this act." - Value: ref(ActionRequestedStatement) - - Element: FulfillsOrder - Concept: TBD - Description: "The order that is partly or wholly enacted by the performance of this act." - Value: ref() - */ - Element: Outcome - Concept: TBD - Description: "The result of performing an action or behavior, for example, an adverse reaction or new finding." - Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/procedure-outcome - 0..* ref(Finding) - - -Abstract Element: ActionRequestedStatement -Based on: ActionStatement -Description: "Abstract class representing a request for any type of action." -1..1 Status should be from http://hl7.org/fhir/ValueSet/request-status -1..1 RequestIntent -0..1 ExpectedPerformanceTime -0..1 ExpectedPerformerType -0..1 ExpectedPerformer -0..1 ExpectedMethod -0..1 PriorityRank should be from http://hl7.org/fhir/ValueSet/request-priority -0..1 PerformerInstructions -0..1 PatientInstructions -0..1 CommunicationMethod - - Element: RequestIntent - Concept: TBD - Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." - Value: code from http://hl7.org/fhir/ValueSet/request-intent - - Element: ExpectedPerformanceTime - Concept: TBD - Description: "When an action should be done. If the action is a series or recurs (e.g. daily blood sugar testing in the morning) then a Timing can be used to describe the periodicity." - Value: dateTime or date or TimePeriod or Timing - - Element: ExpectedPerformerType - Concept: TBD - Description: "What type of party should carry out the testing." - Value: CodeableConcept // what ValueSet?? - - Element: ExpectedPerformer - Concept: TBD - Description: "Who should carry out the tests. For example, the patient or caregiver." - Value: ref(Entity) or ref(Organization) - - Element: ExpectedMethod - Concept: TBD - Description: "The method that should be used to carry out the action." - Value: ref(Method) - - Element: PerformerInstructions - Concept: TBD - Description: "Information for the performer of the test, if needed." - Value: string - - Element: PatientInstructions - Concept: TBD - Description: "Information for the patient, such as, where to get the test, how to prepare for the test, etc." - Value: string - - Element: CommunicationMethod - Concept: TBD - Description: "This is the method the provider used to communicate. Examples include: Written, Telephoned, Verbal, Electronically Entered, Policy, Service Correction, Duplicate, etc. 'Code indicating the origin of the prescription.' - NCPDP Telecommunication (Field 419-DJ, Data Dictionary 201104). Possible values include: Written; Telephone; Electronic; Facsimile; Pharmacy; Not Known." - Value: CodeableConcept - - -Abstract Element: ActionNotPerformedStatement -Based on: ActionStatement -Description: "Abstract class representing non-performance of any type of action." -0..1 RelatedRequest -1..1 NonOccurrenceTimeOrPeriod - -Abstract Element: ActionRequestedAgainstStatement -Based on: ActionStatement -Description: "Abstract class representing a request to not perform any type of action." - -Abstract Element: ActionTopic -Description: "Compositional and reusable grouping of attributes that make up the clinical focus of an action statement, independent whether the action is potential or actual, past or future." -0..1 Category -1..1 TopicCode - - Element: TopicCode - Concept: TBD - Description: "The concept representing the finding or action that is the topic of the statement. - - For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." - Value: CodeableConcept - diff --git a/spec/cimi_statement_map.txt b/spec/cimi_statement_map.txt deleted file mode 100644 index 39f353af..00000000 --- a/spec/cimi_statement_map.txt +++ /dev/null @@ -1,110 +0,0 @@ -Grammar: Map 5.1 -Namespace: cimi.statement -Target: FHIR_STU_3 - -InformationItem maps to DomainResource: - -// do not map Observation to US Core Results -- Brett says that's only for labs -Observation maps to Observation: // TODO: observationresults is only for labs - Patient maps to subject -// SourceOfInformation.Value maps to performer // Why doesn't this work??? -// Annotation maps to extension -// RecordStatus maps to extension -// _Entry.CosignedBy maps to extension -// _Entry.VerifiedBy maps to extension - DataItemCode maps to code - FindingMethod maps to method - AdditionalText maps to comment -// Media maps to extension - Category maps to category - AnatomicalLocation maps to bodySite - Device maps to device - Specimen maps to specimen -// Precondition maps to extension - ReferenceRange maps to referenceRange - ReferenceRange.Range.LowerBound maps to referenceRange.low - ReferenceRange.Range.UpperBound maps to referenceRange.high - ReferenceRange.Type maps to referenceRange.type - ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo - ReferenceRange.ApplicableAgeRange maps to referenceRange.age - DataElementItem maps to component (slice on = coding.code; slice strategy = includes) - DataElementItem._Concept maps to component.code - DataElementItem.Value maps to component.value[x] - DataElementItem.ExceptionValue maps to component.dataAbsentReason - //DataElementItem.Interpretation maps to component.interpretation - DataElementItem.ReferenceRange maps to component.referenceRange - fix related.type to #has-member - PanelMembers maps to related - PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) - Value maps to value[x] - ExceptionValue maps to dataAbsentReason - Interpretation maps to interpretation -// Issued maps to issued -// FindingStatus maps to status - RelevantTime maps to effective[x] - Encounter maps to context - DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta - - -LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: // TODO: observationresults is only for labs - Patient maps to subject -// SourceOfInformation.Value maps to performer // Why doesn't this work??? -// Annotation maps to extension -// RecordStatus maps to extension -// _Entry.CosignedBy maps to extension -// _Entry.VerifiedBy maps to extension - DataItemCode maps to code - FindingMethod maps to method - AdditionalText maps to comment -// Media maps to extension - Category maps to category - AnatomicalLocation maps to bodySite - Device maps to device - Specimen maps to specimen -// Precondition maps to extension - ReferenceRange maps to referenceRange - ReferenceRange.Range.LowerBound maps to referenceRange.low - ReferenceRange.Range.UpperBound maps to referenceRange.high - ReferenceRange.Type maps to referenceRange.type - ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo - ReferenceRange.ApplicableAgeRange maps to referenceRange.age - DataElementItem maps to component (slice on = coding.code; slice strategy = includes) - DataElementItem._Concept maps to component.code - DataElementItem.Value maps to component.value[x] - DataElementItem.ExceptionValue maps to component.dataAbsentReason - //DataElementItem.Interpretation maps to component.interpretation - DataElementItem.ReferenceRange maps to component.referenceRange - fix related.type to #has-member - PanelMembers maps to related - PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) - Value maps to value[x] - ExceptionValue maps to dataAbsentReason - Interpretation maps to interpretation -// Issued maps to issued -// FindingStatus maps to status - RelevantTime maps to effective[x] - Encounter maps to context - DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta - -ConditionPresenceAssertion maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: -// _Entry.CreationTime maps to assertedDate // why doesn't this work? -// Patient maps to subject -// SourceOfInformation.Value maps to asserter // why doesn't this work? - Category maps to category - DataItemCode maps to code - constrain bodySite to 0..0 - AnatomicalLocation maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite - Encounter maps to context - ClinicalStatus maps to clinicalStatus - FindingStatus maps to verificationStatus - Onset maps to onset[x] - Abatement maps to abatement[x] - Severity maps to severity - Stage maps to stage - Stage.CodeableConcept maps to stage.summary - Stage.StageDetail maps to stage.assessment - - -ConditionAbsenceAssertion maps to Basic: -// There is no mechanism in FHIR (not Condition, not Observation) to say "Patient does not have Condition X" - diff --git a/spec/ig-cimi-config.json b/spec/ig-cimi-config.json index db6ec3e1..3ada4e82 100644 --- a/spec/ig-cimi-config.json +++ b/spec/ig-cimi-config.json @@ -18,7 +18,7 @@ { "filter": true, "strategy": "namespace", - "target": ["cimi.core", "cimi.element", "cimi.encounter", "cimi.entity", "cimi.statement"] + "target": ["cimi.core", "cimi.element", "shr.encounter", "cimi.entity"] }, "publisher": "The Clinical Information Modeling Initiative (CIMI)", "contact": [ diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 49c97c89..67722d99 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -1,9 +1,13 @@ Grammar: DataElement 5.0 Namespace: shr.base Description: "Contains the SHR Entry definition -- the metadata added to any independent item in the SHR." -Uses: shr.core, cimi.element, cimi.entity, cimi.statement +Uses: shr.core, cimi.element, cimi.entity, shr.encounter CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: LNC = http://loinc.org +CodeSystem: SCT = http://snomed.info/sct +CodeSystem: NCI = https://evs.nci.nih.gov/ftp1/CDISC/SDTM/ +CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category Element: Entry Concept: MTH#C1705654 @@ -26,7 +30,6 @@ Description: "Metadata attributes that apply to any item represented in the stan //0..* CosignedBy //0..* VerifiedBy - Element: ShrId Concept: TBD Description: "A unique, persistent, permanent identifier for the overall health record belonging to the Patient." @@ -110,4 +113,516 @@ Description: "Metadata attributes that apply to any item represented in the stan Value: id */ +Element: InformationItem +Concept: MTH#C1705654 +Description: "Parent class for any entry in clinical or administrative health-related system, including information about organizations, providers, patients, services, payments, decision support artifacts, etc." + +//------------- Data Item (aka data element) ------------ + +Element: DependentDataElement +Based on: InformationItem +Description: "A non-separable question-answer pair (data element) consisting of an observable property (represented by a code), value (or exception value), reference range, and interpretation. An observation component represents question-answer pair, and lack sufficient context for full interpretation, e.g., a reference to a patient, problem, or body structure. They do not stand alone, but can be included in observations." +Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) +// exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 +1..1 DataItemCode // redundant with Concept +0..1 ReferenceRange // included here because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. +0..1 ExceptionValue + + Element: DataItemCode + Description: "A code describing the data item. In an observation, the code reprsents the 'question': the aspect or property of the subject being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist, for example, the SNOMED-CT code for pneumonia." + Value: CodeableConcept + + Element: ReferenceRange + Concept: MTH#C0883335 + Description: "The usual or acceptable range for a test result." + Value: Range // TODO: align this with FHIR + 0..1 Type from http://hl7.org/fhir/ValueSet/referencerange-meaning if covered + 0..1 ApplicableSubpopulation + 0..1 ApplicableAgeRange + + Element: ApplicableSubpopulation + Concept: MTH#C0039309 "Target Population" + Description: "Codes to indicate the target population this reference range applies to. For example, a reference range may be based on the normal population or a particular sex or race." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/referencerange-appliesto if covered + + Element: ApplicableAgeRange + Concept: TBD + Description: "The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so." // FHIR: how exactly does one indicate a neonatal or prenatal age? + Value: Range + + Element: ExceptionValue + Concept: TBD + Description: "Reason that a value associated with a test or other finding is missing." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/data-absent-reason if covered + +Element: CodedDataElement +Based on: DependentDataElement +Description: "An data item whose value is a code (concept)." +Value: 0..1 CodeableConcept +0..0 ReferenceRange + +Element: QuantitativeDataElement +Based on: DependentDataElement +Description: "An data item whose value is a code (concept)." +Value: 0..1 Quantity + +//-------------Findings------------ + +Element: Finding +Based on: DependentDataElement +Description: "A data item with context, representing a determination, opinion, result, or measurement." +0..1 Patient +0..* Focus +0..1 Encounter // findings are often associated with specific encounters +0..1 FindingMethod +1..1 FindingStatus + + Element: Focus + Description: "The aspect or attribute of the subject of information that the finding relates to. The Focus is only required if the thing observed is different than the person of record (patient). For example, the subject of observation could be a specific condition if the property is progression, or a specific instance of a wound if the property is wound length. Focus should not be used to record anatomical location." + Value: string or CodeableConcept or Identifier or ref(InformationItem) + 0..1 RelationshipToPersonOfRecord + + Element: FindingMethod + Concept: TBD + Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." + Value: CodeableConcept should be from FindingMethodVS + + Element: FindingStatus + Concept: TBD + Description: "Indicates whether the finding is preliminary, amended, final, etc." + Value: code or CodeableConcept + + +EntryElement: Observation // TODO: be consistent, or stop using the word "Statement" in class names +Based on: Finding +Concept: TBD +Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. +Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The Focus can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." +0..1 RelevantTime +//0..0 Observer +// 0..1 Interpretation +0..1 DeltaFlag +1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered +0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? +0..1 AdditionalText +0..1 Interpretation +0..1 Device +0..1 Specimen +0..* Precondition +0..* Media + FindingStatus value is type code + FindingStatus from http://hl7.org/fhir/ValueSet/observation-status +0..* DependentDataElement +0..1 PanelMembers + + Element: Observer + Concept: MTH#C0449416 + Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." + Value: ref(InformationItem) //string or ref(Practitioner) or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) + 0..1 RelationshipToPersonOfRecord + + Element: RelationshipToPersonOfRecord + Concept: MTH#C0015608 + Description: "The relationship to the person of record." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered + + Element: AdditionalText + Concept: MTH#C0947611 + Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." + Value: string // change to language-text + + Element: Interpretation + Concept: MTH#C0420833 + Description: "A clinical interpretation of a finding (applies to both assertions and observation)." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/observation-interpretation if covered + + Element: RelevantTime + Concept: TBD + Description: "The time or time period that the finding addresses. + The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." + Value: dateTime or TimePeriod + + Element: PanelMembers + Concept: TBD + Description: "PanelMembers represent the elements of a group of a related but independent evaluations. + Examples are the measurements that compose a complete blood count (CBC), or the elements of a pathology report. Each member is an independent evaluation, but the grouping reflects a composite lab order, shared specimen, or a single report author. Typically the Category and Reason are not given for individual findings that are part of the panel, but rather given at the level of the panel itself." + 0..* ref(Observation) + + Element: Precondition + Concept: TBD + Description: "A description of the conditions or context of an observation, for example, under sedation, fasting or post-exercise. Body position and body site are also qualifiers, but handled separately. A qualifier cannot modify the measurement type; for example, a fasting blood sugar is still a blood sugar. " + Value: CodeableConcept or ref(Observation) + + Element: DeltaFlag + Concept: MTH#C1705241 + Description: "Indicator of significant change (delta) from the last or previous measurement." + Value: CodeableConcept from DeltaFlagVS + +// Element: Issued +// Description: "The date and time this observation was made available to providers, typically after the results have been reviewed and verified." +// Value: instant + + +// Non-Laboratory Results + +EntryElement: NonLaboratoryObservation +Based on: Observation +Description: "An observation not based on a specimen." +0..0 Specimen + +EntryElement: SimpleNonLaboratoryObservation +Based on: NonLaboratoryObservation +Description: "An observation having no components or panel members" +0..0 DependentDataElement +0..0 PanelMembers + +EntryElement: CodedNonLaboratoryObservation +Based on: NonLaboratoryObservation +Concept: TBD +Description: "The result of evaluations (measurements, tests, or questions) whose answer is expressed as a code." +Value: CodeableConcept +0..0 ReferenceRange + +EntryElement: SimpleCodedNonLaboratoryObservation +Based on: CodedNonLaboratoryObservation +Description: "An observation whose result is a code, and also having no components or panel members" +0..0 DependentDataElement +0..0 PanelMembers + +EntryElement: ComponentOnlyNonLaboratoryObservation +Based on: NonLaboratoryObservation +Description: "An observation with components, but without a result value or panel members." +0..0 Value +0..0 ExceptionValue +0..0 PanelMembers +0..0 ReferenceRange + +EntryElement: Panel +Based on: Observation +Description: "An observation with panel members, but without a result value or components." +0..0 Value +0..0 ExceptionValue +0..0 ReferenceRange +0..0 DependentDataElement +1..1 PanelMembers + +// Laboratory Measurements and Results + +EntryElement: LaboratoryObservation +Based on: Observation +Description: "A coded finding based on a specimen collected from a patient." +1..1 Patient +1..1 Specimen +0..0 AnatomicalLocation // AnatomicalLocation is determined indirectly from Specimen.CollectionSite + Category is OBSCAT#laboratory +0..* DiagnosticService + + Element: DiagnosticService + Concept: TBD + Description: "The service completing the observations, e.g. biochemistry, microbiology, blood bank." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/diagnostic-service-sections if covered + +EntryElement: CodedLaboratoryObservation +Based on: LaboratoryObservation +Description: "A coded finding from a laboratory test." +Value: CodeableConcept +0..0 ReferenceRange + +EntryElement: SimpleLaboratoryObservation +Based on: LaboratoryObservation +Description: "A coded finding from a laboratory test without further panel members or components." +0..0 DependentDataElement +0..0 PanelMembers + +EntryElement: SimpleCodedLaboratoryObservation +Based on: CodedLaboratoryObservation +Description: "A coded finding from a laboratory test without further panel members or components." +0..0 DependentDataElement +0..0 PanelMembers + +//---------- Assertions ------------- + +Abstract Element: ExistenceAssertion +Based on: Finding +Description: "An assertion that an event has or has not taken place, or a relationship, situation, condition, or other phenomenon is present or absent." +Value: CodeableConcept from PresentAbsentVS +0..0 ReferenceRange +0..0 ExceptionValue +0..* PartOf +0..1 ObjectIdentifier +0..1 Certainty + FindingStatus value is type CodeableConcept + + Element: PartOf + Description: "The larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." + Value: ref(InformationItem) + + Element: ObjectIdentifier + Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." + Value: string + + Element: Certainty + Concept: TBD + Description: "The degree of confidence in a conclusion or assertion." + Value: CodeableConcept + +Abstract Element: PresenceAssertion +Based on: ExistenceAssertion +Description: "Statement that a finding is present." + Value is SCT#52101004 "Present (qualifier value)" +0..1 Onset +0..1 Abatement +0..1 Certainty from PresenceCertaintyVS + + Element: Onset + Concept: LNC#85585-8 + Description: "The beginning or first appearance of a mental or physical disorder." + Value: dateTime or Age or TimePeriod or Range or string + + Element: Abatement + Concept: LNC#88878-4 + Description: "The end, remission or resolution." + Value: dateTime or Age or boolean or TimePeriod or Range or string + +Abstract Element: AbsenceAssertion +Based on: ExistenceAssertion +Description: "Statement that an entity, person, role, condition, or phenomenon is absent." + Value is SCT#2667000 "Absent (qualifier value)" +0..1 Certainty from AbsenceCertaintyVS + +EntryElement: ConditionPresenceAssertion +Based on: PresenceAssertion +Concept: TBD +Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." +//0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson + DataItemCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered +1..* Category from ConditionCategoryVS +0..* AnatomicalLocation +0..* ConditionCause +1..1 ClinicalStatus +0..1 WhenClinicallyRecognized +0..1 PresentOnAdmission +0..1 Severity +0..1 Criticality +0..1 Stage + + Element: ConditionCause + Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" + Value: CodeableConcept or ref(Entity) or ref(Finding) + // probably other attributes needed, such as likelihood or type of cause + + Element: ClinicalStatus + Concept: TBD + Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." + Value: code from http://hl7.org/fhir/ValueSet/condition-clinical + + Element: WhenClinicallyRecognized + Concept: TBD + Description: "The time at which a condition or condition was first identified in a healthcare context." + Value: date + + Element: PresentOnAdmission + Concept: LNC#89251-3 "Condition present on admission" + Description: "If the problem or condition existed before the current episode of care." + Value: CodeableConcept from YesNoUnknownVS + + Element: Severity + Concept: MTH#C0392364 + Description: "Degree of harshness or extent of a symptom, disorder, or condition." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/condition-severity + + Element: Criticality + Concept: MTH#C3858539 "Criticality" + Description: "The potential clinical harm associated with a condition. When the worst case result is assessed to have a life-threatening or organ system threatening potential, it is considered to be of high criticality." + Value: code from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality + + Element: Stage + Concept: MTH#C0699749 + Description: "The relative advancement in the course of a disease. The value is the summary stage or stage group. StageDetail optionally contains the full staging information." + Value: CodeableConcept + 0..1 StageDetail + + Element: StageDetail + Concept: TBD + Description: "The full staging information" + Value: ref(Observation) + + Element: AlleviatingFactor + Concept: LNC#55258-8 + Description: "Activities that reduce the severity of the pathology" + Value: CodeableConcept + + Element: ExacerbatingFactor + Concept: LNC#55258-8 + Description: "Activities that increase the severity of the pathology" + Value: CodeableConcept + + + +EntryElement: ConditionAbsenceAssertion +Based on: AbsenceAssertion +Concept: MTH#C0277541 "no disease present" +Description: "A finding that a condition is or was not present in the subject at a certain time or time period, not necessarily the time the information is gathered." + DataItemCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered +1..* Category from ConditionCategoryVS +0..* AnatomicalLocation + +EntryElement: ClinicalNote +Based on: Finding +Concept: MTH#C0747978 "Progress Note" +Description: "An entry concerning a patient where the result is a narrative text." +1..1 Patient +1..1 AdditionalText // make required + + +//---------- Actions -------------- + +Abstract Element: ActionStatement +Based on: InformationItem +Description: "Abstract class representing any type of action." +1..1 Patient // constrain from 0..1 to 1..1 +0..1 Encounter // actions often take place during an encounter +1..1 ActionTopic // introduce topics at this point +0..* Reason + + Element: Reason + Concept: MTH#C0566251 + Description: "The justification for an action or non-action, conclusion, opinion, etc." + Value: string or CodeableConcept or ref(Finding) + +Abstract Element: ActionPerformedStatement +Based on: ActionStatement +Description: "Abstract class representing performance of any type of action." +1..1 OccurrenceTimeOrPeriod // when the action took place +0..* Participant +1..1 Status should be from http://hl7.org/fhir/ValueSet/event-status +0..1 Method +0..* RelatedRequest +//0..1 EnactsPlan +//0..1 FulfillsOrder +0..1 ref(Facility) +0..1 Outcome // e.g., AdverseEvent + + Element: Participant + Concept: MTH#C1550369 + Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." + Value: ref(EntityOrRole) + 0..1 ParticipationType // role + 0..1 ParticipationPeriod + 0..1 OnBehalfOf + + Element: ParticipationType + Concept: MTH#C1553854 + Description: "The role played by the participant engaged in the action, for example, as the attending physician, surgical assistant, etc." + Value: CodeableConcept from FHIR/v3-ParticipationType + + Element: ParticipationPeriod + Concept: TBD + Description: "The point in time or span of time the participant is involved." + Value: TimePeriod + + Element: Method + Concept: TBD + Description: "The technique used to carry out an action, for example, the specific imaging technical or assessment vehicle." + Value: CodeableConcept // TODO: limit to a procedure code + + Element: RelatedRequest + Concept: TBD + Description: "The proposal, order, or plan that is partly or wholly fulfilled by the performance of this act." + Value: ref(ActionRequestedStatement) + + /* + Element: EnactsPlan + Concept: TBD + Description: "The plan that is partly or wholly enacted by the performance of this act." + Value: ref(ActionRequestedStatement) + + Element: FulfillsOrder + Concept: TBD + Description: "The order that is partly or wholly enacted by the performance of this act." + Value: ref() + */ + Element: Outcome + Concept: TBD + Description: "The result of performing an action or behavior, for example, an adverse reaction or new finding." + Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/procedure-outcome + 0..* ref(Finding) + + +Abstract Element: ActionRequestedStatement +Based on: ActionStatement +Description: "Abstract class representing a request for any type of action." +1..1 Status should be from http://hl7.org/fhir/ValueSet/request-status +1..1 RequestIntent +0..1 ExpectedPerformanceTime +0..1 ExpectedPerformerType +0..1 ExpectedPerformer +0..1 ExpectedMethod +0..1 PriorityRank should be from http://hl7.org/fhir/ValueSet/request-priority +0..1 PerformerInstructions +0..1 PatientInstructions +0..1 CommunicationMethod + + Element: RequestIntent + Concept: TBD + Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." + Value: code from http://hl7.org/fhir/ValueSet/request-intent + + Element: ExpectedPerformanceTime + Concept: TBD + Description: "When an action should be done. If the action is a series or recurs (e.g. daily blood sugar testing in the morning) then a Timing can be used to describe the periodicity." + Value: dateTime or date or TimePeriod or Timing + + Element: ExpectedPerformerType + Concept: TBD + Description: "What type of party should carry out the testing." + Value: CodeableConcept // what ValueSet?? + + Element: ExpectedPerformer + Concept: TBD + Description: "Who should carry out the tests. For example, the patient or caregiver." + Value: ref(Entity) or ref(Organization) + + Element: ExpectedMethod + Concept: TBD + Description: "The method that should be used to carry out the action." + Value: ref(Method) + + Element: PerformerInstructions + Concept: TBD + Description: "Information for the performer of the test, if needed." + Value: string + + Element: PatientInstructions + Concept: TBD + Description: "Information for the patient, such as, where to get the test, how to prepare for the test, etc." + Value: string + + Element: CommunicationMethod + Concept: TBD + Description: "This is the method the provider used to communicate. Examples include: Written, Telephoned, Verbal, Electronically Entered, Policy, Service Correction, Duplicate, etc. 'Code indicating the origin of the prescription.' - NCPDP Telecommunication (Field 419-DJ, Data Dictionary 201104). Possible values include: Written; Telephone; Electronic; Facsimile; Pharmacy; Not Known." + Value: CodeableConcept + + +Abstract Element: ActionNotPerformedStatement +Based on: ActionStatement +Description: "Abstract class representing non-performance of any type of action." +0..1 RelatedRequest +1..1 NonOccurrenceTimeOrPeriod + +Abstract Element: ActionRequestedAgainstStatement +Based on: ActionStatement +Description: "Abstract class representing a request to not perform any type of action." + +Abstract Element: ActionTopic +Description: "Compositional and reusable grouping of attributes that make up the clinical focus of an action statement, independent whether the action is potential or actual, past or future." +0..1 Category +1..1 TopicCode + + Element: TopicCode + Concept: TBD + Description: "The concept representing the finding or action that is the topic of the statement. + + For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." + Value: CodeableConcept diff --git a/spec/shr_base_map.txt b/spec/shr_base_map.txt index 99589c2a..830666e8 100644 --- a/spec/shr_base_map.txt +++ b/spec/shr_base_map.txt @@ -1,8 +1,7 @@ Grammar: Map 5.1 -Namespace: shr.base +Namespace: shr.base Target: FHIR_STU_3 - Entry maps to DomainResource: EntryId maps to id constrain meta to 1..1 @@ -14,7 +13,113 @@ Entry maps to DomainResource: SecurityLabel maps to meta.security Tag maps to meta.tag +InformationItem maps to DomainResource: Narrative maps to Narrative: Value maps to div NarrativeQualifier maps to status + +// do not map Observation to US Core Results -- Brett says that's only for labs +Observation maps to Observation: // TODO: observationresults is only for labs + Patient maps to subject +// SourceOfInformation.Value maps to performer // Why doesn't this work??? +// Annotation maps to extension +// RecordStatus maps to extension +// _Entry.CosignedBy maps to extension +// _Entry.VerifiedBy maps to extension + DataItemCode maps to code + FindingMethod maps to method + AdditionalText maps to comment +// Media maps to extension + Category maps to category + AnatomicalLocation maps to bodySite + Device maps to device + Specimen maps to specimen +// Precondition maps to extension + ReferenceRange maps to referenceRange + ReferenceRange.Range.LowerBound maps to referenceRange.low + ReferenceRange.Range.UpperBound maps to referenceRange.high + ReferenceRange.Type maps to referenceRange.type + ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo + ReferenceRange.ApplicableAgeRange maps to referenceRange.age + DependentDataElement maps to component (slice on = coding.code; slice strategy = includes) + DependentDataElement._Concept maps to component.code + DependentDataElement.Value maps to component.value[x] + DependentDataElement.ExceptionValue maps to component.dataAbsentReason + //DependentDataElement.Interpretation maps to component.interpretation + DependentDataElement.ReferenceRange maps to component.referenceRange + fix related.type to #has-member + PanelMembers maps to related + PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) + Value maps to value[x] + ExceptionValue maps to dataAbsentReason + Interpretation maps to interpretation +// Issued maps to issued +// FindingStatus maps to status + RelevantTime maps to effective[x] + Encounter maps to context + DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta + + +LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: // TODO: observationresults is only for labs + Patient maps to subject +// SourceOfInformation.Value maps to performer // Why doesn't this work??? +// Annotation maps to extension +// RecordStatus maps to extension +// _Entry.CosignedBy maps to extension +// _Entry.VerifiedBy maps to extension + DataItemCode maps to code + FindingMethod maps to method + AdditionalText maps to comment +// Media maps to extension + Category maps to category + AnatomicalLocation maps to bodySite + Device maps to device + Specimen maps to specimen +// Precondition maps to extension + ReferenceRange maps to referenceRange + ReferenceRange.Range.LowerBound maps to referenceRange.low + ReferenceRange.Range.UpperBound maps to referenceRange.high + ReferenceRange.Type maps to referenceRange.type + ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo + ReferenceRange.ApplicableAgeRange maps to referenceRange.age + DependentDataElement maps to component (slice on = coding.code; slice strategy = includes) + DependentDataElement._Concept maps to component.code + DependentDataElement.Value maps to component.value[x] + DependentDataElement.ExceptionValue maps to component.dataAbsentReason + //DependentDataElement.Interpretation maps to component.interpretation + DependentDataElement.ReferenceRange maps to component.referenceRange + fix related.type to #has-member + PanelMembers maps to related + PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) + Value maps to value[x] + ExceptionValue maps to dataAbsentReason + Interpretation maps to interpretation +// Issued maps to issued +// FindingStatus maps to status + RelevantTime maps to effective[x] + Encounter maps to context + DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta + +ConditionPresenceAssertion maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: +// _Entry.CreationTime maps to assertedDate // why doesn't this work? +// Patient maps to subject +// SourceOfInformation.Value maps to asserter // why doesn't this work? + Category maps to category + DataItemCode maps to code + constrain bodySite to 0..0 + AnatomicalLocation maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite + Encounter maps to context + ClinicalStatus maps to clinicalStatus + FindingStatus maps to verificationStatus + Onset maps to onset[x] + Abatement maps to abatement[x] + Severity maps to severity + Stage maps to stage + Stage.CodeableConcept maps to stage.summary + Stage.StageDetail maps to stage.assessment + + +ConditionAbsenceAssertion maps to Basic: +// There is no mechanism in FHIR (not Condition, not Observation) to say "Patient does not have Condition X" + diff --git a/spec/cimi_statement_vs.txt b/spec/shr_base_vs.txt similarity index 99% rename from spec/cimi_statement_vs.txt rename to spec/shr_base_vs.txt index 0056c0c2..780e3274 100644 --- a/spec/cimi_statement_vs.txt +++ b/spec/shr_base_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: cimi.statement +Namespace: shr.base CodeSystem: SCT = http://snomed.info/sct CodeSystem: MTH = http://ncimeta.nci.nih.gov diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 76df2aae..c0c16372 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.core Description: "The SHR Core domain contains definitions for a variety of general-purpose elements that are used widely in SHR. These include definitions for coding, expressions of time, quantities, addresses, names, and more." -Uses: cimi.element, cimi.statement +Uses: shr.base, cimi.element Path: FHIR = http://hl7.org/fhir/ValueSet // CodeSystem: CC = http://www.nationsonline.org/oneworld/country_code_list @@ -418,13 +418,13 @@ Description: "The measurement or linear extent of something from end to end; the Units with Coding from UnitsOfLengthVS Element: Depth -Based on: DataElementItem +Based on: DependentDataElement Concept: SCT#131197000 "Depth (qualifier value)" Description: "The extent downward or inward; the perpendicular measurement from the surface downward to determine deepness." Value: Quantity with units UCUM#cm Element: Area -Based on: DataElementItem +Based on: DependentDataElement Concept: SCT#42798000 "Area (qualifier value)" Description: "The extent of a 2-dimensional surface enclosed within a boundary." Value: Quantity with units UCUM#cm2 diff --git a/spec/cimi_encounter.txt b/spec/shr_encounter.txt similarity index 98% rename from spec/cimi_encounter.txt rename to spec/shr_encounter.txt index 5e65674a..fad519fe 100644 --- a/spec/cimi_encounter.txt +++ b/spec/shr_encounter.txt @@ -1,8 +1,7 @@ Grammar: DataElement 5.0 -Namespace: cimi.encounter +Namespace: shr.encounter Description: "The Encounter domain contains definitions that capture interactions between the person of record and healthcare providers, including inpatient, ambulatory care, and telecare." -Uses: shr.core, shr.base, cimi.element, cimi.statement, cimi.entity - +Uses: shr.core, shr.base, cimi.element, cimi.entity Element: Encounter Based on: InformationItem diff --git a/spec/cimi_encounter_map.txt b/spec/shr_encounter_map.txt similarity index 97% rename from spec/cimi_encounter_map.txt rename to spec/shr_encounter_map.txt index 47f87fe7..5ac1569e 100644 --- a/spec/cimi_encounter_map.txt +++ b/spec/shr_encounter_map.txt @@ -1,5 +1,5 @@ Grammar: Map 5.1 -Namespace: cimi.encounter +Namespace: shr.encounter Target: FHIR_STU_3 diff --git a/spec/cimi_encounter_vs.txt b/spec/shr_encounter_vs.txt similarity index 98% rename from spec/cimi_encounter_vs.txt rename to spec/shr_encounter_vs.txt index aab31d93..10f05b47 100644 --- a/spec/cimi_encounter_vs.txt +++ b/spec/shr_encounter_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: cimi.encounter +Namespace: shr.encounter ValueSet: EpisodeOfCareCompletionVS diff --git a/spec/shr_financial.txt b/spec/shr_financial.txt index eb40d5db..50b32ff4 100644 --- a/spec/shr_financial.txt +++ b/spec/shr_financial.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.financial Description: "The SHR Demographics domain contains definitions that describe basic characteristics of the person of record, such as name, address, and date of birth. Elements in the demographics domains are used for unique identification and patient matching." -Uses: shr.core, shr.base, cimi.statement, cimi.entity, cimi.element +Uses: shr.core, shr.base, cimi.entity, cimi.element Path: FHIR = http://hl7.org/fhir/ValueSet diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 42fd78d8..83b17ffb 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: odh Description: "Patient’s or family member's work information." -Uses: shr.core, shr.base, cimi.statement, cimi.composition, cimi.entity, cimi.element, cimi.encounter +Uses: shr.core, shr.base, cimi.composition, cimi.entity, cimi.element, shr.encounter CodeSystem: LNC = http://loinc.org CodeSystem: UCUM = http://unitsofmeasure.org @@ -43,7 +43,7 @@ A person's Employment Status could change over time, for example, a person could Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 DataItemCode is LNC#74165-2 "HistoryOfEmploymentStatus" -0..0 DataElementItem +0..0 DependentDataElement 0..0 FocalSubjectModifier EntryElement: RetirementDate @@ -54,7 +54,7 @@ A person can be both retired and employed (an Employment Status); most often, a Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." Value: dateTime DataItemCode is LNC#87510-4 "Date of Retirement" -0..0 DataElementItem +0..0 DependentDataElement 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. 0..0 FocalSubjectModifier @@ -65,7 +65,7 @@ Description: "Self-reported date range(s) when a person worked in what is consid Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones. Multiple periods in combat zone should be recorded using multiple FHIR resources." Value: TimePeriod DataItemCode is LNC#87511-2 -0..0 DataElementItem +0..0 DependentDataElement 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. 0..0 FocalSubjectModifier // only patient @@ -78,7 +78,7 @@ Example: a person has worked for a total of 30 years as a 'secretary' (Occupatio Usual Work does not include work that was unpaid or voluntary." Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 DataItemCode is LNC#21843-8 - DataElementItem + DependentDataElement includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration 1..1 RelevantTime @@ -111,7 +111,7 @@ At a minimum, it is important to have a record of a person's current job(s); i.e 0..0 Value DataItemCode is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization - DataElementItem + DependentDataElement includes 0..1 Occupation includes 0..1 PastOrPresentIndustry includes 0..1 WorkClassification @@ -168,14 +168,14 @@ includes 0..1 IsCurrentJob DataItemCode is LNC#87707-6 Element: JobDuty - Based on: DataElementItem + Based on: DependentDataElement Concept: LNC#63761-1 Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " Value: string DataItemCode is LNC#63761-1 Element: OccupationalHazard - Based on: DataElementItem + Based on: DependentDataElement Concept: LNC#87729-0 Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." Value: string @@ -254,7 +254,7 @@ Based on: CodedSocialHistoryObservation Description: "History of service in the US military." Category is OBSCAT#social-history DataItemCode is MTH#C3714797 - DataElementItem + DependentDataElement includes 1..1 MilitaryStatus includes 0..1 MilitaryServiceDischargeStatus includes 0..1 MilitaryBranch @@ -288,7 +288,7 @@ includes 0..1 ServiceConnectedDisability Value: CodeableConcept from MilitaryServiceEraVS Element: ServiceConnectedDisability - Based on: DataElementItem + Based on: DependentDataElement Concept: TBD Description: "Percentage disability resulting from US Military Service." Value: Quantity with units UCUM#% diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index 6829637f..054a65b0 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -7,12 +7,12 @@ SocialHistoryObservation maps to Observation: Patient maps to subject DataItemCode maps to code Category maps to category - DataElementItem maps to component (slice on = coding.code; slice strategy = includes) - DataElementItem._Concept maps to component.code - DataElementItem.Value maps to component.value[x] - DataElementItem.ExceptionValue maps to component.dataAbsentReason -// DataElementItem.Interpretation maps to component.interpretation - DataElementItem.ReferenceRange maps to component.referenceRange + DependentDataElement maps to component (slice on = coding.code; slice strategy = includes) + DependentDataElement._Concept maps to component.code + DependentDataElement.Value maps to component.value[x] + DependentDataElement.ExceptionValue maps to component.dataAbsentReason +// DependentDataElement.Interpretation maps to component.interpretation + DependentDataElement.ReferenceRange maps to component.referenceRange // constrain related to 0..0 Value maps to value[x] // ExceptionValue maps to dataAbsentReason diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index ab555106..8ed53afe 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.oncology Description: "SHR implementation of ASCO requirements." -Uses: shr.core, shr.base, cimi.element, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.element, cimi.entity CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org @@ -62,7 +62,7 @@ Description: "The stage of a breast cancer. Different staging systems use differ Value: CodeableConcept should be from http://loinc.org/LL240-3 DataItemCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" 0..1 StageTimingPrefix - DataElementItem + DependentDataElement includes 0..1 BreastCancerPrimaryTumorClassification includes 0..1 BreastCancerRegionalNodesClassification includes 0..1 BreastCancerDistantMetastasesClassification @@ -127,7 +127,7 @@ Value: CodeableConcept from NottinghamCombinedGradeVS DataItemCode is LNC#44648-4 Specimen is type BreastSpecimen DiagnosticService is #pathology - DataElementItem + DependentDataElement includes 0..1 TubuleFormationScore includes 0..1 NuclearPleomorphismScore includes 0..1 MitoticCountScore @@ -164,7 +164,7 @@ Value: CodeableConcept from PositiveNegativeVS DataItemCode is LNC#16112-5 DiagnosticService is #pathology Specimen is type BreastSpecimen - DataElementItem + DependentDataElement includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers @@ -186,13 +186,13 @@ Value: CodeableConcept from PositiveNegativeVS DataItemCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" DiagnosticService is #pathology Specimen is type BreastSpecimen - DataElementItem + DependentDataElement includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers Element: NuclearPositivity - Based on: DataElementItem + Based on: DependentDataElement Concept: TBD // apparently no LOINC code Description: "The percentage of cells that test (stain) positive for the presence of a receptor. We are seeking feedback on whether nuclear positivity should be an exact percentage or a range of percentages. As currently defined, an exact nuclear positivity could be represented by a zero-width range, where the lower and upper bounds would be the same number." @@ -214,7 +214,7 @@ Value: CodeableConcept from PositiveNegativeEquivocalVS Specimen is type BreastSpecimen 0..0 Precondition 0..0 FindingMethod -0..0 DataElementItem +0..0 DependentDataElement PanelMembers.Observation includes 0..* HER2byIHC includes 0..* HER2byFISH @@ -232,7 +232,7 @@ Value: CodeableConcept from HER2byIHCScoreVS DiagnosticService is #pathology 0..0 Precondition Specimen is type BreastSpecimen - DataElementItem + DependentDataElement includes 0..1 CompleteMembraneStainingPercent 0..0 PanelMembers @@ -256,7 +256,7 @@ Description: "HER2 receptor status as determined by single-probe or dual-probe F DiagnosticService is #pathology 0..0 Precondition Specimen is type BreastSpecimen - DataElementItem + DependentDataElement includes 0..1 AverageHER2SignalsPerCell includes 0..1 AverageCEP17SignalsPerCell includes 0..1 HER2toCEP17Ratio @@ -336,7 +336,7 @@ Value: CodeableConcept from ProgressionVS 0..* ProgressionEvidence // "ProgressionEvidence" is somewhat related to FindingMethod, which represents the test or procedure used to generate the result; it is typically a LOINC code (0..1) 0..0 Specimen -0..0 DataElementItem +0..0 DependentDataElement 0..0 Precondition 0..0 ReferenceRange // applies to a quantitative measurement only @@ -361,13 +361,13 @@ Value: CodeableConcept from ProgressionVS Value: CodeableConcept from YesNoVS Element: PercentageAmplified - Based on: DataElementItem + Based on: DependentDataElement Concept: CAP#31073 Description: "Percentage of cells with amplified HER2 signals" Value: Quantity with units UCUM#% Element: NuclearPositivity - Based on: DataElementItem + Based on: DependentDataElement Concept: TBD Description: "The percentage of cells that test (stain) positive for the presence of a receptor." Value: Range @@ -387,19 +387,19 @@ Value: CodeableConcept from ProgressionVS Element: AllredProportionScore Concept: CAP#31054 - Based on: DataElementItem + Based on: DependentDataElement Description: "Part of Allred scoring, based on the percentage of cells that stain for a receptor, on a scale of 0 to 5." Value: Quantity with units UCUM#1 Element: AllredIntensityScore Concept: CAP#29749 - Based on: DataElementItem + Based on: DependentDataElement Description: "Part of the Allred scoring, based on the intensity of that staining, on a scale of 0 to 3." Value: Quantity with units UCUM#1 Element: AllredTotalScore Concept: CAP#31056 - Based on: DataElementItem + Based on: DependentDataElement Description: "The total Allred score, the total of proportion and intensity scores, from 0 to 8." Value: Quantity with units UCUM#1 // unsignedInt - limit to max of 8 @@ -414,25 +414,25 @@ Concept: MTH#C4086369 0..0 Value DataItemCode is TBD#TBD DiagnosticService is #pathology - DataElementItem + DependentDataElement includes 0..1 TumorPrimaryDimensionSize includes 0..1 TumorSecondaryDimensionSize includes 0..1 SizeOfGrossTumorBed Element: TumorPrimaryDimensionSize Description: "The longest diameter of the primary tumor." - Based on: DataElementItem + Based on: DependentDataElement Concept: TBD Value: Quantity with units UCUM#mm Element: TumorSecondaryDimensionSize Description: "The longest perpendicular diameter of the primary tumor." - Based on: DataElementItem + Based on: DependentDataElement Concept: TBD Value: Quantity with units UCUM#mm Element: SizeOfGrossTumorBed - Based on: DataElementItem + Based on: DependentDataElement Concept: TBD Description: "The largest dimension of the gross tumor bed/fibrotic area." Value: Quantity with units UCUM#mm @@ -445,7 +445,7 @@ Description: "The edge or border of the tissue removed in cancer surgery. The ma Value: CodeableConcept from PositiveNegativeVS DataItemCode is MTH#C4086369 DiagnosticService is #pathology - DataElementItem + DependentDataElement includes 0..1 TumorMarginDescription includes 0..1 Cellularity // not sure this belongs here includes 0..1 PercentageInSituCarcinoma // not sure this belongs here @@ -459,12 +459,12 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Element: Cellularity Concept: MTH#C4055283 - Based on: DataElementItem + Based on: DependentDataElement Description: "Percentage of cells in a sample that are cancerous" Value: Quantity with units UCUM#% Element: PercentageInSituCarcinoma - Based on: DataElementItem + Based on: DependentDataElement Concept: TBD Description: "The percentage of the cancer that is in situ, as opposed to invading other tissues." Value: Quantity with units UCUM#% @@ -478,7 +478,7 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Value: Quantity with units UCUM#% DataItemCode is LNC#29593-1 DiagnosticService is #pathology - DataElementItem + DependentDataElement includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered Element: S-PhaseFraction @@ -500,11 +500,11 @@ Value: CodeableConcept from PositiveNegativeVS 0..0 ReferenceRange 0..0 DeltaFlag 0..0 AnatomicalLocation - DataElementItem + DependentDataElement includes 0..1 Refseq Element: Refseq - Based on: DataElementItem + Based on: DependentDataElement Concept: TBD Description: "The Reference Sequence (RefSeq) collection provides a comprehensive, integrated, non-redundant, well-annotated set of sequences, including genomic DNA, transcripts, and proteins. RefSeq sequences form a foundation for medical, functional, and diversity studies. They provide a stable reference for genome annotation, gene identification and characterization, mutation and polymorphism analysis (especially RefSeqGene records), expression studies, and comparative analyses." Value: CodeableConcept from RefseqVS @@ -515,7 +515,7 @@ Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." Observation.DataItemCode is TBD#TBD DiagnosticService is #genetics -0..0 DataElementItem +0..0 DependentDataElement PanelMembers.EvaluationresultRecorded includes 1..1 BRCA1Variant includes 1..1 BRCA2Variant diff --git a/spec/shr_research.txt b/spec/shr_research.txt index b013e382..702690de 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.research Description: "The SHR research domain contains definitions related to the clinical trials and research studies." -Uses: shr.core, shr.base, cimi.element, cimi.statement, cimi.entity +Uses: shr.core, shr.base, cimi.element, cimi.entity EntryElement: Study diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 0f010746..19c9d617 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: sw Description: "SHR implementation of the HL7 Pressure Ulcer Prevention Domain Analysis Model (May, 2011)." -Uses: shr.core, shr.base, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition +Uses: shr.core, shr.base, cimi.entity, cimi.element, shr.encounter, shr.condition CodeSystem: UCUM = http://unitsofmeasure.org CodeSystem: LNC = http://loinc.org @@ -124,7 +124,7 @@ Description: "Group of observations regarding the properties and severity of a w DataItemCode is LNC#39135-9 0..0 ReferenceRange Media is type PhotographicImage // 72170-4 Photographic image [Media] - DataElementItem + DependentDataElement includes 0..1 WoundEpisode // very similar to Episodicity or ClinicalStatus, but value set is different. includes 0..1 WoundTrend includes 0..1 WoundPeriwoundDescription // 72301-5 Description of Periwound @@ -209,7 +209,7 @@ Description: "The appearance of the base (bed) of the wound, together with the p DataItemCode is LNC#89254-7 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DataElementItem + DependentDataElement includes 1..1 WoundBedAppearance includes 1..1 WoundBedAppearancePercentage @@ -234,7 +234,7 @@ Description: "Color of part or all of the wound base (bed), and the percentage o DataItemCode is TBD#TBD 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DataElementItem + DependentDataElement includes 1..1 WoundBedColor includes 1..1 WoundBedColorAreaPercentage @@ -261,7 +261,7 @@ Description: "The state of the tissue at the edge of the wound." DataItemCode is LNC#89256-2 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DataElementItem + DependentDataElement includes 1..1 WoundEdgeDescription includes 0..1 WoundEdgeColor // LOINC:Is the entire edge of the wound described by one color? Or should it be by percentage, similar to the wound bed? @@ -287,7 +287,7 @@ Description: "A discharging blind-ended track that extends from the surface of a DataItemCode is LNC#89257-0 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DataElementItem + DependentDataElement includes 0..1 WoundTunnelLength includes 0..1 WoundTunnelClockDirection @@ -317,7 +317,7 @@ Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage aro 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DataElementItem + DependentDataElement includes 0..1 WoundUnderminingLength includes 0..1 WoundUnderminingClockDirection @@ -343,7 +343,7 @@ Description: "Description of the fluid produced by a wound." 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DataElementItem + DependentDataElement includes 0..1 WoundExudateAmount includes 0..1 WoundExudateVolume includes 1..1 WoundExudateAppearance @@ -392,7 +392,7 @@ Description: "The estimated or measured dimensions of a wound." 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DataElementItem + DependentDataElement includes 1..1 WoundLength includes 1..1 WoundWidth includes 0..1 WoundDepth From 2a91d656be2c10c81a9c61f47c175e64792f4651 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 16 Oct 2018 13:02:56 -0400 Subject: [PATCH 061/289] miinor revisions --- spec/shr_base.txt | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 67722d99..c3c7dab7 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -121,10 +121,11 @@ Description: "Parent class for any entry in clinical or administrative health-re Element: DependentDataElement Based on: InformationItem -Description: "A non-separable question-answer pair (data element) consisting of an observable property (represented by a code), value (or exception value), reference range, and interpretation. An observation component represents question-answer pair, and lack sufficient context for full interpretation, e.g., a reference to a patient, problem, or body structure. They do not stand alone, but can be included in observations." +Description: "A question-answer or phenomena-present/absent pair, independent of context. +A dependent data element lacks sufficient context for full interpretation, e.g., a reference to a patient, problem, or body structure, whereas a finding includes the necesssary context. A data element consists of an observable property or item (represented by a code), value or present/absent, and optionally, an exception value and reference range. Data elements can be included in observations as components." Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) // exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 -1..1 DataItemCode // redundant with Concept +1..1 DataItemCode // perhaps redundant with Concept 0..1 ReferenceRange // included here because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. 0..1 ExceptionValue @@ -170,18 +171,12 @@ Value: 0..1 Quantity Element: Finding Based on: DependentDataElement -Description: "A data item with context, representing a determination, opinion, result, or measurement." +Description: "A data element with context, representing a determination, opinion, result, or measurement." 0..1 Patient -0..* Focus 0..1 Encounter // findings are often associated with specific encounters 0..1 FindingMethod 1..1 FindingStatus - Element: Focus - Description: "The aspect or attribute of the subject of information that the finding relates to. The Focus is only required if the thing observed is different than the person of record (patient). For example, the subject of observation could be a specific condition if the property is progression, or a specific instance of a wound if the property is wound length. Focus should not be used to record anatomical location." - Value: string or CodeableConcept or Identifier or ref(InformationItem) - 0..1 RelationshipToPersonOfRecord - Element: FindingMethod Concept: TBD Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." @@ -199,6 +194,7 @@ Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The Focus can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." 0..1 RelevantTime +0..* Focus //0..0 Observer // 0..1 Interpretation 0..1 DeltaFlag @@ -215,6 +211,17 @@ Observation has a value representing the result (answer), or an ExceptionValue i 0..* DependentDataElement 0..1 PanelMembers + Element: RelevantTime + Concept: TBD + Description: "The time or time period that the finding addresses. + The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." + Value: dateTime or TimePeriod + + Element: Focus + Description: "The specific observed item finding relates to. The Focus is only required if the thing observed is different than the person of record (patient). For example, the subject of observation could be a specific condition if the property is progression, or a specific instance of a wound if the property is wound length. Focus should not be used to record anatomical location." + Value: string or CodeableConcept or Identifier or ref(InformationItem) + 0..1 RelationshipToPersonOfRecord + Element: Observer Concept: MTH#C0449416 Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." @@ -236,12 +243,6 @@ Observation has a value representing the result (answer), or an ExceptionValue i Description: "A clinical interpretation of a finding (applies to both assertions and observation)." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/observation-interpretation if covered - Element: RelevantTime - Concept: TBD - Description: "The time or time period that the finding addresses. - The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." - Value: dateTime or TimePeriod - Element: PanelMembers Concept: TBD Description: "PanelMembers represent the elements of a group of a related but independent evaluations. From c8d6a46d9852292821b7d6e8d3f43b8260fdeb30 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 24 Oct 2018 14:04:47 -0400 Subject: [PATCH 062/289] Clarifying Finding hierarchy --- spec/LandingPageBreastCancer.html | 8 +- spec/cimi_entity.txt | 5 + spec/shr_base.txt | 342 ++++++++++++++---------------- spec/shr_base_map.txt | 34 +-- spec/shr_core.txt | 6 +- spec/shr_occupation.txt | 93 ++++---- spec/shr_occupation_map.txt | 15 +- spec/shr_oncology.txt | 130 ++++++------ spec/shr_research.txt | 2 +- spec/shr_wound.txt | 90 ++++---- 10 files changed, 352 insertions(+), 373 deletions(-) diff --git a/spec/LandingPageBreastCancer.html b/spec/LandingPageBreastCancer.html index a686294b..d8ffbf0e 100644 --- a/spec/LandingPageBreastCancer.html +++ b/spec/LandingPageBreastCancer.html @@ -14,7 +14,7 @@

Table of Contents

Guidance for HL7 Voters

This section provides orientation to the ballot materials.

-

Where to Focus

+

Where to SpecificFocusOfFinding

There are several representations of the same content in the ballot materials. Different representations will be useful to different audiences:

  • Clinicians and cancer domain experts should primarily focus on the logical models. These models are the simplest representation of the content included in the ballot. Value sets will also be of interest.
  • @@ -84,7 +84,7 @@

    Class Hierarchy

    • -
      Locatable* > Independent > Content > InformationItem > ClinicalStatement > FindingStatement > Observation > LaboratoryObservation > CodedLaboratoryObservation > BreastCancerHistologicGrade
      +
      Locatable* > Independent > Content > InformationItem > Finding > FindingStatement > Observation > LaboratoryObservation > CodedLaboratoryObservation > BreastCancerHistologicGrade
    @@ -94,8 +94,8 @@

    Class Hierarchy

    This class hierarchy is a central feature of CIMI. To fully describe the CIMI modeling approach is beyond the scope of this IG, and the reader is referred to CIMI Modeling Architecture, Methodology & Style Guide. However, it is important to understand a central CIMI tenet, the Topic-Context pattern. 

    The CIMI Topic-Context Pattern

    -

    CIMI develops several class hierarchies. The first is the ClinicalStatement hierarchy, exemplified by the BreastCancerHistologicGrade hierarchy, above. A clinical statement represents a fact, opinion, or observation that relates to a patient, for example, "the patient has a diagnosis of congestive heart failure" or "patient has an order for physical therapy" [CIMI Modeling and Quality Guide]. 

    -

    However, ClinicalStatement is not the only class needed to construct a clinical statement. The clinical statement itself has no clinical content; to gain content, the ClinicalStatement class must reference a topic and a context. The topic is the clinical entity being described by the Clinical Statement, for example, a laboratory test. The context describes the circumstance applied to the topic. For example, we can speak of "blood pressure of 120/80" as an observation or a goal; similarly, we can speak of a procedure as recommended, ordered, planned, performed, or not performed. Both the topic and context are defined in class hierarchies of their own. For example, for the BreastCancerHistologicGrade, the topic hierarchy is as follows:

    +

    CIMI develops several class hierarchies. The first is the Finding hierarchy, exemplified by the BreastCancerHistologicGrade hierarchy, above. A clinical statement represents a fact, opinion, or observation that relates to a patient, for example, "the patient has a diagnosis of congestive heart failure" or "patient has an order for physical therapy" [CIMI Modeling and Quality Guide]. 

    +

    However, Finding is not the only class needed to construct a clinical statement. The clinical statement itself has no clinical content; to gain content, the Finding class must reference a topic and a context. The topic is the clinical entity being described by the Clinical Finding, for example, a laboratory test. The context describes the circumstance applied to the topic. For example, we can speak of "blood pressure of 120/80" as an observation or a goal; similarly, we can speak of a procedure as recommended, ordered, planned, performed, or not performed. Both the topic and context are defined in class hierarchies of their own. For example, for the BreastCancerHistologicGrade, the topic hierarchy is as follows:

    • Locatable* > NonIndependent > StatementTopic > FindingTopic > ObservationTopic > LaboratoryObservationTopic
    diff --git a/spec/cimi_entity.txt b/spec/cimi_entity.txt index 7287bec1..e3a6ff6d 100644 --- a/spec/cimi_entity.txt +++ b/spec/cimi_entity.txt @@ -16,6 +16,11 @@ Abstract Element: Entity Based on: EntityOrRole Concept: TBD Description: "Root class for entities such as people, organizations, and devices that have a separately identifiable existence." +0..1 PartOf + + Element: PartOf + Description: "The larger entity that the asserted item is a portion of. For example, an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." + Value: ref(InformationItem) EntryElement: Patient Based on: Role diff --git a/spec/shr_base.txt b/spec/shr_base.txt index c3c7dab7..68d8d6b0 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -9,129 +9,23 @@ CodeSystem: SCT = http://snomed.info/sct CodeSystem: NCI = https://evs.nci.nih.gov/ftp1/CDISC/SDTM/ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category -Element: Entry -Concept: MTH#C1705654 -Description: "Metadata attributes that apply to any item represented in the standard health record. An Entry may not belong exclusively to a single person's health record, but could represent an entity that surfaces in multiple records, such as organizations or practitioners. If the entry belongs to a single person's record, then the identity of the person of record must be recorded." -0..1 ShrId -1..1 EntryId -0..1 Version - Version value is type id -1..1 EntryType -1..1 CreationTime -1..1 LastUpdated -0..1 RecordStatus -0..1 Narrative -0..1 Language -0..* SecurityLabel -0..* Tag -0..* DerivedFrom -0..1 RecordedBy -0..1 SignedBy // Author -//0..* CosignedBy -//0..* VerifiedBy - - Element: ShrId - Concept: TBD - Description: "A unique, persistent, permanent identifier for the overall health record belonging to the Patient." - Value: id - - Element: EntryId - Concept: MTH#C0600091 - Description: "A persistent, permanent identifier for an entry in a health record, unique within the scope of the health record." - Value: id - - Element: EntryType // Would EntryClass be clearer? - Concept: TBD - Description: "SHR data element identifier, as a URI." - Value: uri - - Element: LastUpdated - Concept: TBD - Description: "The most recent date the entry was changed." - Value: instant - - Element: RecordStatus - Description: "Concept indicating the state of this record, e.g., 'entered in error'." - Value: CodeableConcept - - Element: Narrative - Concept: TBD - Description: "A human-readable narrative, potentially including images, that contains a summary of the resource, and may be used to represent the content of the resource to a human." - Value: xhtml - 1..1 NarrativeQualifier - - Element: NarrativeQualifier - Concept: TBD - Description: "Additional information on how the narrative was generated, and the scope of information contained." - Value: code from http://hl7.org/fhir/ValueSet/narrative-status - - Element: SecurityLabel - Concept: TBD - Description: "A code that connects the entry to a security policy. Security labels can be updated when the resource changes, or whenever the security sub-system chooses to." - Value: Coding - - Element: Tag - Concept: TBD - Description: "A code used to relate entries to categories or workflows. Applications are not required to consider the tags when interpreting the meaning of an entry." - Value: Coding - - Element: DerivedFrom - Concept: TBD - Description: "Indicates the source of information in the case the Entry has been created by logical extension or modification of one or more source entries." - Value: ref(InformationItem) - - Element: RecordedBy - Description: "The person who entered the order on behalf of another individual for example in the case of a verbal or a telephone order." - Value: Attribution - - Element: SignedBy - Description: "Provenance information specific to the signing of the clinical statement." - Value: Attribution - - Element: CosignedBy - Description: "Provenance information specific to the cosigning of the clinical statement." - Value: Attribution - - Element: VerifiedBy - Description: "Provenance information specific to the verification process associated with this statement (e.g., verifier, when verified, etc.)" - Value: Attribution - - Element: Attribution - Description: "Information ascribing the record to a particular contributor or responsible person." - 1..1 EntityOrRole - 0..1 RecordedOn - 0..1 Signature - - Element: RecordedOn - Description: "The time of the attribution action." - Value: instant - -/* - Element: HealthRecordId - Concept: MTH#C1549718 - Description: "A unique, persistent, permanent identifier for a health record." - Value: id -*/ - Element: InformationItem Concept: MTH#C1705654 Description: "Parent class for any entry in clinical or administrative health-related system, including information about organizations, providers, patients, services, payments, decision support artifacts, etc." -//------------- Data Item (aka data element) ------------ - -Element: DependentDataElement -Based on: InformationItem -Description: "A question-answer or phenomena-present/absent pair, independent of context. -A dependent data element lacks sufficient context for full interpretation, e.g., a reference to a patient, problem, or body structure, whereas a finding includes the necesssary context. A data element consists of an observable property or item (represented by a code), value or present/absent, and optionally, an exception value and reference range. Data elements can be included in observations as components." +Abstract Element: NonIndependentFinding +Based on: InformationItem +Description: "A finding that is part of another finding, does not or cannot stand alone." Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) // exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 -1..1 DataItemCode // perhaps redundant with Concept -0..1 ReferenceRange // included here because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. +1..1 MostSpecificCode 0..1 ExceptionValue +0..1 ReferenceRange // included here because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. - Element: DataItemCode - Description: "A code describing the data item. In an observation, the code reprsents the 'question': the aspect or property of the subject being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist, for example, the SNOMED-CT code for pneumonia." - Value: CodeableConcept + Element: ExceptionValue + Concept: TBD + Description: "Reason that a value associated with a test or other finding is missing." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/data-absent-reason if covered Element: ReferenceRange Concept: MTH#C0883335 @@ -151,31 +45,31 @@ Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time o Description: "The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so." // FHIR: how exactly does one indicate a neonatal or prenatal age? Value: Range - Element: ExceptionValue - Concept: TBD - Description: "Reason that a value associated with a test or other finding is missing." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/data-absent-reason if covered - -Element: CodedDataElement -Based on: DependentDataElement -Description: "An data item whose value is a code (concept)." -Value: 0..1 CodeableConcept -0..0 ReferenceRange - -Element: QuantitativeDataElement -Based on: DependentDataElement -Description: "An data item whose value is a code (concept)." -Value: 0..1 Quantity - -//-------------Findings------------ - -Element: Finding -Based on: DependentDataElement -Description: "A data element with context, representing a determination, opinion, result, or measurement." +Abstract Element: Finding +Based on: NonIndependentFinding // Although the parent is NonIndependentFinding, a Finding can be independent. It's a modeling compromise that allows better mapping. +Description: "An assertion, determination, opinion, evaluation, result, observation, or measurement made by a person or device." 0..1 Patient +0..1 SpecificFocusOfFinding 0..1 Encounter // findings are often associated with specific encounters 0..1 FindingMethod 1..1 FindingStatus +0..1 RelevantTime +0..* NonIndependentFinding + + Element: SpecificFocusOfFinding + Description: "The specific observed item finding relates to. The SpecificFocusOfFinding is only required if the thing observed is different than the patient. The SpecificFocusOfFinding could be a relative of the patient, a location, or a group. The SpecificFocusOfFinding for cancer progression would be the cancer condition. If the property is wound length, the SpecificFocusOfFinding would be an instance of a wound. In the case of an assertion of existence, the SpecificFocusOfFinding is the larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter. SpecificFocusOfFinding should not be used to record anatomical location." + Value: string or CodeableConcept or Identifier or ref(InformationItem) + 0..1 RelationshipToPersonOfRecord + + Element: MostSpecificCode + Description: "A code describing the data item. In an observation, the code reprsents the 'question': the aspect or property of the subject being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist, for example, the SNOMED-CT code for pneumonia." + Value: CodeableConcept + + Element: RelevantTime + Concept: TBD + Description: "The time or time period that the statement addresses. + The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." + Value: dateTime or TimePeriod Element: FindingMethod Concept: TBD @@ -188,13 +82,11 @@ Description: "A data element with context, representing a determination, opinion Value: code or CodeableConcept -EntryElement: Observation // TODO: be consistent, or stop using the word "Statement" in class names +EntryElement: Observation Based on: Finding Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. -Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The Focus can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -0..1 RelevantTime -0..* Focus +Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." //0..0 Observer // 0..1 Interpretation 0..1 DeltaFlag @@ -208,20 +100,8 @@ Observation has a value representing the result (answer), or an ExceptionValue i 0..* Media FindingStatus value is type code FindingStatus from http://hl7.org/fhir/ValueSet/observation-status -0..* DependentDataElement 0..1 PanelMembers - Element: RelevantTime - Concept: TBD - Description: "The time or time period that the finding addresses. - The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." - Value: dateTime or TimePeriod - - Element: Focus - Description: "The specific observed item finding relates to. The Focus is only required if the thing observed is different than the person of record (patient). For example, the subject of observation could be a specific condition if the property is progression, or a specific instance of a wound if the property is wound length. Focus should not be used to record anatomical location." - Value: string or CodeableConcept or Identifier or ref(InformationItem) - 0..1 RelationshipToPersonOfRecord - Element: Observer Concept: MTH#C0449416 Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." @@ -274,7 +154,7 @@ Description: "An observation not based on a specimen." EntryElement: SimpleNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation having no components or panel members" -0..0 DependentDataElement +0..0 NonIndependentFinding 0..0 PanelMembers EntryElement: CodedNonLaboratoryObservation @@ -287,7 +167,7 @@ Value: CodeableConcept EntryElement: SimpleCodedNonLaboratoryObservation Based on: CodedNonLaboratoryObservation Description: "An observation whose result is a code, and also having no components or panel members" -0..0 DependentDataElement +0..0 NonIndependentFinding 0..0 PanelMembers EntryElement: ComponentOnlyNonLaboratoryObservation @@ -304,7 +184,7 @@ Description: "An observation with panel members, but without a result value or c 0..0 Value 0..0 ExceptionValue 0..0 ReferenceRange -0..0 DependentDataElement +0..0 NonIndependentFinding 1..1 PanelMembers // Laboratory Measurements and Results @@ -332,62 +212,45 @@ Value: CodeableConcept EntryElement: SimpleLaboratoryObservation Based on: LaboratoryObservation Description: "A coded finding from a laboratory test without further panel members or components." -0..0 DependentDataElement +0..0 NonIndependentFinding 0..0 PanelMembers EntryElement: SimpleCodedLaboratoryObservation Based on: CodedLaboratoryObservation Description: "A coded finding from a laboratory test without further panel members or components." -0..0 DependentDataElement +0..0 NonIndependentFinding 0..0 PanelMembers //---------- Assertions ------------- Abstract Element: ExistenceAssertion Based on: Finding -Description: "An assertion that an event has or has not taken place, or a relationship, situation, condition, or other phenomenon is present or absent." +Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place." Value: CodeableConcept from PresentAbsentVS 0..0 ReferenceRange -0..0 ExceptionValue -0..* PartOf -0..1 ObjectIdentifier +0..1 ObjectIdentifier // TODO: 0..* business identifier? 0..1 Certainty FindingStatus value is type CodeableConcept - Element: PartOf - Description: "The larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." - Value: ref(InformationItem) - Element: ObjectIdentifier Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." Value: string - Element: Certainty + Element: Certainty // TODO: why not move to Finding? Concept: TBD Description: "The degree of confidence in a conclusion or assertion." Value: CodeableConcept Abstract Element: PresenceAssertion Based on: ExistenceAssertion -Description: "Statement that a finding is present." +Description: "Finding that a phenomena is present." Value is SCT#52101004 "Present (qualifier value)" -0..1 Onset -0..1 Abatement 0..1 Certainty from PresenceCertaintyVS - Element: Onset - Concept: LNC#85585-8 - Description: "The beginning or first appearance of a mental or physical disorder." - Value: dateTime or Age or TimePeriod or Range or string - - Element: Abatement - Concept: LNC#88878-4 - Description: "The end, remission or resolution." - Value: dateTime or Age or boolean or TimePeriod or Range or string Abstract Element: AbsenceAssertion Based on: ExistenceAssertion -Description: "Statement that an entity, person, role, condition, or phenomenon is absent." +Description: "Finding that an entity, person, role, condition, or phenomenon is absent." Value is SCT#2667000 "Absent (qualifier value)" 0..1 Certainty from AbsenceCertaintyVS @@ -396,7 +259,7 @@ Based on: PresenceAssertion Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." //0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson - DataItemCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered + MostSpecificCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation 0..* ConditionCause @@ -406,6 +269,8 @@ Description: "A condition that is or may be present in a subject. 'Condition' is 0..1 Severity 0..1 Criticality 0..1 Stage +0..1 Onset +0..1 Abatement // TODO: change to observation Element: ConditionCause Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" @@ -458,13 +323,22 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Description: "Activities that increase the severity of the pathology" Value: CodeableConcept + Element: Onset + Concept: LNC#85585-8 + Description: "The beginning or first appearance of a mental or physical disorder." + Value: dateTime or Age or TimePeriod or Range or string + + Element: Abatement + Concept: LNC#88878-4 + Description: "The end, remission or resolution." + Value: dateTime or Age or boolean or TimePeriod or Range or string EntryElement: ConditionAbsenceAssertion Based on: AbsenceAssertion Concept: MTH#C0277541 "no disease present" Description: "A finding that a condition is or was not present in the subject at a certain time or time period, not necessarily the time the information is gathered." - DataItemCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered + MostSpecificCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation @@ -627,3 +501,109 @@ Description: "Compositional and reusable grouping of attributes that make up th For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." Value: CodeableConcept + + +Element: Entry +Concept: MTH#C1705654 +Description: "Metadata attributes that apply to any item represented in the standard health record. An Entry may not belong exclusively to a single person's health record, but could represent an entity that surfaces in multiple records, such as organizations or practitioners. If the entry belongs to a single person's record, then the identity of the person of record must be recorded." +0..1 ShrId +1..1 EntryId +0..1 Version + Version value is type id +1..1 EntryType +1..1 CreationTime +1..1 LastUpdated +0..1 RecordStatus +0..1 Narrative +0..1 Language +0..* SecurityLabel +0..* Tag +0..* DerivedFrom +0..1 RecordedBy +0..1 SignedBy // Author +//0..* CosignedBy +//0..* VerifiedBy + + Element: ShrId + Concept: TBD + Description: "A unique, persistent, permanent identifier for the overall health record belonging to the Patient." + Value: id + + Element: EntryId + Concept: MTH#C0600091 + Description: "A persistent, permanent identifier for an entry in a health record, unique within the scope of the health record." + Value: id + + Element: EntryType // Would EntryClass be clearer? + Concept: TBD + Description: "SHR data element identifier, as a URI." + Value: uri + + Element: LastUpdated + Concept: TBD + Description: "The most recent date the entry was changed." + Value: instant + + Element: RecordStatus + Description: "Concept indicating the state of this record, e.g., 'entered in error'." + Value: CodeableConcept + + Element: Narrative + Concept: TBD + Description: "A human-readable narrative, potentially including images, that contains a summary of the resource, and may be used to represent the content of the resource to a human." + Value: xhtml + 1..1 NarrativeQualifier + + Element: NarrativeQualifier + Concept: TBD + Description: "Additional information on how the narrative was generated, and the scope of information contained." + Value: code from http://hl7.org/fhir/ValueSet/narrative-status + + Element: SecurityLabel + Concept: TBD + Description: "A code that connects the entry to a security policy. Security labels can be updated when the resource changes, or whenever the security sub-system chooses to." + Value: Coding + + Element: Tag + Concept: TBD + Description: "A code used to relate entries to categories or workflows. Applications are not required to consider the tags when interpreting the meaning of an entry." + Value: Coding + + Element: DerivedFrom + Concept: TBD + Description: "Indicates the source of information in the case the Entry has been created by logical extension or modification of one or more source entries." + Value: ref(InformationItem) + + Element: RecordedBy + Description: "The person who entered the order on behalf of another individual for example in the case of a verbal or a telephone order." + Value: Attribution + + Element: SignedBy + Description: "Provenance information specific to the signing of the clinical statement." + Value: Attribution + + Element: CosignedBy + Description: "Provenance information specific to the cosigning of the clinical statement." + Value: Attribution + + Element: VerifiedBy + Description: "Provenance information specific to the verification process associated with this statement (e.g., verifier, when verified, etc.)" + Value: Attribution + + Element: Attribution + Description: "Information ascribing the record to a particular contributor or responsible person." + 1..1 EntityOrRole + 0..1 RecordedOn + 0..1 Signature + + Element: RecordedOn + Description: "The time of the attribution action." + Value: instant + +/* + Element: HealthRecordId + Concept: MTH#C1549718 + Description: "A unique, persistent, permanent identifier for a health record." + Value: id +*/ + diff --git a/spec/shr_base_map.txt b/spec/shr_base_map.txt index 830666e8..1b2a2fd5 100644 --- a/spec/shr_base_map.txt +++ b/spec/shr_base_map.txt @@ -27,7 +27,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs // RecordStatus maps to extension // _Entry.CosignedBy maps to extension // _Entry.VerifiedBy maps to extension - DataItemCode maps to code + MostSpecificCode maps to code FindingMethod maps to method AdditionalText maps to comment // Media maps to extension @@ -41,13 +41,14 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.Range.UpperBound maps to referenceRange.high ReferenceRange.Type maps to referenceRange.type ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo - ReferenceRange.ApplicableAgeRange maps to referenceRange.age - DependentDataElement maps to component (slice on = coding.code; slice strategy = includes) - DependentDataElement._Concept maps to component.code - DependentDataElement.Value maps to component.value[x] - DependentDataElement.ExceptionValue maps to component.dataAbsentReason - //DependentDataElement.Interpretation maps to component.interpretation - DependentDataElement.ReferenceRange maps to component.referenceRange + ReferenceRange.ApplicableAgeRange maps to referenceRange.age + NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) + NonIndependentFinding._Concept maps to component.code + // TODO: change to MostSpecificCode + NonIndependentFinding.Value maps to component.value[x] + NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason + //NonIndependentFinding.Interpretation maps to component.interpretation + NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) @@ -68,7 +69,7 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us // RecordStatus maps to extension // _Entry.CosignedBy maps to extension // _Entry.VerifiedBy maps to extension - DataItemCode maps to code + MostSpecificCode maps to code FindingMethod maps to method AdditionalText maps to comment // Media maps to extension @@ -83,12 +84,13 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us ReferenceRange.Type maps to referenceRange.type ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age - DependentDataElement maps to component (slice on = coding.code; slice strategy = includes) - DependentDataElement._Concept maps to component.code - DependentDataElement.Value maps to component.value[x] - DependentDataElement.ExceptionValue maps to component.dataAbsentReason - //DependentDataElement.Interpretation maps to component.interpretation - DependentDataElement.ReferenceRange maps to component.referenceRange + NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) + NonIndependentFinding._Concept maps to component.code + // TODO: change to MostSpecificCode + NonIndependentFinding.Value maps to component.value[x] + NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason + //NonIndependentFinding.Interpretation maps to component.interpretation + NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) @@ -106,7 +108,7 @@ ConditionPresenceAssertion maps to http://hl7.org/fhir/us/core/StructureDefiniti // Patient maps to subject // SourceOfInformation.Value maps to asserter // why doesn't this work? Category maps to category - DataItemCode maps to code + MostSpecificCode maps to code constrain bodySite to 0..0 AnatomicalLocation maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Encounter maps to context diff --git a/spec/shr_core.txt b/spec/shr_core.txt index c0c16372..b7f69a21 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -418,19 +418,19 @@ Description: "The measurement or linear extent of something from end to end; the Units with Coding from UnitsOfLengthVS Element: Depth -Based on: DependentDataElement +Based on: NonIndependentFinding Concept: SCT#131197000 "Depth (qualifier value)" Description: "The extent downward or inward; the perpendicular measurement from the surface downward to determine deepness." Value: Quantity with units UCUM#cm Element: Area -Based on: DependentDataElement +Based on: NonIndependentFinding Concept: SCT#42798000 "Area (qualifier value)" Description: "The extent of a 2-dimensional surface enclosed within a boundary." Value: Quantity with units UCUM#cm2 Element: ClockDirection -Based on: CodedDataElement +Based on: NonIndependentFinding Concept: LNC#72294-2 Description: "A direction indicated by an angle relative to 12 o'clock." Value: CodeableConcept from ClockDirectionVS diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 83b17ffb..c1b20d30 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -8,25 +8,16 @@ CodeSystem: UCUM = http://unitsofmeasure.org CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category CodeSystem: V2 = http://hl7.org/fhir/v2/0131 -Element: SocialHistoryComposition -Based on: Composition -Description: "A composition represents a document such as a patient record, a knowledge artifact, or a catalog definition." - Section is type SocialHistorySection - - Element: SocialHistorySection - Based on: Section - Description: "Represents a section containing entries in a social history composition." - InformationItem is type SocialHistoryObservation EntryElement: OccupationalDataForHealth Concept: LNC#74166-0 -Based on: SocialHistoryComposition +Based on: Composition Description: "Current and past activities for profit, wages, salary, or as a service to others." -1..1 SocialHistorySection is type OccupationalDataSection +1..1 Section is type OccupationalDataSection Element: OccupationalDataSection Concept: TBD -Based on: SocialHistorySection +Based on: Section Description: "Single section in the current OccupationalDataSummary, containing the person's history of employment and occupation, past and present." InformationItem includes 0..* PersonEmploymentStatus @@ -42,8 +33,8 @@ Description: "The self-reported current and historical data about a person's eco A person's Employment Status could change over time, for example, a person could be employed following a period of choosing to not be in the labor force. Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 - DataItemCode is LNC#74165-2 "HistoryOfEmploymentStatus" -0..0 DependentDataElement + MostSpecificCode is LNC#74165-2 "HistoryOfEmploymentStatus" +0..0 NonIndependentFinding 0..0 FocalSubjectModifier EntryElement: RetirementDate @@ -53,8 +44,8 @@ Description: "A self-reported date that a person considers themselves to have A person can be both retired and employed (an Employment Status); most often, a person would be retired from one job and employed in another job. A person also can have more than one retirement date; for example, a person could retire from military service, then later retire from a civilian job. Multiple retirement dates should be recorded using multiple FHIR resources. Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." Value: dateTime - DataItemCode is LNC#87510-4 "Date of Retirement" -0..0 DependentDataElement + MostSpecificCode is LNC#87510-4 "Date of Retirement" +0..0 NonIndependentFinding 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. 0..0 FocalSubjectModifier @@ -64,8 +55,8 @@ Concept: LNC#87511-2 Description: "Self-reported date range(s) when a person worked in what is considered a combat zone; sometimes called a hazardous duty work. Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones. Multiple periods in combat zone should be recorded using multiple FHIR resources." Value: TimePeriod - DataItemCode is LNC#87511-2 -0..0 DependentDataElement + MostSpecificCode is LNC#87511-2 +0..0 NonIndependentFinding 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. 0..0 FocalSubjectModifier // only patient @@ -77,29 +68,29 @@ Knowledge of person's Usual Work can potentially assist in diagnosis, treatment Example: a person has worked for a total of 30 years as a 'secretary' (Occupation), but in various industries, mostly hotel construction. Her Usual Occupation is 'secretary' and her Usual Industry is 'hotel construction.' Usual Work does not include work that was unpaid or voluntary." Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 - DataItemCode is LNC#21843-8 - DependentDataElement + MostSpecificCode is LNC#21843-8 + NonIndependentFinding includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration 1..1 RelevantTime RelevantTime value is type TimePeriod Element: UsualIndustry - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#21844-6 "History of Usual industry" Description: "The industry (type of business) which the subject has worked in for the longest duration while in the usual occupation. For example, a person who has spent 30 years as a secretary in various industries, but mostly in construction, would record a usual occupation of secretary and a usual industry of construction." // "A history of this observation is not retained. Actually past versions of the observation could be retained, but the panel should refer to the latest one only. //Value: CodeableConcept from IndustryVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - DataItemCode is LNC#21844-6 "History of Usual industry" + MostSpecificCode is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#74163-7 "Usual occupation duration" Description: "The total time spent on an activity, inclusive of all time intervals, whether continuous or interrupted." Value: Quantity with units UCUM#a - DataItemCode is LNC#74163-7 "Usual occupation duration" + MostSpecificCode is LNC#74163-7 "Usual occupation duration" EntryElement: PastOrPresentJob Based on: CodedSocialHistoryObservation @@ -109,9 +100,9 @@ A person can have more than one job at the same time and multiple jobs over time A person's job can be a social determinant of their health and information about a person's job can support patient care, population health, and public health. In patient care, knowledge of a person's past or present job(s) can impact recognition, diagnosis, management, and treatment of injuries and illnesses. These data also can be used for clinical decision support and to prompt discussion of preventive care measures. For example, a record of jobs that require prolonged time in the sun might prompt a health care provider to inquire if the person wears protective clothing or sunscreen while working. At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." 0..0 Value - DataItemCode is LNC#11341-5 "History of Occupation" + MostSpecificCode is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization - DependentDataElement + NonIndependentFinding includes 0..1 Occupation includes 0..1 PastOrPresentIndustry includes 0..1 WorkClassification @@ -126,7 +117,7 @@ includes 0..1 IsCurrentJob RelevantTime value is type TimePeriod Element: Occupation - Based on: CodedDataElement + Based on: Observation Concept: LNC#85659-1 "Occupation CDC Census code" Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 @@ -144,69 +135,69 @@ includes 0..1 IsCurrentJob Description: "An Organization as defined in FHIR" Element: PastOrPresentIndustry - Based on: CodedDataElement + Based on: Observation Concept: LNC#86188-0 Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." // Value: CodeableConcept from IndustryVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - DataItemCode is LNC#86188-0 + MostSpecificCode is LNC#86188-0 Element: WorkClassification - Based on: CodedDataElement + Based on: Observation Concept: LNC#85104-8 "Compensation and sector employment type" Description: "Type of compensation and sector for a person's job, such as 'paid work, self-employed' or 'voluntary work', as reported by the person." //Value: CodeableConcept from WorkClassificationVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 - DataItemCode is LNC#85104-8 "Compensation and sector employment type" + MostSpecificCode is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#87707-6 Description: "A coded indicator of responsibilities for directing work and personnel management responsibilities for a person's job, as reported by the person. For US military jobs, this is pay grade." //Value: CodeableConcept from SupervisoryLevelVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 - DataItemCode is LNC#87707-6 + MostSpecificCode is LNC#87707-6 Element: JobDuty - Based on: DependentDataElement + Based on: NonIndependentFinding Concept: LNC#63761-1 Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " Value: string - DataItemCode is LNC#63761-1 + MostSpecificCode is LNC#63761-1 Element: OccupationalHazard - Based on: DependentDataElement + Based on: NonIndependentFinding Concept: LNC#87729-0 Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." Value: string - DataItemCode is LNC#87729-0 + MostSpecificCode is LNC#87729-0 Element: WorkSchedule - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#74159-5 Description: "Typical arrangement of working hours for a person's job, as reported by the person." //Value: CodeableConcept from WorkScheduleVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 - DataItemCode is LNC#74159-5 + MostSpecificCode is LNC#74159-5 Element: WeeklyWorkDays - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#74160-3 Description: "The average number of days per week that a person spends performing their duties for work." Value: Quantity with units UCUM#d 0..0 ReferenceRange Element: DailyWorkHours - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#87512-0 Description: "The average number of hours in a day that a person spends performing their duties for work." Value: Quantity with units UCUM#h - DataItemCode is LNC#87512-0 + MostSpecificCode is LNC#87512-0 0..0 ReferenceRange // Last minute addition 8/17 based on Genny's comment Element: IsCurrentJob - Based on: CodedDataElement + Based on: NonIndependentFinding Description: "A flag indicating if this is the person's current job (at the time the resource was last updated)." Value: CodeableConcept from YesNoVS @@ -244,7 +235,7 @@ Value: 0..1 CodeableConcept /* UsualWork is in the value element Element: UsualWork - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#21843-8 "History of Usual Occupation" // Occupation is LNC#74287-4 Description: "A person's work or business" Value: CodeableConcept from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 // VS defined in FHIR 3.2 and not found in 3.0.1 @@ -253,8 +244,8 @@ EntryElement: MilitaryServiceHistory Based on: CodedSocialHistoryObservation Description: "History of service in the US military." Category is OBSCAT#social-history - DataItemCode is MTH#C3714797 - DependentDataElement + MostSpecificCode is MTH#C3714797 + NonIndependentFinding includes 1..1 MilitaryStatus includes 0..1 MilitaryServiceDischargeStatus includes 0..1 MilitaryBranch @@ -265,30 +256,30 @@ includes 0..1 ServiceConnectedDisability Element: MilitaryStatus Concept: MTH#C1550416 - Based on: CodedDataElement + Based on: NonIndependentFinding Description: "The current connection to the US military." Value: CodeableConcept from MilitaryStatusVS Element: MilitaryServiceDischargeStatus Concept: TBD - Based on: CodedDataElement + Based on: NonIndependentFinding Description: "How the subject was formally discharged from the US Military." Value: CodeableConcept from MilitaryServiceDischargeStatusVS Element: MilitaryBranch Concept: MTH#C2129058 - Based on: CodedDataElement + Based on: NonIndependentFinding Description: "The branch of the US military that the subject has served." Value: CodeableConcept from USMilitaryBranchVS Element: MilitaryServiceEra Concept: TBD - Based on: CodedDataElement + Based on: NonIndependentFinding Description: "The time period of US military service." Value: CodeableConcept from MilitaryServiceEraVS Element: ServiceConnectedDisability - Based on: DependentDataElement + Based on: NonIndependentFinding Concept: TBD Description: "Percentage disability resulting from US Military Service." Value: Quantity with units UCUM#% diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index 054a65b0..8d3f99b0 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -5,14 +5,15 @@ Target: FHIR_STU_3 // do not map to US Core Results -- Brett says that's only for labs SocialHistoryObservation maps to Observation: Patient maps to subject - DataItemCode maps to code + MostSpecificCode maps to code Category maps to category - DependentDataElement maps to component (slice on = coding.code; slice strategy = includes) - DependentDataElement._Concept maps to component.code - DependentDataElement.Value maps to component.value[x] - DependentDataElement.ExceptionValue maps to component.dataAbsentReason -// DependentDataElement.Interpretation maps to component.interpretation - DependentDataElement.ReferenceRange maps to component.referenceRange + NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) + NonIndependentFinding._Concept maps to component.code + // TODO: change to MostSpecificCode + NonIndependentFinding.Value maps to component.value[x] + NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason + //NonIndependentFinding.Interpretation maps to component.interpretation + NonIndependentFinding.ReferenceRange maps to component.referenceRange // constrain related to 0..0 Value maps to value[x] // ExceptionValue maps to dataAbsentReason diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index 8ed53afe..c467c5b6 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -42,7 +42,7 @@ EntryElement: BreastCancerPresenceStatement Based on: ConditionPresenceAssertion Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." - DataItemCode from BreastCancerTypeVS + MostSpecificCode from BreastCancerTypeVS Stage.StageDetail value is type BreastCancerStage 0..1 FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding AnatomicalLocation is type BreastSite @@ -60,9 +60,9 @@ Based on: Observation Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. Description: "The stage of a breast cancer. Different staging systems use different staging groups, so there are currently no terminology bindings associated with this class." Value: CodeableConcept should be from http://loinc.org/LL240-3 - DataItemCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" + MostSpecificCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" 0..1 StageTimingPrefix - DependentDataElement + NonIndependentFinding includes 0..1 BreastCancerPrimaryTumorClassification includes 0..1 BreastCancerRegionalNodesClassification includes 0..1 BreastCancerDistantMetastasesClassification @@ -84,14 +84,14 @@ includes 0..1 BreastCancerHistologicGrade Element: BreastCancerPrimaryTumorClassification Concept: SCT#78873005 "T category" - Based on: CodedDataElement + Based on: NonIndependentFinding Description: "The size and extent of the primary tumor, based on criteria defined by the staging system being used." Value: CodeableConcept 0..1 StageSuffix Element: BreastCancerRegionalNodesClassification Concept: SCT#277206009 "N category" //RMB: was LNC#59525-6, which is specific to AJCC 7th edition - Based on: CodedDataElement + Based on: NonIndependentFinding Description: "The presence of metastases in regional lymph nodes, based on criteria defined by the staging system being used." Value: CodeableConcept 0..1 StageSuffix @@ -103,7 +103,7 @@ includes 0..1 BreastCancerHistologicGrade Element: BreastCancerDistantMetastasesClassification Concept: SCT#277208005 "M category (observable entity)" //RMB: was LNC#59522-3, which is specific to AJCC 7th edition - Based on: CodedDataElement + Based on: NonIndependentFinding Description: "The presence of distant metastases, based on criteria defined by the staging system being used." Value: CodeableConcept @@ -114,7 +114,7 @@ Based on: SimpleCodedLaboratoryObservation Description: "An evaluation of the size and shape of the nucleus in tumor cells and the percentage of tumor cells that are in the process of dividing or growing. Cancers with low nuclear grade grow and spread less quickly than cancers with high nuclear grade." Value: CodeableConcept from NuclearGradeVS Specimen is type BreastSpecimen - DataItemCode is MTH#C18513 + MostSpecificCode is MTH#C18513 DiagnosticService is #pathology @@ -124,10 +124,10 @@ Based on: CodedLaboratoryObservation Description: "The Elston Grade/Nottingham Score, representative of the aggressive potential of the tumor. Well differentiated cells (Grade 1) look similar to normal cells and are usually slow growing, while poorly differentiated cells (Grade 3) look very different than normal and are fast-growing." Value: CodeableConcept from NottinghamCombinedGradeVS ExceptionValue from NottinghamNullVS - DataItemCode is LNC#44648-4 + MostSpecificCode is LNC#44648-4 Specimen is type BreastSpecimen DiagnosticService is #pathology - DependentDataElement + NonIndependentFinding includes 0..1 TubuleFormationScore includes 0..1 NuclearPleomorphismScore includes 0..1 MitoticCountScore @@ -136,21 +136,21 @@ includes 0..1 MitoticCountScore //RMB: the CAP form has two additional options for each of these subcomponents: "only microinvasion present" and "no residual invasive carcinoma", both of which are situations where a histologic grade wouldn't be assigned. Because the our exceptions value set doesn't handle these options (and possibly others related to other data elements, should we allow for a string option to contain reasons for missing data? Otherwise the expection value set might become unruly. Element: TubuleFormationScore Concept: LNC#85321-8 "Granular differentiation" // SHOULD BE LOINC - Based on: CodedDataElement + Based on: NonIndependentFinding Description: "Glandular differentiation [Score] in Breast cancer specimen Qualitative by Nottingham." Value: CodeableConcept from TubuleFormationScoreVS //TODO: Determine if it is better to use codes as opposed to a number 1, 2 or 3. Observations don't support integer or posInteger ExceptionValue from NottinghamComponentNullVS Element: NuclearPleomorphismScore Concept: LNC#44645-0 - Based on: CodedDataElement + Based on: NonIndependentFinding Description: "Nuclear pleomorphism in Breast tumor Qualitative by Nottingham." Value: CodeableConcept from NuclearPleomorphismScoreVS ExceptionValue from NottinghamComponentNullVS Element: MitoticCountScore Concept: LNC#85300-2 - Based on: CodedDataElement + Based on: NonIndependentFinding Description: "Mitotic rate [Score] in Breast cancer specimen Qualitative by Nottingham." Value: CodeableConcept from MitoticCountScoreVS // 1 to 3 //RMB: this shouldn't be different from TubuleFormationScore and NuclearPleomorphismScore. They have the same scoring mechanism. Suggest using local codes. ExceptionValue from MitoticCountScoreNullVS @@ -161,10 +161,10 @@ Concept: LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" Description: "Estrogen receptor alpha is the predominant estrogen receptor expressed in breast tissue and is overexpressed in around 50% of breast carcinomas. ER status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options. The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." Value: CodeableConcept from PositiveNegativeVS - DataItemCode is LNC#16112-5 + MostSpecificCode is LNC#16112-5 DiagnosticService is #pathology Specimen is type BreastSpecimen - DependentDataElement + NonIndependentFinding includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers @@ -183,16 +183,16 @@ Concept: LNC#16113-3 Description: "Progesterone receptor status is a factor in determining prognosis and treatment options. The value is the percentage of cells that test (stain) positive for the presence of a receptor. The interpretation of positive or negative (found in the interpretation property) is based on the staining percentage, and may take into account the staining intensity. Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." Value: CodeableConcept from PositiveNegativeVS - DataItemCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" + MostSpecificCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" DiagnosticService is #pathology Specimen is type BreastSpecimen - DependentDataElement + NonIndependentFinding includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers Element: NuclearPositivity - Based on: DependentDataElement + Based on: NonIndependentFinding Concept: TBD // apparently no LOINC code Description: "The percentage of cells that test (stain) positive for the presence of a receptor. We are seeking feedback on whether nuclear positivity should be an exact percentage or a range of percentages. As currently defined, an exact nuclear positivity could be represented by a zero-width range, where the lower and upper bounds would be the same number." @@ -200,7 +200,7 @@ includes 0..1 AverageStainingIntensity Element: AverageStainingIntensity Concept: SCT#444775005 "Average intensity of positive staining neoplastic cells (observable entity)" - Based on: CodedDataElement + Based on: NonIndependentFinding Description: "The degree or magnitude of staining (nuclear positivity) across cells in the specimen." Value: CodeableConcept from StainingIntensityVS @@ -209,12 +209,12 @@ Based on: CodedLaboratoryObservation Concept: LNC#48676-1 "HER2 [Interpretation] in Tissue" Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." Value: CodeableConcept from PositiveNegativeEquivocalVS - DataItemCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" + MostSpecificCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" DiagnosticService is #pathology Specimen is type BreastSpecimen 0..0 Precondition 0..0 FindingMethod -0..0 DependentDataElement +0..0 NonIndependentFinding PanelMembers.Observation includes 0..* HER2byIHC includes 0..* HER2byFISH @@ -227,17 +227,17 @@ Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (I Value: CodeableConcept from HER2byIHCScoreVS ExceptionValue from HER2byIHCScoreNullVS Interpretation from PositiveNegativeEquivocalVS - DataItemCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" -0..0 FindingMethod // pre-coordinated in the DataItemCode + MostSpecificCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" +0..0 FindingMethod // pre-coordinated in the MostSpecificCode DiagnosticService is #pathology 0..0 Precondition Specimen is type BreastSpecimen - DependentDataElement + NonIndependentFinding includes 0..1 CompleteMembraneStainingPercent 0..0 PanelMembers Element: CompleteMembraneStainingPercent - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#85328-3 "Cells.HER2 uniform intense membrane staining/100 cells" Description: "Percentage of cells with uniform intense complete membrane staining." Value: Quantity with units UCUM#% // TODO: Percentage causes CLI error @@ -250,32 +250,32 @@ Concept: LNC#85318-4 // Corrected 5/12/2018 by MK Description: "HER2 receptor status as determined by single-probe or dual-probe Fluorescence In Situ Hybridization (FISH)." 0..0 Value 0..0 ExceptionValue - DataItemCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" + MostSpecificCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" FindingMethod from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS DiagnosticService is #pathology 0..0 Precondition Specimen is type BreastSpecimen - DependentDataElement + NonIndependentFinding includes 0..1 AverageHER2SignalsPerCell includes 0..1 AverageCEP17SignalsPerCell includes 0..1 HER2toCEP17Ratio 0..0 PanelMembers Element: AverageHER2SignalsPerCell - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#74860-8 Description: "Average number of HER2 signals per cell" 0..0 ReferenceRange Element: AverageCEP17SignalsPerCell - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#74861-6 Description: "Average number CEP17 signals per cell (dual probe only)" 0..0 ReferenceRange Element: HER2toCEP17Ratio - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#49683-6 Description: "HER2 to CEP17 Ratio (dual probe only)" 0..0 ReferenceRange @@ -286,7 +286,7 @@ Concept: MTH#C1709318 Description: "The Oncotype DX test for invasive breast cancer examines the activity of 21 genes in a patient’s breast tumor tissue to provide personalized information for tailoring treatment based on the biology of their individual disease. The value from 0 to 100 indicates the estimated risk of recurrence, with the highest risk indicated by a score greater than 31. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" Value: Quantity with units UCUM#1 - DataItemCode is MTH#C1709318 + MostSpecificCode is MTH#C1709318 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type ref(BreastSpecimen) @@ -298,7 +298,7 @@ Concept: MTH#C3898101 Description: "The Oncotype DX test for DCIS (Ductal Carcinoma in Situ) breast cancer. Risk scores range from 0 to 100 with the following interpretations: 0-38: Low-Risk, 39-54: Intermediate-Risk, 55+: High-Risk. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" Value: Quantity with units UCUM#1 - DataItemCode is MTH#C3898101 + MostSpecificCode is MTH#C3898101 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -309,7 +309,7 @@ Concept: LNC#76544-6 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Prosigna. The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Risk of Recurrence Score in the literature), which is correlated with the probability of distant recurrence at ten years for post-menopausal women with hormone receptor positive, early stage breast cancer." Value: Quantity with units UCUM#1 - DataItemCode is LNC#76544-6 + MostSpecificCode is LNC#76544-6 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -321,7 +321,7 @@ Description: "Breast cancer genomic signature assay for 10-year risk of distant In the United States, MammaPrint can only be used on cancers that are stage I or stage II, invasive, smaller than 5 centimeters, and estrogen-receptor-positive or -negative. Scores range from -1.0 to +1.0, with scores less than 0 indicating high risk, and scores greater than 0 indicating low risk. The is currently no LOINC code for Mammaprint test." Value: Quantity - DataItemCode is MTH#C2827401 + MostSpecificCode is MTH#C2827401 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -332,11 +332,11 @@ Based on: Observation Concept: MTH#C0421176 "Progression" Description: "A finding related to the current trend of a particular existing disease. This concept is most often used for chronic and incurable diseases where the status and trendline of the disease is an important determinant of therapy and prognosis. The specific disorder being evaluated must be cited in the Focus_Reference or Focus_CodeableConcept as a reference to a Condition." Value: CodeableConcept from ProgressionVS - DataItemCode is MTH#C0421176 "Progression" + MostSpecificCode is MTH#C0421176 "Progression" 0..* ProgressionEvidence // "ProgressionEvidence" is somewhat related to FindingMethod, which represents the test or procedure used to generate the result; it is typically a LOINC code (0..1) 0..0 Specimen -0..0 DependentDataElement +0..0 NonIndependentFinding 0..0 Precondition 0..0 ReferenceRange // applies to a quantitative measurement only @@ -349,90 +349,90 @@ Value: CodeableConcept from ProgressionVS /* Element: Aneusomy - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: CAP#30478 Description: "Aneusomy (as defined by vendor kit used)" Value: CodeableConcept from YesNoVS Element: HeterogeneousSignals - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: CAP#30482 Description: "Whether In Situ Hybridization signals were heterogeneous." Value: CodeableConcept from YesNoVS Element: PercentageAmplified - Based on: DependentDataElement + Based on: NonIndependentFinding Concept: CAP#31073 Description: "Percentage of cells with amplified HER2 signals" Value: Quantity with units UCUM#% Element: NuclearPositivity - Based on: DependentDataElement + Based on: NonIndependentFinding Concept: TBD Description: "The percentage of cells that test (stain) positive for the presence of a receptor." Value: Range Element: PrimaryAntibody - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: CAP#31092 Description: "" Value: CodeableConcept Element: StainingControl - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: CAP#25895 Description: "Whether control cells were present." Value: CodeableConcept from StainingControlVS if covered Element: AllredProportionScore Concept: CAP#31054 - Based on: DependentDataElement + Based on: NonIndependentFinding Description: "Part of Allred scoring, based on the percentage of cells that stain for a receptor, on a scale of 0 to 5." Value: Quantity with units UCUM#1 Element: AllredIntensityScore Concept: CAP#29749 - Based on: DependentDataElement + Based on: NonIndependentFinding Description: "Part of the Allred scoring, based on the intensity of that staining, on a scale of 0 to 3." Value: Quantity with units UCUM#1 Element: AllredTotalScore Concept: CAP#31056 - Based on: DependentDataElement + Based on: NonIndependentFinding Description: "The total Allred score, the total of proportion and intensity scores, from 0 to 8." Value: Quantity with units UCUM#1 // unsignedInt - limit to max of 8 Element: OtherReceptorScoringSystem Concept: CAP#31062 - Based on: CodedDataElement + Based on: NonIndependentFinding Description: "A scoring system other than Allred." EntryElement: TumorDimensions Based on: SimpleCodedObservation Concept: MTH#C4086369 0..0 Value - DataItemCode is TBD#TBD + MostSpecificCode is TBD#TBD DiagnosticService is #pathology - DependentDataElement + NonIndependentFinding includes 0..1 TumorPrimaryDimensionSize includes 0..1 TumorSecondaryDimensionSize includes 0..1 SizeOfGrossTumorBed Element: TumorPrimaryDimensionSize Description: "The longest diameter of the primary tumor." - Based on: DependentDataElement + Based on: NonIndependentFinding Concept: TBD Value: Quantity with units UCUM#mm Element: TumorSecondaryDimensionSize Description: "The longest perpendicular diameter of the primary tumor." - Based on: DependentDataElement + Based on: NonIndependentFinding Concept: TBD Value: Quantity with units UCUM#mm Element: SizeOfGrossTumorBed - Based on: DependentDataElement + Based on: NonIndependentFinding Concept: TBD Description: "The largest dimension of the gross tumor bed/fibrotic area." Value: Quantity with units UCUM#mm @@ -443,9 +443,9 @@ Based on: SimpleCodedObservation Concept: MTH#C4086369 Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." Value: CodeableConcept from PositiveNegativeVS - DataItemCode is MTH#C4086369 + MostSpecificCode is MTH#C4086369 DiagnosticService is #pathology - DependentDataElement + NonIndependentFinding includes 0..1 TumorMarginDescription includes 0..1 Cellularity // not sure this belongs here includes 0..1 PercentageInSituCarcinoma // not sure this belongs here @@ -453,18 +453,18 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Element: TumorMarginDescription Concept: TBD - Based on: CodedDataElement + Based on: NonIndependentFinding Description: "Description of the edge or border of tumor in situ by radiologist or of removed tumor by pathologist." Value: CodeableConcept from TumorMarginDescriptionVS Element: Cellularity Concept: MTH#C4055283 - Based on: DependentDataElement + Based on: NonIndependentFinding Description: "Percentage of cells in a sample that are cancerous" Value: Quantity with units UCUM#% Element: PercentageInSituCarcinoma - Based on: DependentDataElement + Based on: NonIndependentFinding Concept: TBD Description: "The percentage of the cancer that is in situ, as opposed to invading other tissues." Value: Quantity with units UCUM#% @@ -476,9 +476,9 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Concept: MTH#C4049944 Description: "Ki-67 is a protein phosphatase whose expression is strongly associated with cell proliferation and encoded by the MKI67 gene. The Ki67 labeling index is the fraction of Ki-67-positive cells to total cells in a tumor specimen and may be useful for determining prognosis with respect to survival and disease recurrence. The more positive cells there are, the more quickly they are dividing and forming new cells. ReferenceRange: Low <10, Intermediate 10-20, >20 High" Value: Quantity with units UCUM#% - DataItemCode is LNC#29593-1 + MostSpecificCode is LNC#29593-1 DiagnosticService is #pathology - DependentDataElement + NonIndependentFinding includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered Element: S-PhaseFraction @@ -487,24 +487,24 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Description: "An expression of the number of mitoses found in a stated number of cells. The S-phase fraction number tells you what percentage of cells in the tissue sample are in the process of copying their genetic information (DNA). This S-phase, short for synthesis phase, happens just before a cell divides into two new cells. ReferenceRange: Low <6, Intermediate 6-10, >10 High." Value: Quantity with units UCUM#% DiagnosticService is #pathology - DataItemCode is LNC#29593-1 + MostSpecificCode is LNC#29593-1 EntryElement: GeneticVariant Based on: Observation Concept: MTH#C0678941 Description: "Whether a subject carries a mutation in a particular gene." Value: CodeableConcept from PositiveNegativeVS -// Focus.CodeableConcept from GeneIdentifierVS +// SpecificFocusOfFinding.CodeableConcept from GeneIdentifierVS DiagnosticService is #genetics 0..0 Precondition 0..0 ReferenceRange 0..0 DeltaFlag 0..0 AnatomicalLocation - DependentDataElement + NonIndependentFinding includes 0..1 Refseq Element: Refseq - Based on: DependentDataElement + Based on: NonIndependentFinding Concept: TBD Description: "The Reference Sequence (RefSeq) collection provides a comprehensive, integrated, non-redundant, well-annotated set of sequences, including genomic DNA, transcripts, and proteins. RefSeq sequences form a foundation for medical, functional, and diversity studies. They provide a stable reference for genome annotation, gene identification and characterization, mutation and polymorphism analysis (especially RefSeqGene records), expression studies, and comparative analyses." Value: CodeableConcept from RefseqVS @@ -513,9 +513,9 @@ EntryElement: BreastCancerGeneticAnalysisObservation Concept: TBD Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." - Observation.DataItemCode is TBD#TBD + Observation.MostSpecificCode is TBD#TBD DiagnosticService is #genetics -0..0 DependentDataElement +0..0 NonIndependentFinding PanelMembers.EvaluationresultRecorded includes 1..1 BRCA1Variant includes 1..1 BRCA2Variant @@ -525,7 +525,7 @@ includes 1..1 BRCA2Variant Based on: GeneticVariant Description: "Whether the patient has a mutation in the BRCA1 gene." Value: CodeableConcept from PositiveNegativeVS -// Focus.CodeableConcept is HGNC#BRCA1Gene +// SpecificFocusOfFinding.CodeableConcept is HGNC#BRCA1Gene Element: BRCA2Variant @@ -533,7 +533,7 @@ includes 1..1 BRCA2Variant Based on: GeneticVariant Description: "Whether the patient has a mutation in the BRCA2 gene." Value: CodeableConcept from PositiveNegativeVS -// Focus.CodeableConcept is HGNC#BRCA2Gene +// SpecificFocusOfFinding.CodeableConcept is HGNC#BRCA2Gene FHIR Genomics: diff --git a/spec/shr_research.txt b/spec/shr_research.txt index 702690de..56ab4ae5 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -11,7 +11,7 @@ Description: "A clinical trial or similar research study. Reference: list of FDA 1..1 Title 1..1 Identifier 0..1 AdditionalText -0..* PartOf value is type Study +0..1 PartOf value is type Study 1..1 Status from http://hl7.org/fhir/ValueSet/research-study-status 0..* Enrollment 0..1 EffectiveTimePeriod diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 19c9d617..16e87187 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -72,7 +72,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t Onset value is type dateTime // nowhere to put code LOINC 85585-8 Date of Onset {mm/dd/yyyy} Abatement value is type dateTime // nowhere to put code 88878-4 Date of abatement {mm/dd/yyyy} 1..1 Category is OBSCAT#exam -1..1 DataItemCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered +1..1 MostSpecificCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered 0..1 ObjectIdentifier is type WoundIdentifier 0..1 ConditionCause is type WoundTypeEtiology 1..1 AnatomicalLocation is type WoundAnatomicalLocation @@ -105,7 +105,7 @@ EntryElement: WoundAbsenceAssertion Based on: ConditionAbsenceAssertion Description: "Documents the absence of a wound at a given body site. No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicalLocation." -1..1 DataItemCode is SCT#416462003 "Wound (disorder)" +1..1 MostSpecificCode is SCT#416462003 "Wound (disorder)" 1..1 Category is OBSCAT#exam 1..1 AnatomicalLocation is type WoundAnatomicalLocation @@ -121,10 +121,10 @@ Description: "Group of observations regarding the properties and severity of a w 0..0 ExceptionValue 0..0 AnatomicalLocation // carried by wound assertion 0..0 Device - DataItemCode is LNC#39135-9 + MostSpecificCode is LNC#39135-9 0..0 ReferenceRange Media is type PhotographicImage // 72170-4 Photographic image [Media] - DependentDataElement + NonIndependentFinding includes 0..1 WoundEpisode // very similar to Episodicity or ClinicalStatus, but value set is different. includes 0..1 WoundTrend includes 0..1 WoundPeriwoundDescription // 72301-5 Description of Periwound @@ -143,46 +143,46 @@ includes 0..1 WoundExudateObservation // 72292-6 Wound exudate observation includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Element: WoundEpisode - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#89252-1 "Episode of Wound" Description: "Wound episode refers to a period of the wound, an incident in the course of a wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.4/expansion Element: WoundPeriwoundDescription - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#72301-5 Description: "A description of the skin around the wound (periwound). Color, induration, warmth and edema should be assessed. Redness of the surrounding skin can be indicative of unrelieved pressure. Irritation of the surrounding skin can result from exposure to feces or urine, a reaction to the dressing or tape, or inappropriate removal of dressing or tape. Redness, tenderness, warmth and swelling are classical clinical signs of infection. [Reference: Brown, P., 2009]" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.2/expansion //could be from http://loinc.org/vs/LL2216-1 Element: WoundVisibleInternalStructure - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#89250-5 Description: "Exposed body structures, devices, and/or foreign bodies visible by the naked eye in a wound." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.1/expansion // should be from http://loinc.org/vs/LL4935-4 Element: WoundPressureUlcerAssociation - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: TBD Description: "Is the wound associated with a device or pressure point?" Value: CodeableConcept from YesNoUnknownVS Element: WoundTunnelingPresentOrAbsent - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#72298-3 Description: "The presence or absence of wound tunneling." Value: CodeableConcept from PresentAbsentVS // LOINC: should re-use the same Snomed codes for Present-Absent Element: WoundUnderminingPresentOrAbsent - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#72295-9 Description: "The presence or absence of wound undermining." Value: CodeableConcept from PresentAbsentVS Element: WoundExudatePresentOrAbsent - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#89259-6 Description: "The presence or absence of wound exudate." Value: CodeableConcept from PresentAbsentVS @@ -194,7 +194,7 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Value: CodeableConcept from http://loinc.org/vs/LL3816-7 if covered // underpowered? 'normal' and 'other' Element: WoundTrend - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#89253-9 Description: "Whether a condition is improving, worsening, stable, or resolved." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.5/expansion // should be from http://loinc.org/vs/LL4938-8 with values improved, deteriorated, stablized or resolved. Resolved is missing from the VS in VSAC @@ -206,21 +206,21 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89254-7 Description: "The appearance of the base (bed) of the wound, together with the percentage of the bed with each type of appearance." 1..1 WoundIdentifier - DataItemCode is LNC#89254-7 + MostSpecificCode is LNC#89254-7 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DependentDataElement + NonIndependentFinding includes 1..1 WoundBedAppearance includes 1..1 WoundBedAppearancePercentage Element: WoundBedAppearance - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#72371-8 Description: "Appearance of wound base (bed)." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.6/expansion //could be from http://loinc.org/vs/LL2237-7 Element: WoundBedAppearancePercentage - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#72370-0 Description: "Area of wound bed appearance/Entire ​Area of wound bed." Value: Quantity with units UCUM#% @@ -231,23 +231,23 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: TBD Description: "Color of part or all of the wound base (bed), and the percentage of the area with that color." 1..1 WoundIdentifier - DataItemCode is TBD#TBD + MostSpecificCode is TBD#TBD 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DependentDataElement + NonIndependentFinding includes 1..1 WoundBedColor includes 1..1 WoundBedColorAreaPercentage // LOINC: Why precoordinate a general concept such as 'color' with the concept of wound bed? Element: WoundBedColor - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#39132-6 Description: "Color of Wound base (bed)." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.7/expansion //could be from http://loinc.org/vs/LL2338-3 // LOINC: Why precoordinate a general concept such as 'percentage of area' with the concept of wound bed? Element: WoundBedColorAreaPercentage - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#89255-4 Description: "Wound bed area identified by color/​Area of wound bed." Value: Quantity with units UCUM#% @@ -258,23 +258,23 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89256-2 Description: "The state of the tissue at the edge of the wound." 1..1 WoundIdentifier - DataItemCode is LNC#89256-2 + MostSpecificCode is LNC#89256-2 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DependentDataElement + NonIndependentFinding includes 1..1 WoundEdgeDescription includes 0..1 WoundEdgeColor // LOINC:Is the entire edge of the wound described by one color? Or should it be by percentage, similar to the wound bed? // LOINC: Why precoordinate a general concept such as 'color' with the concept of wound edge? Element: WoundEdgeDescription - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#72304-9 Description: "Edge of wound description." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.8/expansion // could be from http://loinc.org/vs/LL2230-2 Element: WoundEdgeColor - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#39133-4 Description: "Color of Wound edge." Value: CodeableConcept could be from http://loinc.org/vs/LL2338-3 @@ -284,10 +284,10 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89257-0 Description: "A discharging blind-ended track that extends from the surface of an organ to an underlying area or abscess cavity. The track is invariably lined with granulation tissue. In chronic cases this may be augmented with epithelial tissue." 1..1 WoundIdentifier - DataItemCode is LNC#89257-0 + MostSpecificCode is LNC#89257-0 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DependentDataElement + NonIndependentFinding includes 0..1 WoundTunnelLength includes 0..1 WoundTunnelClockDirection @@ -295,7 +295,7 @@ includes 0..1 WoundTunnelClockDirection // LOINC: why precoordinate clock position + tunneling? Element: WoundTunnelLength - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#72296-7 Description: "Length of wound tunneling." Value: Quantity with units UCUM#cm @@ -303,7 +303,7 @@ includes 0..1 WoundTunnelClockDirection // LOINC: should require use the full clock position value set Element: WoundTunnelClockDirection - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#72297-5 Description: "Clock position of wound tunnel" Value: CodeableConcept from ClockDirectionVS @@ -313,16 +313,16 @@ EntryElement: WoundUnderminingObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89258-8 Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage around the wound margin. Undermining are narrow sinus tracts away from the wound margins and go downward into the wound." - DataItemCode is LNC#89258-8 + MostSpecificCode is LNC#89258-8 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DependentDataElement + NonIndependentFinding includes 0..1 WoundUnderminingLength includes 0..1 WoundUnderminingClockDirection Element: WoundUnderminingLength - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#72293-4 Description: "Length of wound undermining." Value: Quantity with units UCUM#cm @@ -330,7 +330,7 @@ includes 0..1 WoundUnderminingClockDirection // LOINC: should require use the full clock position value set Element: WoundUnderminingClockDirection - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#72294-2 Description: "Clock position of wound undermining" Value: CodeableConcept from ClockDirectionVS @@ -339,11 +339,11 @@ EntryElement: WoundExudateObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72292-6 Description: "Description of the fluid produced by a wound." - DataItemCode is LNC#72292-6 + MostSpecificCode is LNC#72292-6 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DependentDataElement + NonIndependentFinding includes 0..1 WoundExudateAmount includes 0..1 WoundExudateVolume includes 1..1 WoundExudateAppearance @@ -353,32 +353,32 @@ includes 0..1 WoundExudateOdor // LOINC: Wound area should be in wound size panel, not wound exudate panel Element: WoundExudateAmount - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#39116-9 Description:"Drainage amount of wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.10/expansion //could be from http://loinc.org/vs/LL2222-9 Element: WoundExudateVolume - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#39122-7 Description:"Appearance of exudate from wound" Value: Quantity with units UCUM#mL Element: WoundExudateAppearance - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#72290-0 Description:"Appearance of exudate from wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.11/expansion //could be from http://loinc.org/vs/LL2220-3 Element: WoundExudateColor - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#72289-2 Description:"Color of exudate from wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.12/expansion // could be from http://loinc.org/vs/LL2219-5 Element: WoundExudateOdor - Based on: CodedDataElement + Based on: NonIndependentFinding Concept: LNC#72288-4 Description:"Odor of exudate from wound" Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.13/expansion @@ -388,39 +388,39 @@ EntryElement: WoundSizeObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72287-6 Description: "The estimated or measured dimensions of a wound." - DataItemCode is LNC#72287-6 + MostSpecificCode is LNC#72287-6 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - DependentDataElement + NonIndependentFinding includes 1..1 WoundLength includes 1..1 WoundWidth includes 0..1 WoundDepth includes 0..1 WoundArea Element: WoundLength - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#39126-8 Description: "Length of the wound (longest dimension)." Value: Quantity with units UCUM#cm 0..0 ReferenceRange Element: WoundWidth - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#39125-0 Description: "Width of the wound (perpendicular to longest dimension)." Value: Quantity with units UCUM#cm 0..0 ReferenceRange Element: WoundDepth - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#39127-6 Description: "Depth of the wound." Value: Quantity with units UCUM#cm 0..0 ReferenceRange Element: WoundArea - Based on: QuantitativeDataElement + Based on: NonIndependentFinding Concept: LNC#89260-4 Description: "Area of the wound." Value: Quantity with units UCUM#cm2 From 975b315a1af1c87df8fb43fa00ff774340bf77a4 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 24 Oct 2018 14:36:20 -0400 Subject: [PATCH 063/289] Removed some more CIMI :) --- spec/cimi_element.txt | 152 ---------------- spec/cimi_element_map.txt | 30 ---- spec/cimi_element_vs.txt | 46 ----- spec/cimi_procedure.txt | 2 +- spec/cimi_topic_vs.txt | 15 -- spec/ig-cimi-config.json | 2 +- spec/shr_base.txt | 12 +- spec/shr_base_vs.txt | 11 +- spec/shr_core.txt | 164 ++++++++++++++++-- spec/shr_core_map.txt | 29 +++- spec/shr_core_vs.txt | 113 +++++++++++- spec/shr_encounter.txt | 2 +- spec/{cimi_entity.txt => shr_entity.txt} | 4 +- ...cimi_entity_map.txt => shr_entity_map.txt} | 2 +- .../{cimi_entity_vs.txt => shr_entity_vs.txt} | 2 +- spec/shr_financial.txt | 2 +- spec/shr_occupation.txt | 2 +- spec/shr_oncology.txt | 2 +- spec/shr_research.txt | 2 +- spec/shr_wound.txt | 4 +- 20 files changed, 315 insertions(+), 283 deletions(-) delete mode 100644 spec/cimi_element.txt delete mode 100644 spec/cimi_element_map.txt delete mode 100644 spec/cimi_element_vs.txt delete mode 100644 spec/cimi_topic_vs.txt rename spec/{cimi_entity.txt => shr_entity.txt} (99%) rename spec/{cimi_entity_map.txt => shr_entity_map.txt} (99%) rename spec/{cimi_entity_vs.txt => shr_entity_vs.txt} (99%) diff --git a/spec/cimi_element.txt b/spec/cimi_element.txt deleted file mode 100644 index 316f3412..00000000 --- a/spec/cimi_element.txt +++ /dev/null @@ -1,152 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: cimi.element -Description: "The Element Package defines reusable data elements that are used across multiple packages." -Uses: shr.core, shr.base, cimi.entity - - -Element: Annotation -Description: "An added or follow-up note, often after the fact, that contains metadata about who made the statement and when." -Value: string // change to language-text -1..1 Author -1..1 OccurrenceTime - - Element: Author - Concept: TBD - Description: "The person or organization who created the entry and is responsible for (and may certify) the content." - //Value: string or ref(EntityOrRole) - Value: string or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) - - -Element: Signature -Description: "A digital Signature - XML DigSig, JWT, Graphical image of signature, etc." -1..* SignatureType from http://hl7.org/fhir/ValueSet/signature-type if covered -1..1 CreationTime -1..1 Signatory -0..1 OnBehalfOf -0..1 ContentType -0..1 BinaryData - - Element: SignatureType - Concept: MTH#C0332307 - Description: "Type of signature" - Value: Coding - - Element: Signatory - Concept: TBD - Description: "The party signing." - Value: uri or ref(Entity) - - Element: OnBehalfOf - Concept: TBD - Description: "The party represented by the actual participant." - Value: uri or ref(Organization) - - -Element: RouteIntoBody -Concept: MTH#C0013153 -Description: "The way a substance enters an organism after contact, particularly, the route of drug administration." -Value: CodeableConcept from http://hl7.org/fhir/ValueSet/route-codes - -Element: AnatomicalLocation -Concept: LNC#72369-2 // Body site identification panel -Description: "A location or structure in the body, including tissues, regions, cavities, and spaces; for example, right elbow, or left ventricle of the heart." -Value: CodeableConcept from AnatomicalLocationVS -0..1 Laterality -0..1 AnatomicalDirection - - Element: Laterality - Concept: MTH#C0925205 "Anatomical laterality" - Description: "Anatomical location or specimen further detailing the side(s) of interest." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/bodysite-laterality - - Element: AnatomicalDirection - Concept: NCI#C99074 - Description: "Anatomical location or specimen further detailing directionality." - Value: CodeableConcept from AnatomicalDirectionVS - -Element: Identifier -Concept: MTH#C0600091 -Description: "A unique string that identifies a specific person or thing." -Value: string // or id or code or CodeableConcept? -0..1 Purpose from http://hl7.org/fhir/ValueSet/identifier-use -0..1 Type from http://hl7.org/fhir/ValueSet/identifier-type if covered -0..1 CodeSystem -0..1 EffectiveTimePeriod -0..1 Issuer - - Element: Issuer - Concept: TBD - Description: "An organization who issues a qualification, identifier, or license." - Value: ref(Organization) - - -Element: Status -Concept: MTH#C0449438 -Description: "The current standing or state." -Value: code or Coding or CodeableConcept - -Element: TermMapping -Description: "Represents an alternative (mapped) Concept associated with a source concept (i.e., CodedText.concept or the textual value of the CodedText when no equivalent concept has been defined), and the relative match of the mapped Concept with respect to the source Concept. Mappings may be used to add classification terms (e.g. adding ICD classifiers to SNOMED descriptive terms), for computational convenience, or to provide equivalents in other terminologies (e.g. across nursing vocabularies)." -Value: Coding -1..1 Match -0..1 Purpose - - Element: Match - Description: "The relative match of the mapped concept to the original (target) concept. Examples include broader (i.e., the mapped term is more general than the original), equivalent, narrower (e.g. mapped concept is 'atypical diabetes mellitus' and the original term is 'diabetes mellitus'), or unknown." - Value: Coding - -Element: Name -Description: "Abstract supertype for the name of an entity." -0..1 NameAsText -0..* Purpose -0..1 EffectiveTimePeriod - - Element: NameAsText - Description: "The name as plain unstructured or semi-structured text." - Value: string // TODO: should be PlainText - -Element: PersonName -Based on: Name -Concept: MTH#C1547383 -Description: "A name used by a human being, written as it would be typically expressed. May include a breakdown of the various elements of the name (family name, given name, etc.)." -//0..1 PreferredFlag -- causes extension to Human Name profile -0..* Prefix -0..* GivenName -0..* MiddleName -0..* FamilyName -0..* Suffix -0..1 Purpose from http://hl7.org/fhir/ValueSet/name-use - - Element: PreferredFlag - Description: "Code indicating the preference associated with the use of this name." - Value: CodeableConcept - - Element: Prefix - Concept: MTH#C3476361 - Description: "Contains a set of honorific terms that typically appear before a person's name, for example Mr., Mrs., Dr., etc." - Value: string // punting on value set - there is little value in standardizing this element - - Element: GivenName - Concept: LNC#45392-8, SCT#408677003 - Description: "The person's given name - e.g., John" - Value: string - - Element: MiddleName - Concept: LNC#45392-8, SCT#408677003 - Description: "The person's middle name." - Value: string - - Element: FamilyName - Concept: LNC#45394-4 - Description: "The portion of a person's name that reflects the genealogy of the person. In western cultures, this is the 'last' name. In eastern cultures, the family name appears before the person's given name(s). In some cultures (e.g. Eritrea) the family name of a son is the first name of his father. (Source: HL7 V3)." - Value: string - - Element: Suffix - Concept: LNC#45395-1, SCT#715196001 - Description: "Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the end of the name." - Value: string - -Element: Category -Concept: TBD -Description: "The type, kind, or class of this item." -Value: CodeableConcept diff --git a/spec/cimi_element_map.txt b/spec/cimi_element_map.txt deleted file mode 100644 index 938b1136..00000000 --- a/spec/cimi_element_map.txt +++ /dev/null @@ -1,30 +0,0 @@ -Grammar: Map 5.1 -Namespace: cimi.element -Target: FHIR_STU_3 - - -AnatomicalLocation maps to BodySite: - Value maps to code - Laterality maps to qualifier (slice on = coding.code) - AnatomicalDirection maps to qualifier - -Annotation maps to Annotation: - Value maps to text - Author maps to author[x] - OccurrenceTime maps to time - -Identifier maps to Identifier: - Value maps to value - Purpose maps to use - Type maps to type - CodeSystem maps to system - EffectiveTimePeriod maps to period - Issuer maps to assigner - -Signature maps to Signature: - SignatureType maps to type - CreationTime maps to when - Signatory maps to who[x] - OnBehalfOf maps to onBehalfOf[x] - ContentType maps to contentType - BinaryData maps to blob \ No newline at end of file diff --git a/spec/cimi_element_vs.txt b/spec/cimi_element_vs.txt deleted file mode 100644 index bf9c7379..00000000 --- a/spec/cimi_element_vs.txt +++ /dev/null @@ -1,46 +0,0 @@ -Grammar: ValueSet 5.0 -Namespace: cimi.element - -CodeSystem: MTH = http://ncimeta.nci.nih.gov -CodeSystem: NCI = https://evs.nci.nih.gov/ftp1/CDISC/SDTM/ -CodeSystem: SCT = http://snomed.info/sct - -ValueSet: AnatomicalLocationVS -Concept: MTH#C1545955 -Description: "Codes that describe normal and pathologic anatomic systems, regions, cavities, and spaces." -Includes codes descending from SCT#123037004 "Body Structure" - -ValueSet: AnatomicalDirectionVS -Concept: NCI#C99074 -Description: "Anatomical location or specimen further detailing directionality. Codes are from NCI" -#C25231 "ANTERIOR Denoting the front portion of the body or a structure." -#C25423 "APICAL Relating to or located at the apex." -#C90067 "BASAL Relating to or located at the lowest portion of a structure." -#C73851 "CAUDAL Toward the tail in a body." -#C25445 "CENTRAL A point or area that is approximately central within some larger region or structure." -#C37936 "CRANIAL Toward the head in a body." -#C25240 "DEEP Extending relatively far inward." -#C25237 "DISTAL Situated farthest from a point of reference." -#C45874 "DORSAL Pertaining to the back or upper surface of the body." -#C90376 "DORSOLATERAL Toward the back and side of a body." -#C90386 "FORE Of or involving the front of a main body." -#C90393 "HIND Of or involving the back of a main body." -#C25353 "INFERIOR Pertaining to a point below a given reference point." -#C37980 "INNER Inside or closer to the inside of the body or object." -#C73705 "INTERMEDIATE Located between two points or extremes." -#C25309 "LOWER The bottom one of two." -#C25232 "MEDIAL Toward the middle or in a limb toward the median plane." -#C81170 "MIDLINE A medial line, especially the medial line or medial plane of the body (or some part of the body)." -#C27958 "NASAL Of, or related to, or in the direction of the nose." -#C38166 "OUTER Being on or toward the outside of the body or object." -#C25233 "PERIPHERAL On or near an edge or constituting an outer boundary;the outer area." -#C25622 "POSTERIOR Denoting the back portion of the body or a structure." -#C94393 "ROSTRAL Toward the muzzle in the head." -#C25239 "SUPERFICIAL Of or pertaining to the exterior surface." -#C25235 "SUPERIOR Pertaining to a point above a given reference point." -#C25245 "SURFACE The extended two-dimensional outer layer or area of a three-dimensional object." -#C117754 "TEMPORAL Of, or related to, anatomic sites that are located in the cranium, brain, and eye." -#C90069 "TIP The pointed end of a structure." -#C25355 "UPPER The top one of two." -#C45875 "VENTRAL Pertaining to the front or lower surface of the body." -#C98798 "VENTROLATERAL Of or pertaining to the front and side of a main body." diff --git a/spec/cimi_procedure.txt b/spec/cimi_procedure.txt index 3f0357de..0fc895fc 100644 --- a/spec/cimi_procedure.txt +++ b/spec/cimi_procedure.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: cimi.procedure Description: "The CIMI procedure domain contains contexts, topics, and statements related to procedures." -Uses: shr.core, shr.base, cimi.element, cimi.entity +Uses: shr.core, shr.base, shr.entity CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category diff --git a/spec/cimi_topic_vs.txt b/spec/cimi_topic_vs.txt deleted file mode 100644 index a3d12ffb..00000000 --- a/spec/cimi_topic_vs.txt +++ /dev/null @@ -1,15 +0,0 @@ -Grammar: ValueSet 5.0 -Namespace: shr.core - -CodeSystem: MTH = http://ncimeta.nci.nih.gov -CodeSystem: LNC = http://loinc.org - - -ValueSet: ConditionCategoryVS -Description: "A category assigned to the condition, for example, a disease, concern, symptom, adverse reaction, functional impairment, or structural abnormality." -#disease "A disorder of structure or function in a human, animal, or plant, especially one that produces specific signs or symptoms or that affects a specific location and is not simply a direct result of physical injury." -#functional_impairment "A disability experienced by the subject." -#structural_abnormality "An abnormality of physiologic structure." -#concern "Something the subject is worried about, which may or may not have yet been manifested. The object of the concern does not have to be a medical disorder." -#symptom "A sign or manifestation of a deeper cause, of known or unknown etiology, e.g. pain or ringing in the ears." -#adverse_reaction "An adverse reaction to an intervention." diff --git a/spec/ig-cimi-config.json b/spec/ig-cimi-config.json index 3ada4e82..49745477 100644 --- a/spec/ig-cimi-config.json +++ b/spec/ig-cimi-config.json @@ -18,7 +18,7 @@ { "filter": true, "strategy": "namespace", - "target": ["cimi.core", "cimi.element", "shr.encounter", "cimi.entity"] + "target": ["cimi.core", "shr.encounter", "shr.entity"] }, "publisher": "The Clinical Information Modeling Initiative (CIMI)", "contact": [ diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 68d8d6b0..e860b516 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.base Description: "Contains the SHR Entry definition -- the metadata added to any independent item in the SHR." -Uses: shr.core, cimi.element, cimi.entity, shr.encounter +Uses: shr.core, shr.entity, shr.encounter CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: LNC = http://loinc.org @@ -88,7 +88,6 @@ Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." //0..0 Observer -// 0..1 Interpretation 0..1 DeltaFlag 1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered 0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? @@ -178,15 +177,6 @@ Description: "An observation with components, but without a result value or pane 0..0 PanelMembers 0..0 ReferenceRange -EntryElement: Panel -Based on: Observation -Description: "An observation with panel members, but without a result value or components." -0..0 Value -0..0 ExceptionValue -0..0 ReferenceRange -0..0 NonIndependentFinding -1..1 PanelMembers - // Laboratory Measurements and Results EntryElement: LaboratoryObservation diff --git a/spec/shr_base_vs.txt b/spec/shr_base_vs.txt index 780e3274..de4357b5 100644 --- a/spec/shr_base_vs.txt +++ b/spec/shr_base_vs.txt @@ -109,4 +109,13 @@ Includes codes descending from SCT#385634002 "Change patterns (qualifier value)" //SCT#260369004 "Increasing (qualifier value)" //SCT#260371004 "Decreasing (qualifier value)" SCT#723506003 "Resolved (qualifier value)" -*/ \ No newline at end of file +*/ + +ValueSet: ConditionCategoryVS +Description: "A category assigned to the condition, for example, a disease, concern, symptom, adverse reaction, functional impairment, or structural abnormality." +#disease "A disorder of structure or function in a human, animal, or plant, especially one that produces specific signs or symptoms or that affects a specific location and is not simply a direct result of physical injury." +#functional_impairment "A disability experienced by the subject." +#structural_abnormality "An abnormality of physiologic structure." +#concern "Something the subject is worried about, which may or may not have yet been manifested. The object of the concern does not have to be a medical disorder." +#symptom "A sign or manifestation of a deeper cause, of known or unknown etiology, e.g. pain or ringing in the ears." +#adverse_reaction "An adverse reaction to an intervention." \ No newline at end of file diff --git a/spec/shr_core.txt b/spec/shr_core.txt index b7f69a21..151a8208 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.core Description: "The SHR Core domain contains definitions for a variety of general-purpose elements that are used widely in SHR. These include definitions for coding, expressions of time, quantities, addresses, names, and more." -Uses: shr.base, cimi.element +Uses: shr.base, shr.entity Path: FHIR = http://hl7.org/fhir/ValueSet // CodeSystem: CC = http://www.nationsonline.org/oneworld/country_code_list @@ -400,23 +400,19 @@ Concept: MTH#C0439165 Description: "A percentage value where 100.0 represents 100%." Units.Coding is UCUM#% - -Element: Likelihood -Concept: MTH#C0033204 -Description: "A measure of the expectation of the occurrence of a particular event, as a percentage." -Value: positiveInt // 0-100 do not allow zero, since this will create an implicit modifier - Element: QualitativeLikelihood Concept: TBD Description: "A qualitative (subjective) likelihood." Value: CodeableConcept from QualitativeLikelihoodVS -Element: Length -Based on: Quantity +/*Element: Length +Based on: NonIndependentFinding Concept: MTH#C1444754 Description: "The measurement or linear extent of something from end to end; the greatest dimensions of a body." - Units with Coding from UnitsOfLengthVS - +Value: Quantity +// with units from UnitsOfLengthVS + Value.Units with Coding from UnitsOfLengthVS +*/ Element: Depth Based on: NonIndependentFinding Concept: SCT#131197000 "Depth (qualifier value)" @@ -697,3 +693,149 @@ Element: PhotographicImage Based on: Media Concept: LNC#72170-4 // ContentType from ImageMimeTypeVS if covered + +Element: Annotation +Description: "An added or follow-up note, often after the fact, that contains metadata about who made the statement and when." +Value: string // change to language-text +1..1 Author +1..1 OccurrenceTime + + Element: Author + Concept: TBD + Description: "The person or organization who created the entry and is responsible for (and may certify) the content." + //Value: string or ref(EntityOrRole) + Value: string or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) + +Element: Signature +Description: "A digital Signature - XML DigSig, JWT, Graphical image of signature, etc." +1..* SignatureType from http://hl7.org/fhir/ValueSet/signature-type if covered +1..1 CreationTime +1..1 Signatory +0..1 OnBehalfOf +0..1 ContentType +0..1 BinaryData + + Element: SignatureType + Concept: MTH#C0332307 + Description: "Type of signature" + Value: Coding + + Element: Signatory + Concept: TBD + Description: "The party signing." + Value: uri or ref(Entity) + + Element: OnBehalfOf + Concept: TBD + Description: "The party represented by the actual participant." + Value: uri or ref(Organization) + + +Element: RouteIntoBody +Concept: MTH#C0013153 +Description: "The way a substance enters an organism after contact, particularly, the route of drug administration." +Value: CodeableConcept from http://hl7.org/fhir/ValueSet/route-codes + +Element: AnatomicalLocation +Concept: LNC#72369-2 // Body site identification panel +Description: "A location or structure in the body, including tissues, regions, cavities, and spaces; for example, right elbow, or left ventricle of the heart." +Value: CodeableConcept from AnatomicalLocationVS +0..1 Laterality +0..1 AnatomicalDirection + + Element: Laterality + Concept: MTH#C0925205 "Anatomical laterality" + Description: "Anatomical location or specimen further detailing the side(s) of interest." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/bodysite-laterality + + Element: AnatomicalDirection + Concept: NCI#C99074 + Description: "Anatomical location or specimen further detailing directionality." + Value: CodeableConcept from AnatomicalDirectionVS + +Element: Identifier +Concept: MTH#C0600091 +Description: "A unique string that identifies a specific person or thing." +Value: string // or id or code or CodeableConcept? +0..1 Purpose from http://hl7.org/fhir/ValueSet/identifier-use +0..1 Type from http://hl7.org/fhir/ValueSet/identifier-type if covered +0..1 CodeSystem +0..1 EffectiveTimePeriod +0..1 Issuer + + Element: Issuer + Concept: TBD + Description: "An organization who issues a qualification, identifier, or license." + Value: ref(Organization) + + +Element: Status +Concept: MTH#C0449438 +Description: "The current standing or state." +Value: code or Coding or CodeableConcept + +Element: TermMapping +Description: "Represents an alternative (mapped) Concept associated with a source concept (i.e., CodedText.concept or the textual value of the CodedText when no equivalent concept has been defined), and the relative match of the mapped Concept with respect to the source Concept. Mappings may be used to add classification terms (e.g. adding ICD classifiers to SNOMED descriptive terms), for computational convenience, or to provide equivalents in other terminologies (e.g. across nursing vocabularies)." +Value: Coding +1..1 Match +0..1 Purpose + + Element: Match + Description: "The relative match of the mapped concept to the original (target) concept. Examples include broader (i.e., the mapped term is more general than the original), equivalent, narrower (e.g. mapped concept is 'atypical diabetes mellitus' and the original term is 'diabetes mellitus'), or unknown." + Value: Coding + +Element: Name +Description: "Abstract supertype for the name of an entity." +0..1 NameAsText +0..* Purpose +0..1 EffectiveTimePeriod + + Element: NameAsText + Description: "The name as plain unstructured or semi-structured text." + Value: string // TODO: should be PlainText + +Element: PersonName +Based on: Name +Concept: MTH#C1547383 +Description: "A name used by a human being, written as it would be typically expressed. May include a breakdown of the various elements of the name (family name, given name, etc.)." +//0..1 PreferredFlag -- causes extension to Human Name profile +0..* Prefix +0..* GivenName +0..* MiddleName +0..* FamilyName +0..* Suffix +0..1 Purpose from http://hl7.org/fhir/ValueSet/name-use + + Element: PreferredFlag + Description: "Code indicating the preference associated with the use of this name." + Value: CodeableConcept + + Element: Prefix + Concept: MTH#C3476361 + Description: "Contains a set of honorific terms that typically appear before a person's name, for example Mr., Mrs., Dr., etc." + Value: string // punting on value set - there is little value in standardizing this element + + Element: GivenName + Concept: LNC#45392-8, SCT#408677003 + Description: "The person's given name - e.g., John" + Value: string + + Element: MiddleName + Concept: LNC#45392-8, SCT#408677003 + Description: "The person's middle name." + Value: string + + Element: FamilyName + Concept: LNC#45394-4 + Description: "The portion of a person's name that reflects the genealogy of the person. In western cultures, this is the 'last' name. In eastern cultures, the family name appears before the person's given name(s). In some cultures (e.g. Eritrea) the family name of a son is the first name of his father. (Source: HL7 V3)." + Value: string + + Element: Suffix + Concept: LNC#45395-1, SCT#715196001 + Description: "Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the end of the name." + Value: string + +Element: Category +Concept: TBD +Description: "The type, kind, or class of this item." +Value: CodeableConcept diff --git a/spec/shr_core_map.txt b/spec/shr_core_map.txt index f32b3dd4..e5a54ca7 100644 --- a/spec/shr_core_map.txt +++ b/spec/shr_core_map.txt @@ -113,4 +113,31 @@ Media maps to Attachment: ResourceSize maps to size Hash maps to hash Title maps to title - CreationTime maps to creation \ No newline at end of file + CreationTime maps to creation + + // From FHIR 3.5 documentation: "The BodyStructure resource is not ... intended for describing the type of anatomical location but rather a specific body site on a specific patient." +AnatomicalLocation maps to BodySite: + Value maps to code + Laterality maps to qualifier (slice on = coding.code) + AnatomicalDirection maps to qualifier + +Annotation maps to Annotation: + Value maps to text + Author maps to author[x] + OccurrenceTime maps to time + +Identifier maps to Identifier: + Value maps to value + Purpose maps to use + Type maps to type + CodeSystem maps to system + EffectiveTimePeriod maps to period + Issuer maps to assigner + +Signature maps to Signature: + SignatureType maps to type + CreationTime maps to when + Signatory maps to who[x] + OnBehalfOf maps to onBehalfOf[x] + ContentType maps to contentType + BinaryData maps to blob \ No newline at end of file diff --git a/spec/shr_core_vs.txt b/spec/shr_core_vs.txt index 06741685..28d6705b 100644 --- a/spec/shr_core_vs.txt +++ b/spec/shr_core_vs.txt @@ -148,9 +148,9 @@ SCT#373067005 "No (qualifier value)" ValueSet: YesNoUnknownVS Description: "Code set indicating yes, no, or unknown." -#yes "Yes, or true" -#no "No, or false" -#unknown "Unknown" +SCT#373066001 "Yes (qualifier value)" +SCT#373067005 "No (qualifier value)" +SCT#261665006 "Unknown (qualifier value)" ValueSet: QualitativeValueScaleVS #very_high "Very high" @@ -274,6 +274,113 @@ SCT#2667000 "Absent (qualifier value)" // ValueSet: ManifestationChangeVS (much better, better, about the same, worse, much worse, etc) + +ValueSet: DeviceVS +Description: "Codes describing medical devices." +Includes codes descending from SCT#49062001 + +ValueSet: HealthcareRoleVS +//Includes codes from http://hl7.org/fhir/ValueSet/c80-practice-codes +MTH#C0079382 "Friend" +MTH#C0008935 "Clergy" +MTH#C0037444 "Social worker" +MTH#C0687694 "Case manager" +MTH#C0086530 "Lawyer" +MTH#C0023226 "Legal guardian" +MTH#C0337468 "Foster parent" +MTH#C0030697 "Patient ombudsman" +MTH#C2348942 "Payer" +MTH#C0040757 "Transportation provider" +MTH#C0204977 "Provider of home care" +MTH#C0508797 "Medication assistance" +MTH#C0871042 "Parole officer" +MTH#C0042799 "Visting nurse" +MTH#C1552023 "Emergency contact" + + +ValueSet: LanguageQualifierVS +Description: "A code indicating whether the language is preferred, secondary, or practiced in an unconventional or limited way." +#preferred_spoken "Preferred language" +#secondary_spoken "Secondary language" +#apraxia "Difficulty speaking due to motor disorder" +#aphasia "Difficulty in speaking, listening, reading, and writing" +#signs "Uses sign language" +#braille "Reads using braille" +#lipreads "Uses lipreading (speechreading)" +#aac "Uses augmentative and alternative communication" + + +ValueSet: TelecomQualifierVS +#primary "Primary (preferred) method of contact" +#secondary "Secondary method of contact" +#prefer_call "Prefer voice calls" +#prefer_text "Prefer texting" +#personal "Personal (home) use" +#work "Work use" +#no_message "Do not leave messages at this phone number" +#alert "Use this contact method for reminders, alerts, and notifications" +#telecare "Use for telecare encounters" +#shared "A shared telecom address, e.g., facility telephone or family email" +#direct "An encrypted DIRECT email address" +#portal "Portal-based secure messaging address" + +/* not used +ValueSet: TelephoneTypeVS +#mobile "Mobile phone (assumed text capable)" +#land "Landline telephone" + +ValueSet: AddressUseVS +Description: "How an address is used by the subject, for example, as a dwelling or as a mailing address." +#primary_residence "The address at which a person dwells most frequently or maintains as his or her official premises." +#secondary_residence "An address at which a person dwells on a secondary basis, for example, during vacation periods, when residing with other parent or relative, at boarding school, etc." +#temporary_dwelling "An address temporarily used as a dwelling" +#former_address "Address (residence, postal, or work address) that is no longer in use" +#mailing_address "Address is a postal address, such as a PO box" +#work_address "Address of place of business where the subject is employed" + +*/ + + +ValueSet: AnatomicalLocationVS +Concept: MTH#C1545955 +Description: "Codes that describe normal and pathologic anatomic systems, regions, cavities, and spaces." +Includes codes descending from SCT#123037004 "Body Structure" + +ValueSet: AnatomicalDirectionVS +Concept: NCI#C99074 +Description: "Anatomical location or specimen further detailing directionality. Codes are from NCI" +#C25231 "ANTERIOR Denoting the front portion of the body or a structure." +#C25423 "APICAL Relating to or located at the apex." +#C90067 "BASAL Relating to or located at the lowest portion of a structure." +#C73851 "CAUDAL Toward the tail in a body." +#C25445 "CENTRAL A point or area that is approximately central within some larger region or structure." +#C37936 "CRANIAL Toward the head in a body." +#C25240 "DEEP Extending relatively far inward." +#C25237 "DISTAL Situated farthest from a point of reference." +#C45874 "DORSAL Pertaining to the back or upper surface of the body." +#C90376 "DORSOLATERAL Toward the back and side of a body." +#C90386 "FORE Of or involving the front of a main body." +#C90393 "HIND Of or involving the back of a main body." +#C25353 "INFERIOR Pertaining to a point below a given reference point." +#C37980 "INNER Inside or closer to the inside of the body or object." +#C73705 "INTERMEDIATE Located between two points or extremes." +#C25309 "LOWER The bottom one of two." +#C25232 "MEDIAL Toward the middle or in a limb toward the median plane." +#C81170 "MIDLINE A medial line, especially the medial line or medial plane of the body (or some part of the body)." +#C27958 "NASAL Of, or related to, or in the direction of the nose." +#C38166 "OUTER Being on or toward the outside of the body or object." +#C25233 "PERIPHERAL On or near an edge or constituting an outer boundary;the outer area." +#C25622 "POSTERIOR Denoting the back portion of the body or a structure." +#C94393 "ROSTRAL Toward the muzzle in the head." +#C25239 "SUPERFICIAL Of or pertaining to the exterior surface." +#C25235 "SUPERIOR Pertaining to a point above a given reference point." +#C25245 "SURFACE The extended two-dimensional outer layer or area of a three-dimensional object." +#C117754 "TEMPORAL Of, or related to, anatomic sites that are located in the cranium, brain, and eye." +#C90069 "TIP The pointed end of a structure." +#C25355 "UPPER The top one of two." +#C45875 "VENTRAL Pertaining to the front or lower surface of the body." +#C98798 "VENTROLATERAL Of or pertaining to the front and side of a main body." + /*------------- NCI Code: C99073 LAT, Codelist extensible: Yes C13332 BILATERAL Affecting both sides of the body, or a pair of organs. Bilateral diff --git a/spec/shr_encounter.txt b/spec/shr_encounter.txt index fad519fe..9c428cc8 100644 --- a/spec/shr_encounter.txt +++ b/spec/shr_encounter.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.encounter Description: "The Encounter domain contains definitions that capture interactions between the person of record and healthcare providers, including inpatient, ambulatory care, and telecare." -Uses: shr.core, shr.base, cimi.element, cimi.entity +Uses: shr.core, shr.base, shr.entity Element: Encounter Based on: InformationItem diff --git a/spec/cimi_entity.txt b/spec/shr_entity.txt similarity index 99% rename from spec/cimi_entity.txt rename to spec/shr_entity.txt index e3a6ff6d..1b91ec04 100644 --- a/spec/cimi_entity.txt +++ b/spec/shr_entity.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 -Namespace: cimi.entity +Namespace: shr.entity Description: "The namespace containing definitions for basic classes in CIMI." -Uses: shr.core, cimi.element, shr.base +Uses: shr.core, shr.base Abstract Element: EntityOrRole Based on: InformationItem diff --git a/spec/cimi_entity_map.txt b/spec/shr_entity_map.txt similarity index 99% rename from spec/cimi_entity_map.txt rename to spec/shr_entity_map.txt index f6a0e436..abeefb53 100644 --- a/spec/cimi_entity_map.txt +++ b/spec/shr_entity_map.txt @@ -1,5 +1,5 @@ Grammar: Map 5.1 -Namespace: cimi.entity +Namespace: shr.entity Target: FHIR_STU_3 Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: diff --git a/spec/cimi_entity_vs.txt b/spec/shr_entity_vs.txt similarity index 99% rename from spec/cimi_entity_vs.txt rename to spec/shr_entity_vs.txt index 025de500..946dfa73 100644 --- a/spec/cimi_entity_vs.txt +++ b/spec/shr_entity_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: cimi.entity +Namespace: shr.entity CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: NCI = https://evs.nci.nih.gov/ftp1/CDISC/SDTM/ diff --git a/spec/shr_financial.txt b/spec/shr_financial.txt index 50b32ff4..5db0bd16 100644 --- a/spec/shr_financial.txt +++ b/spec/shr_financial.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.financial Description: "The SHR Demographics domain contains definitions that describe basic characteristics of the person of record, such as name, address, and date of birth. Elements in the demographics domains are used for unique identification and patient matching." -Uses: shr.core, shr.base, cimi.entity, cimi.element +Uses: shr.core, shr.base, shr.entity Path: FHIR = http://hl7.org/fhir/ValueSet diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index c1b20d30..7dd63caf 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: odh Description: "Patient’s or family member's work information." -Uses: shr.core, shr.base, cimi.composition, cimi.entity, cimi.element, shr.encounter +Uses: shr.core, shr.base, cimi.composition, shr.entity, shr.encounter CodeSystem: LNC = http://loinc.org CodeSystem: UCUM = http://unitsofmeasure.org diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index c467c5b6..c4833efc 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.oncology Description: "SHR implementation of ASCO requirements." -Uses: shr.core, shr.base, cimi.element, cimi.entity +Uses: shr.core, shr.base, shr.entity CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org diff --git a/spec/shr_research.txt b/spec/shr_research.txt index 56ab4ae5..04dbb238 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.research Description: "The SHR research domain contains definitions related to the clinical trials and research studies." -Uses: shr.core, shr.base, cimi.element, cimi.entity +Uses: shr.core, shr.base, shr.entity EntryElement: Study diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 16e87187..14af7865 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: sw Description: "SHR implementation of the HL7 Pressure Ulcer Prevention Domain Analysis Model (May, 2011)." -Uses: shr.core, shr.base, cimi.entity, cimi.element, shr.encounter, shr.condition +Uses: shr.core, shr.base, shr.entity, shr.encounter, shr.condition CodeSystem: UCUM = http://unitsofmeasure.org CodeSystem: LNC = http://loinc.org @@ -76,7 +76,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t 0..1 ObjectIdentifier is type WoundIdentifier 0..1 ConditionCause is type WoundTypeEtiology 1..1 AnatomicalLocation is type WoundAnatomicalLocation -0..0 Severity // not sure if zeroing it out should be prohibited, but it is not part of LOINC panel +0..0 Severity // not sure if zeroing it out is wise, but severity is not part of LOINC panel 0..0 Criticality 0..0 Certainty 0..0 Device From 36cdf403f7f76ad921ba5b2aa138316ec8b0d767 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 24 Oct 2018 14:41:47 -0400 Subject: [PATCH 064/289] Getting rid of CIMI - done! --- spec/{cimi_composition.txt => shr_composition.txt} | 2 +- spec/{cimi_composition_map.txt => shr_composition_map.txt} | 2 +- spec/shr_core.txt | 2 +- spec/shr_entity.txt | 4 ++-- spec/shr_occupation.txt | 3 +-- spec/shr_oncology.txt | 3 +-- spec/{cimi_procedure.txt => shr_procedure.txt} | 4 ++-- spec/{cimi_procedure_map.txt => shr_procedure_map.txt} | 2 +- 8 files changed, 10 insertions(+), 12 deletions(-) rename spec/{cimi_composition.txt => shr_composition.txt} (96%) rename spec/{cimi_composition_map.txt => shr_composition_map.txt} (92%) rename spec/{cimi_procedure.txt => shr_procedure.txt} (98%) rename spec/{cimi_procedure_map.txt => shr_procedure_map.txt} (99%) diff --git a/spec/cimi_composition.txt b/spec/shr_composition.txt similarity index 96% rename from spec/cimi_composition.txt rename to spec/shr_composition.txt index dfd369da..4dcc97a2 100644 --- a/spec/cimi_composition.txt +++ b/spec/shr_composition.txt @@ -1,5 +1,5 @@ Grammar: DataElement 5.0 -Namespace: cimi.composition +Namespace: shr.composition Description: "Documents, compositions, reports, and other structures involving multiple resources." Uses: shr.base diff --git a/spec/cimi_composition_map.txt b/spec/shr_composition_map.txt similarity index 92% rename from spec/cimi_composition_map.txt rename to spec/shr_composition_map.txt index 666b2f0f..347aa4db 100644 --- a/spec/cimi_composition_map.txt +++ b/spec/shr_composition_map.txt @@ -1,5 +1,5 @@ Grammar: Map 5.1 -Namespace: cimi.composition +Namespace: shr.composition Target: FHIR_STU_3 //InformationItem maps to Resource: diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 151a8208..94b2e84d 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -600,7 +600,7 @@ Description: "An address for a place in the USA, conforming to US mail postal Element: HumanName Based on: PersonName Concept: MTH#C1547383 -Description: "The CIMI person name, constrained to map correctly to FHIR." +Description: "The person name, constrained to map correctly to FHIR." 0..0 MiddleName 0..1 FamilyName Purpose from http://hl7.org/fhir/ValueSet/name-use diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 1b91ec04..c7b50c65 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -1,11 +1,11 @@ Grammar: DataElement 5.0 Namespace: shr.entity -Description: "The namespace containing definitions for basic classes in CIMI." +Description: "The namespace containing definitions for basic classes." Uses: shr.core, shr.base Abstract Element: EntityOrRole Based on: InformationItem -Description: "CIMI parent class for both Entity and Role." +Description: "Parent class for both Entity and Role." //Identifier Abstract Element: Role diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 7dd63caf..8d7d611d 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: odh Description: "Patient’s or family member's work information." -Uses: shr.core, shr.base, cimi.composition, shr.entity, shr.encounter +Uses: shr.core, shr.base, shr.composition, shr.entity, shr.encounter CodeSystem: LNC = http://loinc.org CodeSystem: UCUM = http://unitsofmeasure.org @@ -206,7 +206,6 @@ Based on: Observation Description: "A simplified observation for social histories." Category is OBSCAT#social-history 0..1 FocalSubjectModifier -// Get rid of some unnecessary CIMI-isms //0..0 SourceOfInformation 0..0 FindingMethod 0..0 AnatomicalLocation diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index c4833efc..800f3e60 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -34,8 +34,7 @@ Description: "Specimen resulting from biopsy or excision of breast and surroundi Element: ColdIschemiaTime Concept: LNC#44778-9 - Description: "The time period between the chilling of a tissue or tissue sample and the time it is warmed. - CIMI Alignment: In CIMI Version 0.0.4, specimen processing is represented as a 'SpecimenProcessingPerformed' clinical statement, mapped to FHIR Procedure. However, specimen processing should actually map to FHIR Specimen.processing, part of the Specimen resource. It would be a difficult mapping exercise (beyond the scope of this IG) to express the mapping rule that any CIMI SpecimenProcessingPerformed clinical statement needs to mapped to FHIR by (1) finding the corresponding Specimen entity, and (2) mapping the content of (possibly multiple) SpecimenProcessingPerformed into the FHIR Specimen resource. To avoid this complexity, the breast cancer model expresses the cold ischemia time as an attribute of the BreastSpecimen rather than a separate procedure." + Description: "The time period between the chilling of a tissue or tissue sample and the time it is warmed." Value: TimePeriod EntryElement: BreastCancerPresenceStatement diff --git a/spec/cimi_procedure.txt b/spec/shr_procedure.txt similarity index 98% rename from spec/cimi_procedure.txt rename to spec/shr_procedure.txt index 0fc895fc..39a03f0d 100644 --- a/spec/cimi_procedure.txt +++ b/spec/shr_procedure.txt @@ -1,6 +1,6 @@ Grammar: DataElement 5.0 -Namespace: cimi.procedure -Description: "The CIMI procedure domain contains contexts, topics, and statements related to procedures." +Namespace: shr.procedure +Description: "The procedure domain contains contexts, topics, and statements related to procedures." Uses: shr.core, shr.base, shr.entity CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category diff --git a/spec/cimi_procedure_map.txt b/spec/shr_procedure_map.txt similarity index 99% rename from spec/cimi_procedure_map.txt rename to spec/shr_procedure_map.txt index 727224d6..219fc3d3 100644 --- a/spec/cimi_procedure_map.txt +++ b/spec/shr_procedure_map.txt @@ -1,5 +1,5 @@ Grammar: Map 5.1 -Namespace: cimi.procedure +Namespace: shr.procedure Target: FHIR_STU_3 From 817585716197073005d7200098ac0da67a69218f Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 24 Oct 2018 14:59:33 -0400 Subject: [PATCH 065/289] Split big shr_base file into three pieces (still same namespace) --- spec/LandingPageBreastCancer.html | 2 +- spec/shr_base.txt | 480 ------------------------------ spec/shr_base_action.txt | 155 ++++++++++ spec/shr_base_finding.txt | 334 +++++++++++++++++++++ spec/shr_procedure.txt | 4 +- 5 files changed, 492 insertions(+), 483 deletions(-) create mode 100644 spec/shr_base_action.txt create mode 100644 spec/shr_base_finding.txt diff --git a/spec/LandingPageBreastCancer.html b/spec/LandingPageBreastCancer.html index d8ffbf0e..1981544f 100644 --- a/spec/LandingPageBreastCancer.html +++ b/spec/LandingPageBreastCancer.html @@ -105,7 +105,7 @@

    The CIMI Topic-Context Pattern

It is important to understand the both the benefits and costs of this design choice. Separating topic and context increases consistency and reuse. For example, the same procedure topic can be used whether the context is recommending the procedure, planning the procedure, or performing the procedure. In addition, by reusing the contexts, each recommendation will have the same set of recommendation-related attributes, courtesy of the shared context. The same is true for each plan or performance, regardless of topic.

Under the topic-context pattern, creating one new domain class can require creating multiple classes. For example, the BreastCancerStage observation requires two new classes: a BreastCancerStageTopic class, where the StageTiming attribute is added, and the BreastCancerStage class itself, which extends and constrains Observation. In the ADL/BMM serialization, the BreastCancerStageTopic properties would form a new class in the BMM, extending the reference model, and the terminology and other constraints would be applied in an archetype. Modelers must weave three threads together form new classes. It is possible that the right user-friendly tooling could mitigate the resulting "what-goes-where?" and "what-comes-from-where?" problems, but tooling cannot decide which of the three hierarchies should be extended. Even in CIMI circles, this is frequently a gray area. 

-

Exploration of alternatives is beyond the scope of this IG, but we briefly method that there is a potential simplification that could retain the key benefits of the topic-context pattern, while greatly simplifying the class hierarchy by eliminating the separate topic and context hierarchies. This involves extending the clinical statement hierarchy with classes that represent different contexts, creating, for example, OrderedStatement, ActionPerformedStatement, ActionNotPerformedStatement, ObservationStatement, etc. This approach creates a fixed set of classes from which all other classes derive.

+

Exploration of alternatives is beyond the scope of this IG, but we briefly method that there is a potential simplification that could retain the key benefits of the topic-context pattern, while greatly simplifying the class hierarchy by eliminating the separate topic and context hierarchies. This involves extending the clinical statement hierarchy with classes that represent different contexts, creating, for example, OrderedStatement, ActionPerformed, ActionNotPerformedStatement, ObservationStatement, etc. This approach creates a fixed set of classes from which all other classes derive.

Terminology Approach

diff --git a/spec/shr_base.txt b/spec/shr_base.txt index e860b516..27613220 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -13,486 +13,6 @@ Element: InformationItem Concept: MTH#C1705654 Description: "Parent class for any entry in clinical or administrative health-related system, including information about organizations, providers, patients, services, payments, decision support artifacts, etc." -Abstract Element: NonIndependentFinding -Based on: InformationItem -Description: "A finding that is part of another finding, does not or cannot stand alone." -Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) -// exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 -1..1 MostSpecificCode -0..1 ExceptionValue -0..1 ReferenceRange // included here because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. - - Element: ExceptionValue - Concept: TBD - Description: "Reason that a value associated with a test or other finding is missing." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/data-absent-reason if covered - - Element: ReferenceRange - Concept: MTH#C0883335 - Description: "The usual or acceptable range for a test result." - Value: Range // TODO: align this with FHIR - 0..1 Type from http://hl7.org/fhir/ValueSet/referencerange-meaning if covered - 0..1 ApplicableSubpopulation - 0..1 ApplicableAgeRange - - Element: ApplicableSubpopulation - Concept: MTH#C0039309 "Target Population" - Description: "Codes to indicate the target population this reference range applies to. For example, a reference range may be based on the normal population or a particular sex or race." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/referencerange-appliesto if covered - - Element: ApplicableAgeRange - Concept: TBD - Description: "The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so." // FHIR: how exactly does one indicate a neonatal or prenatal age? - Value: Range - -Abstract Element: Finding -Based on: NonIndependentFinding // Although the parent is NonIndependentFinding, a Finding can be independent. It's a modeling compromise that allows better mapping. -Description: "An assertion, determination, opinion, evaluation, result, observation, or measurement made by a person or device." -0..1 Patient -0..1 SpecificFocusOfFinding -0..1 Encounter // findings are often associated with specific encounters -0..1 FindingMethod -1..1 FindingStatus -0..1 RelevantTime -0..* NonIndependentFinding - - Element: SpecificFocusOfFinding - Description: "The specific observed item finding relates to. The SpecificFocusOfFinding is only required if the thing observed is different than the patient. The SpecificFocusOfFinding could be a relative of the patient, a location, or a group. The SpecificFocusOfFinding for cancer progression would be the cancer condition. If the property is wound length, the SpecificFocusOfFinding would be an instance of a wound. In the case of an assertion of existence, the SpecificFocusOfFinding is the larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter. SpecificFocusOfFinding should not be used to record anatomical location." - Value: string or CodeableConcept or Identifier or ref(InformationItem) - 0..1 RelationshipToPersonOfRecord - - Element: MostSpecificCode - Description: "A code describing the data item. In an observation, the code reprsents the 'question': the aspect or property of the subject being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist, for example, the SNOMED-CT code for pneumonia." - Value: CodeableConcept - - Element: RelevantTime - Concept: TBD - Description: "The time or time period that the statement addresses. - The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." - Value: dateTime or TimePeriod - - Element: FindingMethod - Concept: TBD - Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." - Value: CodeableConcept should be from FindingMethodVS - - Element: FindingStatus - Concept: TBD - Description: "Indicates whether the finding is preliminary, amended, final, etc." - Value: code or CodeableConcept - - -EntryElement: Observation -Based on: Finding -Concept: TBD -Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. -Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." -//0..0 Observer -0..1 DeltaFlag -1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered -0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? -0..1 AdditionalText -0..1 Interpretation -0..1 Device -0..1 Specimen -0..* Precondition -0..* Media - FindingStatus value is type code - FindingStatus from http://hl7.org/fhir/ValueSet/observation-status -0..1 PanelMembers - - Element: Observer - Concept: MTH#C0449416 - Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." - Value: ref(InformationItem) //string or ref(Practitioner) or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) - 0..1 RelationshipToPersonOfRecord - - Element: RelationshipToPersonOfRecord - Concept: MTH#C0015608 - Description: "The relationship to the person of record." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered - - Element: AdditionalText - Concept: MTH#C0947611 - Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." - Value: string // change to language-text - - Element: Interpretation - Concept: MTH#C0420833 - Description: "A clinical interpretation of a finding (applies to both assertions and observation)." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/observation-interpretation if covered - - Element: PanelMembers - Concept: TBD - Description: "PanelMembers represent the elements of a group of a related but independent evaluations. - Examples are the measurements that compose a complete blood count (CBC), or the elements of a pathology report. Each member is an independent evaluation, but the grouping reflects a composite lab order, shared specimen, or a single report author. Typically the Category and Reason are not given for individual findings that are part of the panel, but rather given at the level of the panel itself." - 0..* ref(Observation) - - Element: Precondition - Concept: TBD - Description: "A description of the conditions or context of an observation, for example, under sedation, fasting or post-exercise. Body position and body site are also qualifiers, but handled separately. A qualifier cannot modify the measurement type; for example, a fasting blood sugar is still a blood sugar. " - Value: CodeableConcept or ref(Observation) - - Element: DeltaFlag - Concept: MTH#C1705241 - Description: "Indicator of significant change (delta) from the last or previous measurement." - Value: CodeableConcept from DeltaFlagVS - -// Element: Issued -// Description: "The date and time this observation was made available to providers, typically after the results have been reviewed and verified." -// Value: instant - - -// Non-Laboratory Results - -EntryElement: NonLaboratoryObservation -Based on: Observation -Description: "An observation not based on a specimen." -0..0 Specimen - -EntryElement: SimpleNonLaboratoryObservation -Based on: NonLaboratoryObservation -Description: "An observation having no components or panel members" -0..0 NonIndependentFinding -0..0 PanelMembers - -EntryElement: CodedNonLaboratoryObservation -Based on: NonLaboratoryObservation -Concept: TBD -Description: "The result of evaluations (measurements, tests, or questions) whose answer is expressed as a code." -Value: CodeableConcept -0..0 ReferenceRange - -EntryElement: SimpleCodedNonLaboratoryObservation -Based on: CodedNonLaboratoryObservation -Description: "An observation whose result is a code, and also having no components or panel members" -0..0 NonIndependentFinding -0..0 PanelMembers - -EntryElement: ComponentOnlyNonLaboratoryObservation -Based on: NonLaboratoryObservation -Description: "An observation with components, but without a result value or panel members." -0..0 Value -0..0 ExceptionValue -0..0 PanelMembers -0..0 ReferenceRange - -// Laboratory Measurements and Results - -EntryElement: LaboratoryObservation -Based on: Observation -Description: "A coded finding based on a specimen collected from a patient." -1..1 Patient -1..1 Specimen -0..0 AnatomicalLocation // AnatomicalLocation is determined indirectly from Specimen.CollectionSite - Category is OBSCAT#laboratory -0..* DiagnosticService - - Element: DiagnosticService - Concept: TBD - Description: "The service completing the observations, e.g. biochemistry, microbiology, blood bank." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/diagnostic-service-sections if covered - -EntryElement: CodedLaboratoryObservation -Based on: LaboratoryObservation -Description: "A coded finding from a laboratory test." -Value: CodeableConcept -0..0 ReferenceRange - -EntryElement: SimpleLaboratoryObservation -Based on: LaboratoryObservation -Description: "A coded finding from a laboratory test without further panel members or components." -0..0 NonIndependentFinding -0..0 PanelMembers - -EntryElement: SimpleCodedLaboratoryObservation -Based on: CodedLaboratoryObservation -Description: "A coded finding from a laboratory test without further panel members or components." -0..0 NonIndependentFinding -0..0 PanelMembers - -//---------- Assertions ------------- - -Abstract Element: ExistenceAssertion -Based on: Finding -Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place." -Value: CodeableConcept from PresentAbsentVS -0..0 ReferenceRange -0..1 ObjectIdentifier // TODO: 0..* business identifier? -0..1 Certainty - FindingStatus value is type CodeableConcept - - Element: ObjectIdentifier - Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." - Value: string - - Element: Certainty // TODO: why not move to Finding? - Concept: TBD - Description: "The degree of confidence in a conclusion or assertion." - Value: CodeableConcept - -Abstract Element: PresenceAssertion -Based on: ExistenceAssertion -Description: "Finding that a phenomena is present." - Value is SCT#52101004 "Present (qualifier value)" -0..1 Certainty from PresenceCertaintyVS - - -Abstract Element: AbsenceAssertion -Based on: ExistenceAssertion -Description: "Finding that an entity, person, role, condition, or phenomenon is absent." - Value is SCT#2667000 "Absent (qualifier value)" -0..1 Certainty from AbsenceCertaintyVS - -EntryElement: ConditionPresenceAssertion -Based on: PresenceAssertion -Concept: TBD -Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." -//0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson - MostSpecificCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered -1..* Category from ConditionCategoryVS -0..* AnatomicalLocation -0..* ConditionCause -1..1 ClinicalStatus -0..1 WhenClinicallyRecognized -0..1 PresentOnAdmission -0..1 Severity -0..1 Criticality -0..1 Stage -0..1 Onset -0..1 Abatement // TODO: change to observation - - Element: ConditionCause - Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" - Value: CodeableConcept or ref(Entity) or ref(Finding) - // probably other attributes needed, such as likelihood or type of cause - - Element: ClinicalStatus - Concept: TBD - Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." - Value: code from http://hl7.org/fhir/ValueSet/condition-clinical - - Element: WhenClinicallyRecognized - Concept: TBD - Description: "The time at which a condition or condition was first identified in a healthcare context." - Value: date - - Element: PresentOnAdmission - Concept: LNC#89251-3 "Condition present on admission" - Description: "If the problem or condition existed before the current episode of care." - Value: CodeableConcept from YesNoUnknownVS - - Element: Severity - Concept: MTH#C0392364 - Description: "Degree of harshness or extent of a symptom, disorder, or condition." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/condition-severity - - Element: Criticality - Concept: MTH#C3858539 "Criticality" - Description: "The potential clinical harm associated with a condition. When the worst case result is assessed to have a life-threatening or organ system threatening potential, it is considered to be of high criticality." - Value: code from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality - - Element: Stage - Concept: MTH#C0699749 - Description: "The relative advancement in the course of a disease. The value is the summary stage or stage group. StageDetail optionally contains the full staging information." - Value: CodeableConcept - 0..1 StageDetail - - Element: StageDetail - Concept: TBD - Description: "The full staging information" - Value: ref(Observation) - - Element: AlleviatingFactor - Concept: LNC#55258-8 - Description: "Activities that reduce the severity of the pathology" - Value: CodeableConcept - - Element: ExacerbatingFactor - Concept: LNC#55258-8 - Description: "Activities that increase the severity of the pathology" - Value: CodeableConcept - - Element: Onset - Concept: LNC#85585-8 - Description: "The beginning or first appearance of a mental or physical disorder." - Value: dateTime or Age or TimePeriod or Range or string - - Element: Abatement - Concept: LNC#88878-4 - Description: "The end, remission or resolution." - Value: dateTime or Age or boolean or TimePeriod or Range or string - - -EntryElement: ConditionAbsenceAssertion -Based on: AbsenceAssertion -Concept: MTH#C0277541 "no disease present" -Description: "A finding that a condition is or was not present in the subject at a certain time or time period, not necessarily the time the information is gathered." - MostSpecificCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered -1..* Category from ConditionCategoryVS -0..* AnatomicalLocation - -EntryElement: ClinicalNote -Based on: Finding -Concept: MTH#C0747978 "Progress Note" -Description: "An entry concerning a patient where the result is a narrative text." -1..1 Patient -1..1 AdditionalText // make required - - -//---------- Actions -------------- - -Abstract Element: ActionStatement -Based on: InformationItem -Description: "Abstract class representing any type of action." -1..1 Patient // constrain from 0..1 to 1..1 -0..1 Encounter // actions often take place during an encounter -1..1 ActionTopic // introduce topics at this point -0..* Reason - - Element: Reason - Concept: MTH#C0566251 - Description: "The justification for an action or non-action, conclusion, opinion, etc." - Value: string or CodeableConcept or ref(Finding) - -Abstract Element: ActionPerformedStatement -Based on: ActionStatement -Description: "Abstract class representing performance of any type of action." -1..1 OccurrenceTimeOrPeriod // when the action took place -0..* Participant -1..1 Status should be from http://hl7.org/fhir/ValueSet/event-status -0..1 Method -0..* RelatedRequest -//0..1 EnactsPlan -//0..1 FulfillsOrder -0..1 ref(Facility) -0..1 Outcome // e.g., AdverseEvent - - Element: Participant - Concept: MTH#C1550369 - Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." - Value: ref(EntityOrRole) - 0..1 ParticipationType // role - 0..1 ParticipationPeriod - 0..1 OnBehalfOf - - Element: ParticipationType - Concept: MTH#C1553854 - Description: "The role played by the participant engaged in the action, for example, as the attending physician, surgical assistant, etc." - Value: CodeableConcept from FHIR/v3-ParticipationType - - Element: ParticipationPeriod - Concept: TBD - Description: "The point in time or span of time the participant is involved." - Value: TimePeriod - - Element: Method - Concept: TBD - Description: "The technique used to carry out an action, for example, the specific imaging technical or assessment vehicle." - Value: CodeableConcept // TODO: limit to a procedure code - - Element: RelatedRequest - Concept: TBD - Description: "The proposal, order, or plan that is partly or wholly fulfilled by the performance of this act." - Value: ref(ActionRequestedStatement) - - /* - Element: EnactsPlan - Concept: TBD - Description: "The plan that is partly or wholly enacted by the performance of this act." - Value: ref(ActionRequestedStatement) - - Element: FulfillsOrder - Concept: TBD - Description: "The order that is partly or wholly enacted by the performance of this act." - Value: ref() - */ - Element: Outcome - Concept: TBD - Description: "The result of performing an action or behavior, for example, an adverse reaction or new finding." - Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/procedure-outcome - 0..* ref(Finding) - - -Abstract Element: ActionRequestedStatement -Based on: ActionStatement -Description: "Abstract class representing a request for any type of action." -1..1 Status should be from http://hl7.org/fhir/ValueSet/request-status -1..1 RequestIntent -0..1 ExpectedPerformanceTime -0..1 ExpectedPerformerType -0..1 ExpectedPerformer -0..1 ExpectedMethod -0..1 PriorityRank should be from http://hl7.org/fhir/ValueSet/request-priority -0..1 PerformerInstructions -0..1 PatientInstructions -0..1 CommunicationMethod - - Element: RequestIntent - Concept: TBD - Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." - Value: code from http://hl7.org/fhir/ValueSet/request-intent - - Element: ExpectedPerformanceTime - Concept: TBD - Description: "When an action should be done. If the action is a series or recurs (e.g. daily blood sugar testing in the morning) then a Timing can be used to describe the periodicity." - Value: dateTime or date or TimePeriod or Timing - - Element: ExpectedPerformerType - Concept: TBD - Description: "What type of party should carry out the testing." - Value: CodeableConcept // what ValueSet?? - - Element: ExpectedPerformer - Concept: TBD - Description: "Who should carry out the tests. For example, the patient or caregiver." - Value: ref(Entity) or ref(Organization) - - Element: ExpectedMethod - Concept: TBD - Description: "The method that should be used to carry out the action." - Value: ref(Method) - - Element: PerformerInstructions - Concept: TBD - Description: "Information for the performer of the test, if needed." - Value: string - - Element: PatientInstructions - Concept: TBD - Description: "Information for the patient, such as, where to get the test, how to prepare for the test, etc." - Value: string - - Element: CommunicationMethod - Concept: TBD - Description: "This is the method the provider used to communicate. Examples include: Written, Telephoned, Verbal, Electronically Entered, Policy, Service Correction, Duplicate, etc. 'Code indicating the origin of the prescription.' - NCPDP Telecommunication (Field 419-DJ, Data Dictionary 201104). Possible values include: Written; Telephone; Electronic; Facsimile; Pharmacy; Not Known." - Value: CodeableConcept - - -Abstract Element: ActionNotPerformedStatement -Based on: ActionStatement -Description: "Abstract class representing non-performance of any type of action." -0..1 RelatedRequest -1..1 NonOccurrenceTimeOrPeriod - -Abstract Element: ActionRequestedAgainstStatement -Based on: ActionStatement -Description: "Abstract class representing a request to not perform any type of action." - -Abstract Element: ActionTopic -Description: "Compositional and reusable grouping of attributes that make up the clinical focus of an action statement, independent whether the action is potential or actual, past or future." -0..1 Category -1..1 TopicCode - - Element: TopicCode - Concept: TBD - Description: "The concept representing the finding or action that is the topic of the statement. - - For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." - Value: CodeableConcept - - - Element: Entry Concept: MTH#C1705654 Description: "Metadata attributes that apply to any item represented in the standard health record. An Entry may not belong exclusively to a single person's health record, but could represent an entity that surfaces in multiple records, such as organizations or practitioners. If the entry belongs to a single person's record, then the identity of the person of record must be recorded." diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt new file mode 100644 index 00000000..25729393 --- /dev/null +++ b/spec/shr_base_action.txt @@ -0,0 +1,155 @@ +Grammar: DataElement 5.0 +Namespace: shr.base +Description: "Contains the SHR Entry definition -- the metadata added to any independent item in the SHR." +Uses: shr.core, shr.entity, shr.encounter + +//---------- Actions -------------- + +Abstract Element: ActionStatement +Based on: InformationItem +Description: "Abstract class representing any type of action." +1..1 Patient // constrain from 0..1 to 1..1 +0..1 Encounter // actions often take place during an encounter +1..1 ActionTopic // introduce topics at this point +0..* Reason + + Element: Reason + Concept: MTH#C0566251 + Description: "The justification for an action or non-action, conclusion, opinion, etc." + Value: string or CodeableConcept or ref(Finding) + +Abstract Element: ActionPerformed +Based on: ActionStatement +Description: "Abstract class representing performance of any type of action." +1..1 OccurrenceTimeOrPeriod // when the action took place +0..* Participant +1..1 Status should be from http://hl7.org/fhir/ValueSet/event-status +0..1 Method +0..* RelatedRequest +//0..1 EnactsPlan +//0..1 FulfillsOrder +0..1 ref(Facility) +0..1 Outcome // e.g., AdverseEvent + + Element: Participant + Concept: MTH#C1550369 + Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." + Value: ref(EntityOrRole) + 0..1 ParticipationType // role + 0..1 ParticipationPeriod + 0..1 OnBehalfOf + + Element: ParticipationType + Concept: MTH#C1553854 + Description: "The role played by the participant engaged in the action, for example, as the attending physician, surgical assistant, etc." + Value: CodeableConcept from FHIR/v3-ParticipationType + + Element: ParticipationPeriod + Concept: TBD + Description: "The point in time or span of time the participant is involved." + Value: TimePeriod + + Element: Method + Concept: TBD + Description: "The technique used to carry out an action, for example, the specific imaging technical or assessment vehicle." + Value: CodeableConcept // TODO: limit to a procedure code + + Element: RelatedRequest + Concept: TBD + Description: "The proposal, order, or plan that is partly or wholly fulfilled by the performance of this act." + Value: ref(ActionRequested) + + /* + Element: EnactsPlan + Concept: TBD + Description: "The plan that is partly or wholly enacted by the performance of this act." + Value: ref(ActionRequested) + + Element: FulfillsOrder + Concept: TBD + Description: "The order that is partly or wholly enacted by the performance of this act." + Value: ref() + */ + Element: Outcome + Concept: TBD + Description: "The result of performing an action or behavior, for example, an adverse reaction or new finding." + Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/procedure-outcome + 0..* ref(Finding) + + +Abstract Element: ActionRequested +Based on: ActionStatement +Description: "Abstract class representing a request for any type of action." +1..1 Status should be from http://hl7.org/fhir/ValueSet/request-status +1..1 RequestIntent +0..1 ExpectedPerformanceTime +0..1 ExpectedPerformerType +0..1 ExpectedPerformer +0..1 ExpectedMethod +0..1 PriorityRank should be from http://hl7.org/fhir/ValueSet/request-priority +0..1 PerformerInstructions +0..1 PatientInstructions +0..1 CommunicationMethod + + Element: RequestIntent + Concept: TBD + Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." + Value: code from http://hl7.org/fhir/ValueSet/request-intent + + Element: ExpectedPerformanceTime + Concept: TBD + Description: "When an action should be done. If the action is a series or recurs (e.g. daily blood sugar testing in the morning) then a Timing can be used to describe the periodicity." + Value: dateTime or date or TimePeriod or Timing + + Element: ExpectedPerformerType + Concept: TBD + Description: "What type of party should carry out the testing." + Value: CodeableConcept // what ValueSet?? + + Element: ExpectedPerformer + Concept: TBD + Description: "Who should carry out the tests. For example, the patient or caregiver." + Value: ref(Entity) or ref(Organization) + + Element: ExpectedMethod + Concept: TBD + Description: "The method that should be used to carry out the action." + Value: ref(Method) + + Element: PerformerInstructions + Concept: TBD + Description: "Information for the performer of the test, if needed." + Value: string + + Element: PatientInstructions + Concept: TBD + Description: "Information for the patient, such as, where to get the test, how to prepare for the test, etc." + Value: string + + Element: CommunicationMethod + Concept: TBD + Description: "This is the method the provider used to communicate. Examples include: Written, Telephoned, Verbal, Electronically Entered, Policy, Service Correction, Duplicate, etc. 'Code indicating the origin of the prescription.' - NCPDP Telecommunication (Field 419-DJ, Data Dictionary 201104). Possible values include: Written; Telephone; Electronic; Facsimile; Pharmacy; Not Known." + Value: CodeableConcept + + +Abstract Element: ActionNotPerformedStatement +Based on: ActionStatement +Description: "Abstract class representing non-performance of any type of action." +0..1 RelatedRequest +1..1 NonOccurrenceTimeOrPeriod + +Abstract Element: ActionRequestedAgainstStatement +Based on: ActionStatement +Description: "Abstract class representing a request to not perform any type of action." + +Abstract Element: ActionTopic +Description: "Compositional and reusable grouping of attributes that make up the clinical focus of an action statement, independent whether the action is potential or actual, past or future." +0..1 Category +1..1 TopicCode + + Element: TopicCode + Concept: TBD + Description: "The concept representing the finding or action that is the topic of the statement. + + For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." + Value: CodeableConcept diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt new file mode 100644 index 00000000..d5a9dd13 --- /dev/null +++ b/spec/shr_base_finding.txt @@ -0,0 +1,334 @@ +Grammar: DataElement 5.0 +Namespace: shr.base +Description: "Contains the SHR Entry definition -- the metadata added to any independent item in the SHR." +Uses: shr.core, shr.entity, shr.encounter + + +Abstract Element: NonIndependentFinding +Based on: InformationItem +Description: "A finding that is part of another finding, does not or cannot stand alone." +Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) +// exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 +1..1 MostSpecificCode +0..1 ExceptionValue +0..1 ReferenceRange // included here because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. + + Element: ExceptionValue + Concept: TBD + Description: "Reason that a value associated with a test or other finding is missing." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/data-absent-reason if covered + + Element: ReferenceRange + Concept: MTH#C0883335 + Description: "The usual or acceptable range for a test result." + Value: Range // TODO: align this with FHIR + 0..1 Type from http://hl7.org/fhir/ValueSet/referencerange-meaning if covered + 0..1 ApplicableSubpopulation + 0..1 ApplicableAgeRange + + Element: ApplicableSubpopulation + Concept: MTH#C0039309 "Target Population" + Description: "Codes to indicate the target population this reference range applies to. For example, a reference range may be based on the normal population or a particular sex or race." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/referencerange-appliesto if covered + + Element: ApplicableAgeRange + Concept: TBD + Description: "The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so." // FHIR: how exactly does one indicate a neonatal or prenatal age? + Value: Range + +Abstract Element: Finding +Based on: NonIndependentFinding // Although the parent is NonIndependentFinding, a Finding can be independent. It's a modeling compromise that allows better mapping. +Description: "An assertion, determination, opinion, evaluation, result, observation, or measurement made by a person or device." +0..1 Patient +0..1 SpecificFocusOfFinding +0..1 Encounter // findings are often associated with specific encounters +0..1 FindingMethod +1..1 FindingStatus +0..1 RelevantTime +0..* NonIndependentFinding + + Element: SpecificFocusOfFinding + Description: "The specific observed item finding relates to. The SpecificFocusOfFinding is only required if the thing observed is different than the patient. The SpecificFocusOfFinding could be a relative of the patient, a location, or a group. The SpecificFocusOfFinding for cancer progression would be the cancer condition. If the property is wound length, the SpecificFocusOfFinding would be an instance of a wound. In the case of an assertion of existence, the SpecificFocusOfFinding is the larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter. SpecificFocusOfFinding should not be used to record anatomical location." + Value: string or CodeableConcept or Identifier or ref(InformationItem) + 0..1 RelationshipToPersonOfRecord + + Element: MostSpecificCode + Description: "A code describing the data item. In an observation, the code reprsents the 'question': the aspect or property of the subject being observed or measured. In an entity or existence assertion, the code represents the type of entity, event, condition, or phenomenon that is being asserted to exist or not exist." + Value: CodeableConcept + + Element: RelevantTime + Concept: TBD + Description: "The time or time period that the statement addresses. + The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." + Value: dateTime or TimePeriod + + Element: FindingMethod + Concept: TBD + Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." + Value: CodeableConcept should be from FindingMethodVS + + Element: FindingStatus + Concept: TBD + Description: "Indicates whether the finding is preliminary, amended, final, etc." + Value: code or CodeableConcept + + +EntryElement: Observation +Based on: Finding +Concept: TBD +Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. +Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." +//0..0 Observer +0..1 DeltaFlag +1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered +0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? +0..1 AdditionalText +0..1 Interpretation +0..1 Device +0..1 Specimen +0..* Precondition +0..* Media + FindingStatus value is type code + FindingStatus from http://hl7.org/fhir/ValueSet/observation-status +0..1 PanelMembers + + Element: Observer + Concept: MTH#C0449416 + Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." + Value: ref(InformationItem) //string or ref(Practitioner) or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) + 0..1 RelationshipToPersonOfRecord + + Element: RelationshipToPersonOfRecord + Concept: MTH#C0015608 + Description: "The relationship to the person of record." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered + + Element: AdditionalText + Concept: MTH#C0947611 + Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." + Value: string // change to language-text + + Element: Interpretation + Concept: MTH#C0420833 + Description: "A clinical interpretation of a finding (applies to both assertions and observation)." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/observation-interpretation if covered + + Element: PanelMembers + Concept: TBD + Description: "PanelMembers represent the elements of a group of a related but independent evaluations. + Examples are the measurements that compose a complete blood count (CBC), or the elements of a pathology report. Each member is an independent evaluation, but the grouping reflects a composite lab order, shared specimen, or a single report author. Typically the Category and Reason are not given for individual findings that are part of the panel, but rather given at the level of the panel itself." + 0..* ref(Observation) + + Element: Precondition + Concept: TBD + Description: "A description of the conditions or context of an observation, for example, under sedation, fasting or post-exercise. Body position and body site are also qualifiers, but handled separately. A qualifier cannot modify the measurement type; for example, a fasting blood sugar is still a blood sugar. " + Value: CodeableConcept or ref(Observation) + + Element: DeltaFlag + Concept: MTH#C1705241 + Description: "Indicator of significant change (delta) from the last or previous measurement." + Value: CodeableConcept from DeltaFlagVS + +// Element: Issued +// Description: "The date and time this observation was made available to providers, typically after the results have been reviewed and verified." +// Value: instant + + +// Non-Laboratory Results + +EntryElement: NonLaboratoryObservation +Based on: Observation +Description: "An observation not based on a specimen." +0..0 Specimen + +EntryElement: SimpleNonLaboratoryObservation +Based on: NonLaboratoryObservation +Description: "An observation having no components or panel members" +0..0 NonIndependentFinding +0..0 PanelMembers + +EntryElement: CodedNonLaboratoryObservation +Based on: NonLaboratoryObservation +Concept: TBD +Description: "The result of evaluations (measurements, tests, or questions) whose answer is expressed as a code." +Value: CodeableConcept +0..0 ReferenceRange + +EntryElement: SimpleCodedNonLaboratoryObservation +Based on: CodedNonLaboratoryObservation +Description: "An observation whose result is a code, and also having no components or panel members" +0..0 NonIndependentFinding +0..0 PanelMembers + +EntryElement: ComponentOnlyNonLaboratoryObservation +Based on: NonLaboratoryObservation +Description: "An observation with components, but without a result value or panel members." +0..0 Value +0..0 ExceptionValue +0..0 PanelMembers +0..0 ReferenceRange + +// Laboratory Measurements and Results + +EntryElement: LaboratoryObservation +Based on: Observation +Description: "A coded finding based on a specimen collected from a patient." +1..1 Patient +1..1 Specimen +0..0 AnatomicalLocation // AnatomicalLocation is determined indirectly from Specimen.CollectionSite + Category is OBSCAT#laboratory +0..* DiagnosticService + + Element: DiagnosticService + Concept: TBD + Description: "The service completing the observations, e.g. biochemistry, microbiology, blood bank." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/diagnostic-service-sections if covered + +EntryElement: CodedLaboratoryObservation +Based on: LaboratoryObservation +Description: "A coded finding from a laboratory test." +Value: CodeableConcept +0..0 ReferenceRange + +EntryElement: SimpleLaboratoryObservation +Based on: LaboratoryObservation +Description: "A coded finding from a laboratory test without further panel members or components." +0..0 NonIndependentFinding +0..0 PanelMembers + +EntryElement: SimpleCodedLaboratoryObservation +Based on: CodedLaboratoryObservation +Description: "A coded finding from a laboratory test without further panel members or components." +0..0 NonIndependentFinding +0..0 PanelMembers + +//---------- Assertions ------------- + +Abstract Element: ExistenceAssertion +Based on: Finding +Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place." +Value: CodeableConcept from PresentAbsentVS +0..0 ReferenceRange +0..1 ObjectIdentifier // TODO: 0..* business identifier? +0..1 Certainty + FindingStatus value is type CodeableConcept + + Element: ObjectIdentifier + Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." + Value: string + + Element: Certainty // TODO: why not move to Finding? + Concept: TBD + Description: "The degree of confidence in a conclusion or assertion." + Value: CodeableConcept + +Abstract Element: PresenceAssertion +Based on: ExistenceAssertion +Description: "Finding that a phenomena is present." + Value is SCT#52101004 "Present (qualifier value)" +0..1 Certainty from PresenceCertaintyVS + + +Abstract Element: AbsenceAssertion +Based on: ExistenceAssertion +Description: "Finding that an entity, person, role, condition, or phenomenon is absent." + Value is SCT#2667000 "Absent (qualifier value)" +0..1 Certainty from AbsenceCertaintyVS + +EntryElement: ConditionPresenceAssertion +Based on: PresenceAssertion +Concept: TBD +Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." +//0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson + MostSpecificCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered +1..* Category from ConditionCategoryVS +0..* AnatomicalLocation +0..* ConditionCause +1..1 ClinicalStatus +0..1 WhenClinicallyRecognized +0..1 PresentOnAdmission +0..1 Severity +0..1 Criticality +0..1 Stage +0..1 Onset +0..1 Abatement // TODO: change abatement to an Observation + + Element: ConditionCause + Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" + Value: CodeableConcept or ref(Entity) or ref(Finding) + // probably other attributes needed, such as likelihood or type of cause + + Element: ClinicalStatus + Concept: TBD + Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." + Value: code from http://hl7.org/fhir/ValueSet/condition-clinical + + Element: WhenClinicallyRecognized + Concept: TBD + Description: "The time at which a condition or condition was first identified in a healthcare context." + Value: date + + Element: PresentOnAdmission + Concept: LNC#89251-3 "Condition present on admission" + Description: "If the problem or condition existed before the current episode of care." + Value: CodeableConcept from YesNoUnknownVS + + Element: Severity + Concept: MTH#C0392364 + Description: "Degree of harshness or extent of a symptom, disorder, or condition." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/condition-severity + + Element: Criticality + Concept: MTH#C3858539 "Criticality" + Description: "The potential clinical harm associated with a condition. When the worst case result is assessed to have a life-threatening or organ system threatening potential, it is considered to be of high criticality." + Value: code from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality + + Element: Stage + Concept: MTH#C0699749 + Description: "The relative advancement in the course of a disease. The value is the summary stage or stage group. StageDetail optionally contains the full staging information." + Value: CodeableConcept + 0..1 StageDetail + + Element: StageDetail + Concept: TBD + Description: "The full staging information" + Value: ref(Observation) + + Element: AlleviatingFactor + Concept: LNC#55258-8 + Description: "Activities that reduce the severity of the pathology" + Value: CodeableConcept + + Element: ExacerbatingFactor + Concept: LNC#55258-8 + Description: "Activities that increase the severity of the pathology" + Value: CodeableConcept + + Element: Onset + Concept: LNC#85585-8 + Description: "The beginning or first appearance of a mental or physical disorder." + Value: dateTime or Age or TimePeriod or Range or string + + Element: Abatement + Concept: LNC#88878-4 + Description: "The end, remission or resolution." + Value: dateTime or Age or boolean or TimePeriod or Range or string + + +EntryElement: ConditionAbsenceAssertion +Based on: AbsenceAssertion +Concept: MTH#C0277541 "no disease present" +Description: "A finding that a condition is or was not present in the subject at a certain time or time period, not necessarily the time the information is gathered." + MostSpecificCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered +1..* Category from ConditionCategoryVS +0..* AnatomicalLocation + +EntryElement: ClinicalNote +Based on: Finding +Concept: MTH#C0747978 "Progress Note" +Description: "An entry concerning a patient where the result is a narrative text." +1..1 Patient +1..1 AdditionalText // make required + + + diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 39a03f0d..863d9ef5 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -129,7 +129,7 @@ Description: "Base class for actions related to the collection of a specimen." Value: SimpleQuantity EntryElement: ProcedurePerformedStatement -Based on: ActionPerformedStatement +Based on: ActionPerformed Description: "A procedure that has been performed." ActionTopic is type ProcedureTopic Participant.OnBehalfOf value is type ref(Organization) @@ -160,7 +160,7 @@ Based on: ActionNotPerformedStatement 0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason EntryElement: ProcedureRequestedStatement -Based on: ActionRequestedStatement +Based on: ActionRequested PriorityRank must be from http://hl7.org/fhir/ValueSet/request-priority // required Status must be from http://hl7.org/fhir/ValueSet/request-status ActionTopic is type ProcedureTopic From 218ff9a5a62e006399af018b6e41cbbce2ad3ce8 Mon Sep 17 00:00:00 2001 From: May Terry Date: Wed, 24 Oct 2018 17:41:41 -0400 Subject: [PATCH 066/289] added mcode config file and an mcode landing page stub. --- spec/LandingPageMcode.html | 25 ++++++++++++++++++++++++ spec/ig-mcode-config.json | 39 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 spec/LandingPageMcode.html create mode 100644 spec/ig-mcode-config.json diff --git a/spec/LandingPageMcode.html b/spec/LandingPageMcode.html new file mode 100644 index 00000000..d6bf4f2c --- /dev/null +++ b/spec/LandingPageMcode.html @@ -0,0 +1,25 @@ +

This is the first release of the Minimum Common Oncology Data Elements (M-CODE) implementation guide.

+ +

About M-CODE

+

...placeholder - stuff about ASCO, CancerLinQ and the M-CODE effort.

+ + +

Disclaimers:

+

TBD

+ +

 

+ + +

Credits:

+

Domain content was provided by the ASCO/CancerLinQ team with additional research from the MITRE Corporation. Help, guidance, and wisdom was generously provided by all members of the ASCO/CancerLinQ team, especially the Dr. Robert Miller and Dr. Wendy Rubenstein.

+

This IG was authored by the MITRE Corporation using the Clinical Information Modeling and Profiling Language (CIMPL), a free, open source toolchain from MITRE Corporation.

+ + +

Appendix

+

TBD

+

 

+ +

Known Limitations and Bugs

+
    +
  • TBD
  • +
diff --git a/spec/ig-mcode-config.json b/spec/ig-mcode-config.json new file mode 100644 index 00000000..740ca4eb --- /dev/null +++ b/spec/ig-mcode-config.json @@ -0,0 +1,39 @@ +{ + "projectName": "HL7 FHIR Implementation Guide: Minimum Common Oncology Data Elements, Release 1 - US Realm (Draft for Comment 1)", + "projectShorthand": "mcode", + "projectURL": "http://hl7.org/fhir/us/mcode/", + "fhirURL": "http://hl7.org/fhir/us/mcode/", + "entryTypeURL": "http://hl7.org/fhir/us/mcode/spec/", + "implementationGuide": + { + "npmName": "hl7.fhir.us.mcode", + "version": "0.1.0", + "includeLogicalModels": true, + "includeModelDoc": true, + "indexContent": "LandingPageMcode.html", + "historyLink": "http://hl7.org/fhir/us/mcode/history.html", + "primarySelectionStrategy": + { + "strategy": "namespace", + "primary": ["mcode"], + "hideSupporting": true + } + }, + "filterStrategy": + { + "filter": true, + "strategy": "namespace", + "target": ["mcode"] + }, + "publisher": "The HL7 Cancer Interoperability Group sponsored by Clinical Interoperability Council Work Group (CIC)", + "contact": [ + { + "telecom": [ + { + "system": "url", + "value": "http://www.hl7.org/Special/committees/cic/index.cfm" + } + ] + } + ] +} \ No newline at end of file From 35f99389fdca1265eab00970430319ecb715b6ff Mon Sep 17 00:00:00 2001 From: May Terry Date: Wed, 24 Oct 2018 17:42:11 -0400 Subject: [PATCH 067/289] Update .DS_Store --- .DS_Store | Bin 0 -> 6148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fe08be147437b0167b4ddfc55b51d44a827f918f GIT binary patch literal 6148 zcmeH~JqiLr422WjLa^D=avBfd4F=H@cmdJ16BNXLj_%73f~&QNyg>3zG82}4#m+`V zbbTLIBE5*r;6_}#|6BN{`G3^HlnPLRKT|-v z&2F>COXc1A_Ig&|XVumX4*GF~m!AM6b`>w+ZrCrj0Bf=ZQGxMCz-3^d0$)|&0ix&< At^fc4 literal 0 HcmV?d00001 From 9fe197455d117c5f12b3491e0a6ea33baefc5b6c Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 25 Oct 2018 15:13:31 -0400 Subject: [PATCH 068/289] Changes naming on finding and assertion codes and classes --- spec/shr_base_finding.txt | 50 +++++++++++++++++++++++++++++-------- spec/shr_base_map.txt | 16 ++++++------ spec/shr_occupation.txt | 37 ++++++++++++++------------- spec/shr_occupation_map.txt | 5 ++-- spec/shr_oncology.txt | 42 +++++++++++++++---------------- spec/shr_wound.txt | 24 +++++++++--------- 6 files changed, 100 insertions(+), 74 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index d5a9dd13..b9428023 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -9,10 +9,14 @@ Based on: InformationItem Description: "A finding that is part of another finding, does not or cannot stand alone." Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) // exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 -1..1 MostSpecificCode +1..1 FindingCode 0..1 ExceptionValue 0..1 ReferenceRange // included here because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. + Element: FindingCode + Description: "A code describing the finding. In an observation, the code represents the 'question': the aspect or property of the Patient or SpecificFocusOfFinding being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist." + Value: CodeableConcept + Element: ExceptionValue Concept: TBD Description: "Reason that a value associated with a test or other finding is missing." @@ -52,10 +56,6 @@ Description: "An assertion, determination, opinion, evaluation, result, observat Value: string or CodeableConcept or Identifier or ref(InformationItem) 0..1 RelationshipToPersonOfRecord - Element: MostSpecificCode - Description: "A code describing the data item. In an observation, the code reprsents the 'question': the aspect or property of the subject being observed or measured. In an entity or existence assertion, the code represents the type of entity, event, condition, or phenomenon that is being asserted to exist or not exist." - Value: CodeableConcept - Element: RelevantTime Concept: TBD Description: "The time or time period that the statement addresses. @@ -72,8 +72,7 @@ Description: "An assertion, determination, opinion, evaluation, result, observat Description: "Indicates whether the finding is preliminary, amended, final, etc." Value: code or CodeableConcept - -EntryElement: Observation +EntryElement: Observation Based on: Finding Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. @@ -88,10 +87,16 @@ Observation has a value representing the result (answer), or an ExceptionValue i 0..1 Specimen 0..* Precondition 0..* Media + FindingCode is type ObservableCode FindingStatus value is type code FindingStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 PanelMembers + Element: ObservableCode + Based on: FindingCode + Description: "A code describing the aspect or property of the subject being observed or measured. The ObservableCode is the 'question code' that pairs to the 'answer' contained in the ResultValue." + Value: CodeableConcept + Element: Observer Concept: MTH#C0449416 Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." @@ -208,11 +213,17 @@ Abstract Element: ExistenceAssertion Based on: Finding Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place." Value: CodeableConcept from PresentAbsentVS + FindingCode is type ThingAssertedCode 0..0 ReferenceRange 0..1 ObjectIdentifier // TODO: 0..* business identifier? 0..1 Certainty FindingStatus value is type CodeableConcept + Element: ThingAssertedCode + Based on: FindingCode + Description: "A code representing the thing asserted to be present or absent; i.e., the type of condition, event, relationship or phenomenon that is being asserted to exist or not exist." + Value: CodeableConcept + Element: ObjectIdentifier Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." Value: string @@ -235,12 +246,14 @@ Description: "Finding that an entity, person, role, condition, or phenomenon is Value is SCT#2667000 "Absent (qualifier value)" 0..1 Certainty from AbsenceCertaintyVS -EntryElement: ConditionPresenceAssertion + +EntryElement: ConditionPresentAssertion Based on: PresenceAssertion Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." //0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson - MostSpecificCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered + ThingAssertedCode is type ConditionCode + ConditionCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make binding weaker because US Core requires an extensible binding 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation 0..* ConditionCause @@ -253,6 +266,11 @@ Description: "A condition that is or may be present in a subject. 'Condition' is 0..1 Onset 0..1 Abatement // TODO: change abatement to an Observation + Element: ConditionCode + Based on: ThingAssertedCode + Description: "The code describing the relationship, e.g., Father or Mother." + Value: CodeableConcept + Element: ConditionCause Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" Value: CodeableConcept or ref(Entity) or ref(Finding) @@ -315,11 +333,12 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Value: dateTime or Age or boolean or TimePeriod or Range or string -EntryElement: ConditionAbsenceAssertion +EntryElement: ConditionAbsentAssertion Based on: AbsenceAssertion Concept: MTH#C0277541 "no disease present" Description: "A finding that a condition is or was not present in the subject at a certain time or time period, not necessarily the time the information is gathered." - MostSpecificCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered + ThingAssertedCode is type ConditionCode + ConditionCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation @@ -331,4 +350,13 @@ Description: "An entry concerning a patient where the result is a narrative text 1..1 AdditionalText // make required +Abstract Element: RelationshipExistenceAssertion +Based on: ExistenceAssertion +Description: "An assertion of a realtionship between two things being either present or absent. The subject of the relationship is is the Patient (or SpecificFocusOfFinding, if given) and ." +Value: CodeableConcept from PresentAbsentVS + ThingAssertedCode is type RelationshipCode + Element: RelationshipCode + Based on: ThingAssertedCode + Description: "The code describing the relationship, e.g., Father or Mother." + Value: CodeableConcept \ No newline at end of file diff --git a/spec/shr_base_map.txt b/spec/shr_base_map.txt index 1b2a2fd5..c2bdc2da 100644 --- a/spec/shr_base_map.txt +++ b/spec/shr_base_map.txt @@ -27,7 +27,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs // RecordStatus maps to extension // _Entry.CosignedBy maps to extension // _Entry.VerifiedBy maps to extension - MostSpecificCode maps to code + ObservableCode maps to code FindingMethod maps to method AdditionalText maps to comment // Media maps to extension @@ -43,8 +43,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) - NonIndependentFinding._Concept maps to component.code - // TODO: change to MostSpecificCode + NonIndependentFinding.FindingCode maps to component.code NonIndependentFinding.Value maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation @@ -69,7 +68,7 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us // RecordStatus maps to extension // _Entry.CosignedBy maps to extension // _Entry.VerifiedBy maps to extension - MostSpecificCode maps to code + ObservableCode maps to code FindingMethod maps to method AdditionalText maps to comment // Media maps to extension @@ -85,8 +84,7 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) - NonIndependentFinding._Concept maps to component.code - // TODO: change to MostSpecificCode + NonIndependentFinding.FindingCode maps to component.code NonIndependentFinding.Value maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation @@ -103,12 +101,12 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us Encounter maps to context DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta -ConditionPresenceAssertion maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: +ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: // _Entry.CreationTime maps to assertedDate // why doesn't this work? // Patient maps to subject // SourceOfInformation.Value maps to asserter // why doesn't this work? Category maps to category - MostSpecificCode maps to code + ConditionCode maps to code constrain bodySite to 0..0 AnatomicalLocation maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Encounter maps to context @@ -122,6 +120,6 @@ ConditionPresenceAssertion maps to http://hl7.org/fhir/us/core/StructureDefiniti Stage.StageDetail maps to stage.assessment -ConditionAbsenceAssertion maps to Basic: +ConditionAbsentAssertion maps to Basic: // There is no mechanism in FHIR (not Condition, not Observation) to say "Patient does not have Condition X" diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 8d7d611d..2cc90d3c 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -33,7 +33,7 @@ Description: "The self-reported current and historical data about a person's eco A person's Employment Status could change over time, for example, a person could be employed following a period of choosing to not be in the labor force. Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 - MostSpecificCode is LNC#74165-2 "HistoryOfEmploymentStatus" + ObservableCode is LNC#74165-2 "HistoryOfEmploymentStatus" 0..0 NonIndependentFinding 0..0 FocalSubjectModifier @@ -44,7 +44,7 @@ Description: "A self-reported date that a person considers themselves to have A person can be both retired and employed (an Employment Status); most often, a person would be retired from one job and employed in another job. A person also can have more than one retirement date; for example, a person could retire from military service, then later retire from a civilian job. Multiple retirement dates should be recorded using multiple FHIR resources. Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." Value: dateTime - MostSpecificCode is LNC#87510-4 "Date of Retirement" + ObservableCode is LNC#87510-4 "Date of Retirement" 0..0 NonIndependentFinding 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. 0..0 FocalSubjectModifier @@ -55,7 +55,7 @@ Concept: LNC#87511-2 Description: "Self-reported date range(s) when a person worked in what is considered a combat zone; sometimes called a hazardous duty work. Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones. Multiple periods in combat zone should be recorded using multiple FHIR resources." Value: TimePeriod - MostSpecificCode is LNC#87511-2 + ObservableCode is LNC#87511-2 0..0 NonIndependentFinding 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. 0..0 FocalSubjectModifier // only patient @@ -68,7 +68,7 @@ Knowledge of person's Usual Work can potentially assist in diagnosis, treatment Example: a person has worked for a total of 30 years as a 'secretary' (Occupation), but in various industries, mostly hotel construction. Her Usual Occupation is 'secretary' and her Usual Industry is 'hotel construction.' Usual Work does not include work that was unpaid or voluntary." Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 - MostSpecificCode is LNC#21843-8 + ObservableCode is LNC#21843-8 NonIndependentFinding includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration @@ -83,14 +83,14 @@ includes 0..1 UsualOccupationDuration //Value: CodeableConcept from IndustryVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - MostSpecificCode is LNC#21844-6 "History of Usual industry" + FindingCode is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration Based on: NonIndependentFinding Concept: LNC#74163-7 "Usual occupation duration" Description: "The total time spent on an activity, inclusive of all time intervals, whether continuous or interrupted." Value: Quantity with units UCUM#a - MostSpecificCode is LNC#74163-7 "Usual occupation duration" + FindingCode is LNC#74163-7 "Usual occupation duration" EntryElement: PastOrPresentJob Based on: CodedSocialHistoryObservation @@ -100,7 +100,7 @@ A person can have more than one job at the same time and multiple jobs over time A person's job can be a social determinant of their health and information about a person's job can support patient care, population health, and public health. In patient care, knowledge of a person's past or present job(s) can impact recognition, diagnosis, management, and treatment of injuries and illnesses. These data also can be used for clinical decision support and to prompt discussion of preventive care measures. For example, a record of jobs that require prolonged time in the sun might prompt a health care provider to inquire if the person wears protective clothing or sunscreen while working. At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." 0..0 Value - MostSpecificCode is LNC#11341-5 "History of Occupation" + ObservableCode is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization NonIndependentFinding includes 0..1 Occupation @@ -117,7 +117,7 @@ includes 0..1 IsCurrentJob RelevantTime value is type TimePeriod Element: Occupation - Based on: Observation + Based on: CodedSocialHistoryObservation Concept: LNC#85659-1 "Occupation CDC Census code" Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 @@ -135,20 +135,20 @@ includes 0..1 IsCurrentJob Description: "An Organization as defined in FHIR" Element: PastOrPresentIndustry - Based on: Observation + Based on: CodedSocialHistoryObservation Concept: LNC#86188-0 Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." // Value: CodeableConcept from IndustryVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - MostSpecificCode is LNC#86188-0 + ObservableCode is LNC#86188-0 Element: WorkClassification - Based on: Observation + Based on: CodedSocialHistoryObservation Concept: LNC#85104-8 "Compensation and sector employment type" Description: "Type of compensation and sector for a person's job, such as 'paid work, self-employed' or 'voluntary work', as reported by the person." //Value: CodeableConcept from WorkClassificationVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 - MostSpecificCode is LNC#85104-8 "Compensation and sector employment type" + ObservableCode is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel Based on: NonIndependentFinding @@ -156,21 +156,21 @@ includes 0..1 IsCurrentJob Description: "A coded indicator of responsibilities for directing work and personnel management responsibilities for a person's job, as reported by the person. For US military jobs, this is pay grade." //Value: CodeableConcept from SupervisoryLevelVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 - MostSpecificCode is LNC#87707-6 + FindingCode is LNC#87707-6 Element: JobDuty Based on: NonIndependentFinding Concept: LNC#63761-1 Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " Value: string - MostSpecificCode is LNC#63761-1 + FindingCode is LNC#63761-1 Element: OccupationalHazard Based on: NonIndependentFinding Concept: LNC#87729-0 Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." Value: string - MostSpecificCode is LNC#87729-0 + FindingCode is LNC#87729-0 Element: WorkSchedule Based on: NonIndependentFinding @@ -178,13 +178,14 @@ includes 0..1 IsCurrentJob Description: "Typical arrangement of working hours for a person's job, as reported by the person." //Value: CodeableConcept from WorkScheduleVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 - MostSpecificCode is LNC#74159-5 + FindingCode is LNC#74159-5 Element: WeeklyWorkDays Based on: NonIndependentFinding Concept: LNC#74160-3 Description: "The average number of days per week that a person spends performing their duties for work." Value: Quantity with units UCUM#d + FindingCode is LNC#74160-3 0..0 ReferenceRange Element: DailyWorkHours @@ -192,7 +193,7 @@ includes 0..1 IsCurrentJob Concept: LNC#87512-0 Description: "The average number of hours in a day that a person spends performing their duties for work." Value: Quantity with units UCUM#h - MostSpecificCode is LNC#87512-0 + FindingCode is LNC#87512-0 0..0 ReferenceRange // Last minute addition 8/17 based on Genny's comment @@ -243,7 +244,7 @@ EntryElement: MilitaryServiceHistory Based on: CodedSocialHistoryObservation Description: "History of service in the US military." Category is OBSCAT#social-history - MostSpecificCode is MTH#C3714797 + ObservableCode is MTH#C3714797 NonIndependentFinding includes 1..1 MilitaryStatus includes 0..1 MilitaryServiceDischargeStatus diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index 8d3f99b0..060d03c9 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -5,11 +5,10 @@ Target: FHIR_STU_3 // do not map to US Core Results -- Brett says that's only for labs SocialHistoryObservation maps to Observation: Patient maps to subject - MostSpecificCode maps to code + ObservableCode maps to code Category maps to category NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) - NonIndependentFinding._Concept maps to component.code - // TODO: change to MostSpecificCode + NonIndependentFinding.FindingCode maps to component.code NonIndependentFinding.Value maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index 800f3e60..f9b797bc 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -38,10 +38,10 @@ Description: "Specimen resulting from biopsy or excision of breast and surroundi Value: TimePeriod EntryElement: BreastCancerPresenceStatement -Based on: ConditionPresenceAssertion +Based on: ConditionPresentAssertion Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." - MostSpecificCode from BreastCancerTypeVS + ConditionCode from BreastCancerTypeVS Stage.StageDetail value is type BreastCancerStage 0..1 FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding AnatomicalLocation is type BreastSite @@ -59,7 +59,7 @@ Based on: Observation Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. Description: "The stage of a breast cancer. Different staging systems use different staging groups, so there are currently no terminology bindings associated with this class." Value: CodeableConcept should be from http://loinc.org/LL240-3 - MostSpecificCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" + ObservableCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" 0..1 StageTimingPrefix NonIndependentFinding includes 0..1 BreastCancerPrimaryTumorClassification @@ -113,7 +113,7 @@ Based on: SimpleCodedLaboratoryObservation Description: "An evaluation of the size and shape of the nucleus in tumor cells and the percentage of tumor cells that are in the process of dividing or growing. Cancers with low nuclear grade grow and spread less quickly than cancers with high nuclear grade." Value: CodeableConcept from NuclearGradeVS Specimen is type BreastSpecimen - MostSpecificCode is MTH#C18513 + ObservableCode is MTH#C18513 DiagnosticService is #pathology @@ -123,7 +123,7 @@ Based on: CodedLaboratoryObservation Description: "The Elston Grade/Nottingham Score, representative of the aggressive potential of the tumor. Well differentiated cells (Grade 1) look similar to normal cells and are usually slow growing, while poorly differentiated cells (Grade 3) look very different than normal and are fast-growing." Value: CodeableConcept from NottinghamCombinedGradeVS ExceptionValue from NottinghamNullVS - MostSpecificCode is LNC#44648-4 + ObservableCode is LNC#44648-4 Specimen is type BreastSpecimen DiagnosticService is #pathology NonIndependentFinding @@ -160,7 +160,7 @@ Concept: LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" Description: "Estrogen receptor alpha is the predominant estrogen receptor expressed in breast tissue and is overexpressed in around 50% of breast carcinomas. ER status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options. The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." Value: CodeableConcept from PositiveNegativeVS - MostSpecificCode is LNC#16112-5 + ObservableCode is LNC#16112-5 DiagnosticService is #pathology Specimen is type BreastSpecimen NonIndependentFinding @@ -182,7 +182,7 @@ Concept: LNC#16113-3 Description: "Progesterone receptor status is a factor in determining prognosis and treatment options. The value is the percentage of cells that test (stain) positive for the presence of a receptor. The interpretation of positive or negative (found in the interpretation property) is based on the staining percentage, and may take into account the staining intensity. Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." Value: CodeableConcept from PositiveNegativeVS - MostSpecificCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" + ObservableCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" DiagnosticService is #pathology Specimen is type BreastSpecimen NonIndependentFinding @@ -208,7 +208,7 @@ Based on: CodedLaboratoryObservation Concept: LNC#48676-1 "HER2 [Interpretation] in Tissue" Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." Value: CodeableConcept from PositiveNegativeEquivocalVS - MostSpecificCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" + ObservableCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" DiagnosticService is #pathology Specimen is type BreastSpecimen 0..0 Precondition @@ -226,8 +226,8 @@ Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (I Value: CodeableConcept from HER2byIHCScoreVS ExceptionValue from HER2byIHCScoreNullVS Interpretation from PositiveNegativeEquivocalVS - MostSpecificCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" -0..0 FindingMethod // pre-coordinated in the MostSpecificCode + ObservableCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" +0..0 FindingMethod // pre-coordinated in the ObservableCode DiagnosticService is #pathology 0..0 Precondition Specimen is type BreastSpecimen @@ -249,7 +249,7 @@ Concept: LNC#85318-4 // Corrected 5/12/2018 by MK Description: "HER2 receptor status as determined by single-probe or dual-probe Fluorescence In Situ Hybridization (FISH)." 0..0 Value 0..0 ExceptionValue - MostSpecificCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" + ObservableCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" FindingMethod from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS DiagnosticService is #pathology @@ -285,7 +285,7 @@ Concept: MTH#C1709318 Description: "The Oncotype DX test for invasive breast cancer examines the activity of 21 genes in a patient’s breast tumor tissue to provide personalized information for tailoring treatment based on the biology of their individual disease. The value from 0 to 100 indicates the estimated risk of recurrence, with the highest risk indicated by a score greater than 31. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" Value: Quantity with units UCUM#1 - MostSpecificCode is MTH#C1709318 + ObservableCode is MTH#C1709318 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type ref(BreastSpecimen) @@ -297,7 +297,7 @@ Concept: MTH#C3898101 Description: "The Oncotype DX test for DCIS (Ductal Carcinoma in Situ) breast cancer. Risk scores range from 0 to 100 with the following interpretations: 0-38: Low-Risk, 39-54: Intermediate-Risk, 55+: High-Risk. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" Value: Quantity with units UCUM#1 - MostSpecificCode is MTH#C3898101 + ObservableCode is MTH#C3898101 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -308,7 +308,7 @@ Concept: LNC#76544-6 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Prosigna. The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Risk of Recurrence Score in the literature), which is correlated with the probability of distant recurrence at ten years for post-menopausal women with hormone receptor positive, early stage breast cancer." Value: Quantity with units UCUM#1 - MostSpecificCode is LNC#76544-6 + ObservableCode is LNC#76544-6 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -320,7 +320,7 @@ Description: "Breast cancer genomic signature assay for 10-year risk of distant In the United States, MammaPrint can only be used on cancers that are stage I or stage II, invasive, smaller than 5 centimeters, and estrogen-receptor-positive or -negative. Scores range from -1.0 to +1.0, with scores less than 0 indicating high risk, and scores greater than 0 indicating low risk. The is currently no LOINC code for Mammaprint test." Value: Quantity - MostSpecificCode is MTH#C2827401 + ObservableCode is MTH#C2827401 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -331,7 +331,7 @@ Based on: Observation Concept: MTH#C0421176 "Progression" Description: "A finding related to the current trend of a particular existing disease. This concept is most often used for chronic and incurable diseases where the status and trendline of the disease is an important determinant of therapy and prognosis. The specific disorder being evaluated must be cited in the Focus_Reference or Focus_CodeableConcept as a reference to a Condition." Value: CodeableConcept from ProgressionVS - MostSpecificCode is MTH#C0421176 "Progression" + ObservableCode is MTH#C0421176 "Progression" 0..* ProgressionEvidence // "ProgressionEvidence" is somewhat related to FindingMethod, which represents the test or procedure used to generate the result; it is typically a LOINC code (0..1) 0..0 Specimen @@ -411,7 +411,7 @@ EntryElement: TumorDimensions Based on: SimpleCodedObservation Concept: MTH#C4086369 0..0 Value - MostSpecificCode is TBD#TBD + ObservableCode is TBD#TBD DiagnosticService is #pathology NonIndependentFinding includes 0..1 TumorPrimaryDimensionSize @@ -442,7 +442,7 @@ Based on: SimpleCodedObservation Concept: MTH#C4086369 Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." Value: CodeableConcept from PositiveNegativeVS - MostSpecificCode is MTH#C4086369 + ObservableCode is MTH#C4086369 DiagnosticService is #pathology NonIndependentFinding includes 0..1 TumorMarginDescription @@ -475,7 +475,7 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Concept: MTH#C4049944 Description: "Ki-67 is a protein phosphatase whose expression is strongly associated with cell proliferation and encoded by the MKI67 gene. The Ki67 labeling index is the fraction of Ki-67-positive cells to total cells in a tumor specimen and may be useful for determining prognosis with respect to survival and disease recurrence. The more positive cells there are, the more quickly they are dividing and forming new cells. ReferenceRange: Low <10, Intermediate 10-20, >20 High" Value: Quantity with units UCUM#% - MostSpecificCode is LNC#29593-1 + ObservableCode is LNC#29593-1 DiagnosticService is #pathology NonIndependentFinding includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered @@ -486,7 +486,7 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Description: "An expression of the number of mitoses found in a stated number of cells. The S-phase fraction number tells you what percentage of cells in the tissue sample are in the process of copying their genetic information (DNA). This S-phase, short for synthesis phase, happens just before a cell divides into two new cells. ReferenceRange: Low <6, Intermediate 6-10, >10 High." Value: Quantity with units UCUM#% DiagnosticService is #pathology - MostSpecificCode is LNC#29593-1 + ObservableCode is LNC#29593-1 EntryElement: GeneticVariant Based on: Observation @@ -512,7 +512,7 @@ EntryElement: BreastCancerGeneticAnalysisObservation Concept: TBD Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." - Observation.MostSpecificCode is TBD#TBD + Observation.ObservableCode is TBD#TBD DiagnosticService is #genetics 0..0 NonIndependentFinding PanelMembers.EvaluationresultRecorded diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 14af7865..231c0f6a 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -65,14 +65,14 @@ See https://s.details.loinc.org/LOINC/39135-9.html?sections=Comprehensive //------------- Wound Absence or Presence --------------- EntryElement: WoundPresenceAssertion -Based on: ConditionPresenceAssertion +Based on: ConditionPresentAssertion Concept: SCT#416462003 "Wound (disorder)" // LNC#72300-7 Wound Type? Description: "A determination that a particular type of wound that exists at a particular body site. The WoundIdentifier serves as a link between this assertion and assessments of the wound that might occur at later times. Multiple wound assessments can be associated with a single wound." Onset value is type dateTime // nowhere to put code LOINC 85585-8 Date of Onset {mm/dd/yyyy} Abatement value is type dateTime // nowhere to put code 88878-4 Date of abatement {mm/dd/yyyy} 1..1 Category is OBSCAT#exam -1..1 MostSpecificCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered +1..1 ConditionCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered 0..1 ObjectIdentifier is type WoundIdentifier 0..1 ConditionCause is type WoundTypeEtiology 1..1 AnatomicalLocation is type WoundAnatomicalLocation @@ -102,10 +102,10 @@ The WoundIdentifier serves as a link between this assertion and assessments of t EntryElement: WoundAbsenceAssertion -Based on: ConditionAbsenceAssertion +Based on: ConditionAbsentAssertion Description: "Documents the absence of a wound at a given body site. No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicalLocation." -1..1 MostSpecificCode is SCT#416462003 "Wound (disorder)" +1..1 ConditionCode is SCT#416462003 "Wound (disorder)" 1..1 Category is OBSCAT#exam 1..1 AnatomicalLocation is type WoundAnatomicalLocation @@ -121,7 +121,7 @@ Description: "Group of observations regarding the properties and severity of a w 0..0 ExceptionValue 0..0 AnatomicalLocation // carried by wound assertion 0..0 Device - MostSpecificCode is LNC#39135-9 + ObservableCode is LNC#39135-9 0..0 ReferenceRange Media is type PhotographicImage // 72170-4 Photographic image [Media] NonIndependentFinding @@ -206,7 +206,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89254-7 Description: "The appearance of the base (bed) of the wound, together with the percentage of the bed with each type of appearance." 1..1 WoundIdentifier - MostSpecificCode is LNC#89254-7 + ObservableCode is LNC#89254-7 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device NonIndependentFinding @@ -231,7 +231,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: TBD Description: "Color of part or all of the wound base (bed), and the percentage of the area with that color." 1..1 WoundIdentifier - MostSpecificCode is TBD#TBD + ObservableCode is TBD#TBD 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device NonIndependentFinding @@ -258,7 +258,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89256-2 Description: "The state of the tissue at the edge of the wound." 1..1 WoundIdentifier - MostSpecificCode is LNC#89256-2 + ObservableCode is LNC#89256-2 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device NonIndependentFinding @@ -284,7 +284,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89257-0 Description: "A discharging blind-ended track that extends from the surface of an organ to an underlying area or abscess cavity. The track is invariably lined with granulation tissue. In chronic cases this may be augmented with epithelial tissue." 1..1 WoundIdentifier - MostSpecificCode is LNC#89257-0 + ObservableCode is LNC#89257-0 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device NonIndependentFinding @@ -313,7 +313,7 @@ EntryElement: WoundUnderminingObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89258-8 Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage around the wound margin. Undermining are narrow sinus tracts away from the wound margins and go downward into the wound." - MostSpecificCode is LNC#89258-8 + ObservableCode is LNC#89258-8 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device @@ -339,7 +339,7 @@ EntryElement: WoundExudateObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72292-6 Description: "Description of the fluid produced by a wound." - MostSpecificCode is LNC#72292-6 + ObservableCode is LNC#72292-6 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device @@ -388,7 +388,7 @@ EntryElement: WoundSizeObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72287-6 Description: "The estimated or measured dimensions of a wound." - MostSpecificCode is LNC#72287-6 + ObservableCode is LNC#72287-6 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device From a0e1642d50c177ef5042214b237d43736a29fda3 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 25 Oct 2018 16:28:25 -0400 Subject: [PATCH 069/289] Naming code to FindingTopicCode --- spec/LandingPageBreastCancer.html | 2 +- spec/shr_base_finding.txt | 47 ++++++++----------------------- spec/shr_base_map.txt | 10 +++---- spec/shr_occupation.txt | 32 ++++++++++----------- spec/shr_occupation_map.txt | 4 +-- spec/shr_oncology.txt | 40 +++++++++++++------------- spec/shr_wound.txt | 20 ++++++------- 7 files changed, 66 insertions(+), 89 deletions(-) diff --git a/spec/LandingPageBreastCancer.html b/spec/LandingPageBreastCancer.html index 1981544f..ad002944 100644 --- a/spec/LandingPageBreastCancer.html +++ b/spec/LandingPageBreastCancer.html @@ -97,7 +97,7 @@

The CIMI Topic-Context Pattern

CIMI develops several class hierarchies. The first is the Finding hierarchy, exemplified by the BreastCancerHistologicGrade hierarchy, above. A clinical statement represents a fact, opinion, or observation that relates to a patient, for example, "the patient has a diagnosis of congestive heart failure" or "patient has an order for physical therapy" [CIMI Modeling and Quality Guide]. 

However, Finding is not the only class needed to construct a clinical statement. The clinical statement itself has no clinical content; to gain content, the Finding class must reference a topic and a context. The topic is the clinical entity being described by the Clinical Finding, for example, a laboratory test. The context describes the circumstance applied to the topic. For example, we can speak of "blood pressure of 120/80" as an observation or a goal; similarly, we can speak of a procedure as recommended, ordered, planned, performed, or not performed. Both the topic and context are defined in class hierarchies of their own. For example, for the BreastCancerHistologicGrade, the topic hierarchy is as follows:

    -
  • Locatable* > NonIndependent > StatementTopic > FindingTopic > ObservationTopic > LaboratoryObservationTopic
  • +
  • Locatable* > NonIndependent > StatementTopic > FindingTopicCode > ObservationTopic > LaboratoryObservationTopic
The context hierarchy for the same observation is as follows:
    diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index b9428023..f84b4b65 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -9,12 +9,12 @@ Based on: InformationItem Description: "A finding that is part of another finding, does not or cannot stand alone." Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) // exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 -1..1 FindingCode +1..1 FindingTopicCode 0..1 ExceptionValue 0..1 ReferenceRange // included here because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. - Element: FindingCode - Description: "A code describing the finding. In an observation, the code represents the 'question': the aspect or property of the Patient or SpecificFocusOfFinding being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist." + Element: FindingTopicCode + Description: "A code describing what the finding concerns, such as a lab test or existence of a certain item. In an observation, the code represents the 'question': the aspect or property of the Patient or SpecificFocusOfFinding being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist." Value: CodeableConcept Element: ExceptionValue @@ -76,7 +76,8 @@ EntryElement: Observation Based on: Finding Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. -Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments." +Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments. +For an Observation, the FindingTopicCode describes the aspect or property of the subject being observed or measured. The FindingTopicCode is the 'question code' that pairs to the 'answer' contained in the ResultValue." //0..0 Observer 0..1 DeltaFlag 1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered @@ -87,16 +88,10 @@ Observation has a value representing the result (answer), or an ExceptionValue i 0..1 Specimen 0..* Precondition 0..* Media - FindingCode is type ObservableCode FindingStatus value is type code FindingStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 PanelMembers - Element: ObservableCode - Based on: FindingCode - Description: "A code describing the aspect or property of the subject being observed or measured. The ObservableCode is the 'question code' that pairs to the 'answer' contained in the ResultValue." - Value: CodeableConcept - Element: Observer Concept: MTH#C0449416 Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." @@ -211,19 +206,14 @@ Description: "A coded finding from a laboratory test without further panel membe Abstract Element: ExistenceAssertion Based on: Finding -Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place." +Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place. +For assertions, the FindingTopicCode represents the thing asserted to be present or absent; i.e., the type of condition, event, relationship or phenomenon that is being asserted to exist or not exist." Value: CodeableConcept from PresentAbsentVS - FindingCode is type ThingAssertedCode 0..0 ReferenceRange 0..1 ObjectIdentifier // TODO: 0..* business identifier? 0..1 Certainty FindingStatus value is type CodeableConcept - Element: ThingAssertedCode - Based on: FindingCode - Description: "A code representing the thing asserted to be present or absent; i.e., the type of condition, event, relationship or phenomenon that is being asserted to exist or not exist." - Value: CodeableConcept - Element: ObjectIdentifier Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." Value: string @@ -236,7 +226,7 @@ Value: CodeableConcept from PresentAbsentVS Abstract Element: PresenceAssertion Based on: ExistenceAssertion Description: "Finding that a phenomena is present." - Value is SCT#52101004 "Present (qualifier value)" + Value is SCT#52101004 "Present (qualifier value" 0..1 Certainty from PresenceCertaintyVS @@ -252,8 +242,7 @@ Based on: PresenceAssertion Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." //0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson - ThingAssertedCode is type ConditionCode - ConditionCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make binding weaker because US Core requires an extensible binding + FindingTopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make binding weaker because US Core requires an extensible binding 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation 0..* ConditionCause @@ -266,11 +255,6 @@ Description: "A condition that is or may be present in a subject. 'Condition' is 0..1 Onset 0..1 Abatement // TODO: change abatement to an Observation - Element: ConditionCode - Based on: ThingAssertedCode - Description: "The code describing the relationship, e.g., Father or Mother." - Value: CodeableConcept - Element: ConditionCause Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" Value: CodeableConcept or ref(Entity) or ref(Finding) @@ -337,8 +321,7 @@ EntryElement: ConditionAbsentAssertion Based on: AbsenceAssertion Concept: MTH#C0277541 "no disease present" Description: "A finding that a condition is or was not present in the subject at a certain time or time period, not necessarily the time the information is gathered." - ThingAssertedCode is type ConditionCode - ConditionCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered + FindingTopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation @@ -349,14 +332,8 @@ Description: "An entry concerning a patient where the result is a narrative text 1..1 Patient 1..1 AdditionalText // make required - Abstract Element: RelationshipExistenceAssertion Based on: ExistenceAssertion -Description: "An assertion of a realtionship between two things being either present or absent. The subject of the relationship is is the Patient (or SpecificFocusOfFinding, if given) and ." +Description: "An assertion of a realtionship between two things being either present or absent. The subject of the relationship is is the Patient (or SpecificFocusOfFinding, if given) and the object of the relationship is . +For relationships, FindingTopicCode describes the relationship, e.g., Father or Mother." Value: CodeableConcept from PresentAbsentVS - ThingAssertedCode is type RelationshipCode - - Element: RelationshipCode - Based on: ThingAssertedCode - Description: "The code describing the relationship, e.g., Father or Mother." - Value: CodeableConcept \ No newline at end of file diff --git a/spec/shr_base_map.txt b/spec/shr_base_map.txt index c2bdc2da..c76604e3 100644 --- a/spec/shr_base_map.txt +++ b/spec/shr_base_map.txt @@ -27,7 +27,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs // RecordStatus maps to extension // _Entry.CosignedBy maps to extension // _Entry.VerifiedBy maps to extension - ObservableCode maps to code + FindingTopicCode maps to code FindingMethod maps to method AdditionalText maps to comment // Media maps to extension @@ -43,7 +43,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) - NonIndependentFinding.FindingCode maps to component.code + NonIndependentFinding.FindingTopicCode maps to component.code NonIndependentFinding.Value maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation @@ -68,7 +68,7 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us // RecordStatus maps to extension // _Entry.CosignedBy maps to extension // _Entry.VerifiedBy maps to extension - ObservableCode maps to code + FindingTopicCode maps to code FindingMethod maps to method AdditionalText maps to comment // Media maps to extension @@ -84,7 +84,7 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) - NonIndependentFinding.FindingCode maps to component.code + NonIndependentFinding.FindingTopicCode maps to component.code NonIndependentFinding.Value maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation @@ -106,7 +106,7 @@ ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinitio // Patient maps to subject // SourceOfInformation.Value maps to asserter // why doesn't this work? Category maps to category - ConditionCode maps to code + FindingTopicCode maps to code constrain bodySite to 0..0 AnatomicalLocation maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Encounter maps to context diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 2cc90d3c..8e6134e9 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -33,7 +33,7 @@ Description: "The self-reported current and historical data about a person's eco A person's Employment Status could change over time, for example, a person could be employed following a period of choosing to not be in the labor force. Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 - ObservableCode is LNC#74165-2 "HistoryOfEmploymentStatus" + FindingTopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" 0..0 NonIndependentFinding 0..0 FocalSubjectModifier @@ -44,7 +44,7 @@ Description: "A self-reported date that a person considers themselves to have A person can be both retired and employed (an Employment Status); most often, a person would be retired from one job and employed in another job. A person also can have more than one retirement date; for example, a person could retire from military service, then later retire from a civilian job. Multiple retirement dates should be recorded using multiple FHIR resources. Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." Value: dateTime - ObservableCode is LNC#87510-4 "Date of Retirement" + FindingTopicCode is LNC#87510-4 "Date of Retirement" 0..0 NonIndependentFinding 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. 0..0 FocalSubjectModifier @@ -55,7 +55,7 @@ Concept: LNC#87511-2 Description: "Self-reported date range(s) when a person worked in what is considered a combat zone; sometimes called a hazardous duty work. Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones. Multiple periods in combat zone should be recorded using multiple FHIR resources." Value: TimePeriod - ObservableCode is LNC#87511-2 + FindingTopicCode is LNC#87511-2 0..0 NonIndependentFinding 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. 0..0 FocalSubjectModifier // only patient @@ -68,7 +68,7 @@ Knowledge of person's Usual Work can potentially assist in diagnosis, treatment Example: a person has worked for a total of 30 years as a 'secretary' (Occupation), but in various industries, mostly hotel construction. Her Usual Occupation is 'secretary' and her Usual Industry is 'hotel construction.' Usual Work does not include work that was unpaid or voluntary." Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 - ObservableCode is LNC#21843-8 + FindingTopicCode is LNC#21843-8 NonIndependentFinding includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration @@ -83,14 +83,14 @@ includes 0..1 UsualOccupationDuration //Value: CodeableConcept from IndustryVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - FindingCode is LNC#21844-6 "History of Usual industry" + FindingTopicCode is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration Based on: NonIndependentFinding Concept: LNC#74163-7 "Usual occupation duration" Description: "The total time spent on an activity, inclusive of all time intervals, whether continuous or interrupted." Value: Quantity with units UCUM#a - FindingCode is LNC#74163-7 "Usual occupation duration" + FindingTopicCode is LNC#74163-7 "Usual occupation duration" EntryElement: PastOrPresentJob Based on: CodedSocialHistoryObservation @@ -100,7 +100,7 @@ A person can have more than one job at the same time and multiple jobs over time A person's job can be a social determinant of their health and information about a person's job can support patient care, population health, and public health. In patient care, knowledge of a person's past or present job(s) can impact recognition, diagnosis, management, and treatment of injuries and illnesses. These data also can be used for clinical decision support and to prompt discussion of preventive care measures. For example, a record of jobs that require prolonged time in the sun might prompt a health care provider to inquire if the person wears protective clothing or sunscreen while working. At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." 0..0 Value - ObservableCode is LNC#11341-5 "History of Occupation" + FindingTopicCode is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization NonIndependentFinding includes 0..1 Occupation @@ -140,7 +140,7 @@ includes 0..1 IsCurrentJob Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." // Value: CodeableConcept from IndustryVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - ObservableCode is LNC#86188-0 + FindingTopicCode is LNC#86188-0 Element: WorkClassification Based on: CodedSocialHistoryObservation @@ -148,7 +148,7 @@ includes 0..1 IsCurrentJob Description: "Type of compensation and sector for a person's job, such as 'paid work, self-employed' or 'voluntary work', as reported by the person." //Value: CodeableConcept from WorkClassificationVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 - ObservableCode is LNC#85104-8 "Compensation and sector employment type" + FindingTopicCode is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel Based on: NonIndependentFinding @@ -156,21 +156,21 @@ includes 0..1 IsCurrentJob Description: "A coded indicator of responsibilities for directing work and personnel management responsibilities for a person's job, as reported by the person. For US military jobs, this is pay grade." //Value: CodeableConcept from SupervisoryLevelVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 - FindingCode is LNC#87707-6 + FindingTopicCode is LNC#87707-6 Element: JobDuty Based on: NonIndependentFinding Concept: LNC#63761-1 Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " Value: string - FindingCode is LNC#63761-1 + FindingTopicCode is LNC#63761-1 Element: OccupationalHazard Based on: NonIndependentFinding Concept: LNC#87729-0 Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." Value: string - FindingCode is LNC#87729-0 + FindingTopicCode is LNC#87729-0 Element: WorkSchedule Based on: NonIndependentFinding @@ -178,14 +178,14 @@ includes 0..1 IsCurrentJob Description: "Typical arrangement of working hours for a person's job, as reported by the person." //Value: CodeableConcept from WorkScheduleVS Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 - FindingCode is LNC#74159-5 + FindingTopicCode is LNC#74159-5 Element: WeeklyWorkDays Based on: NonIndependentFinding Concept: LNC#74160-3 Description: "The average number of days per week that a person spends performing their duties for work." Value: Quantity with units UCUM#d - FindingCode is LNC#74160-3 + FindingTopicCode is LNC#74160-3 0..0 ReferenceRange Element: DailyWorkHours @@ -193,7 +193,7 @@ includes 0..1 IsCurrentJob Concept: LNC#87512-0 Description: "The average number of hours in a day that a person spends performing their duties for work." Value: Quantity with units UCUM#h - FindingCode is LNC#87512-0 + FindingTopicCode is LNC#87512-0 0..0 ReferenceRange // Last minute addition 8/17 based on Genny's comment @@ -244,7 +244,7 @@ EntryElement: MilitaryServiceHistory Based on: CodedSocialHistoryObservation Description: "History of service in the US military." Category is OBSCAT#social-history - ObservableCode is MTH#C3714797 + FindingTopicCode is MTH#C3714797 NonIndependentFinding includes 1..1 MilitaryStatus includes 0..1 MilitaryServiceDischargeStatus diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index 060d03c9..730cb6c2 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -5,10 +5,10 @@ Target: FHIR_STU_3 // do not map to US Core Results -- Brett says that's only for labs SocialHistoryObservation maps to Observation: Patient maps to subject - ObservableCode maps to code + FindingTopicCode maps to code Category maps to category NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) - NonIndependentFinding.FindingCode maps to component.code + NonIndependentFinding.FindingTopicCode maps to component.code NonIndependentFinding.Value maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index f9b797bc..92006b1e 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -41,7 +41,7 @@ EntryElement: BreastCancerPresenceStatement Based on: ConditionPresentAssertion Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." - ConditionCode from BreastCancerTypeVS + FindingTopicCode from BreastCancerTypeVS Stage.StageDetail value is type BreastCancerStage 0..1 FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding AnatomicalLocation is type BreastSite @@ -59,7 +59,7 @@ Based on: Observation Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. Description: "The stage of a breast cancer. Different staging systems use different staging groups, so there are currently no terminology bindings associated with this class." Value: CodeableConcept should be from http://loinc.org/LL240-3 - ObservableCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" + FindingTopicCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" 0..1 StageTimingPrefix NonIndependentFinding includes 0..1 BreastCancerPrimaryTumorClassification @@ -113,7 +113,7 @@ Based on: SimpleCodedLaboratoryObservation Description: "An evaluation of the size and shape of the nucleus in tumor cells and the percentage of tumor cells that are in the process of dividing or growing. Cancers with low nuclear grade grow and spread less quickly than cancers with high nuclear grade." Value: CodeableConcept from NuclearGradeVS Specimen is type BreastSpecimen - ObservableCode is MTH#C18513 + FindingTopicCode is MTH#C18513 DiagnosticService is #pathology @@ -123,7 +123,7 @@ Based on: CodedLaboratoryObservation Description: "The Elston Grade/Nottingham Score, representative of the aggressive potential of the tumor. Well differentiated cells (Grade 1) look similar to normal cells and are usually slow growing, while poorly differentiated cells (Grade 3) look very different than normal and are fast-growing." Value: CodeableConcept from NottinghamCombinedGradeVS ExceptionValue from NottinghamNullVS - ObservableCode is LNC#44648-4 + FindingTopicCode is LNC#44648-4 Specimen is type BreastSpecimen DiagnosticService is #pathology NonIndependentFinding @@ -160,7 +160,7 @@ Concept: LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" Description: "Estrogen receptor alpha is the predominant estrogen receptor expressed in breast tissue and is overexpressed in around 50% of breast carcinomas. ER status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options. The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." Value: CodeableConcept from PositiveNegativeVS - ObservableCode is LNC#16112-5 + FindingTopicCode is LNC#16112-5 DiagnosticService is #pathology Specimen is type BreastSpecimen NonIndependentFinding @@ -182,7 +182,7 @@ Concept: LNC#16113-3 Description: "Progesterone receptor status is a factor in determining prognosis and treatment options. The value is the percentage of cells that test (stain) positive for the presence of a receptor. The interpretation of positive or negative (found in the interpretation property) is based on the staining percentage, and may take into account the staining intensity. Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." Value: CodeableConcept from PositiveNegativeVS - ObservableCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" + FindingTopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" DiagnosticService is #pathology Specimen is type BreastSpecimen NonIndependentFinding @@ -208,7 +208,7 @@ Based on: CodedLaboratoryObservation Concept: LNC#48676-1 "HER2 [Interpretation] in Tissue" Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." Value: CodeableConcept from PositiveNegativeEquivocalVS - ObservableCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" + FindingTopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" DiagnosticService is #pathology Specimen is type BreastSpecimen 0..0 Precondition @@ -226,8 +226,8 @@ Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (I Value: CodeableConcept from HER2byIHCScoreVS ExceptionValue from HER2byIHCScoreNullVS Interpretation from PositiveNegativeEquivocalVS - ObservableCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" -0..0 FindingMethod // pre-coordinated in the ObservableCode + FindingTopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" +0..0 FindingMethod // pre-coordinated in the FindingTopicCode DiagnosticService is #pathology 0..0 Precondition Specimen is type BreastSpecimen @@ -249,7 +249,7 @@ Concept: LNC#85318-4 // Corrected 5/12/2018 by MK Description: "HER2 receptor status as determined by single-probe or dual-probe Fluorescence In Situ Hybridization (FISH)." 0..0 Value 0..0 ExceptionValue - ObservableCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" + FindingTopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" FindingMethod from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS DiagnosticService is #pathology @@ -285,7 +285,7 @@ Concept: MTH#C1709318 Description: "The Oncotype DX test for invasive breast cancer examines the activity of 21 genes in a patient’s breast tumor tissue to provide personalized information for tailoring treatment based on the biology of their individual disease. The value from 0 to 100 indicates the estimated risk of recurrence, with the highest risk indicated by a score greater than 31. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" Value: Quantity with units UCUM#1 - ObservableCode is MTH#C1709318 + FindingTopicCode is MTH#C1709318 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type ref(BreastSpecimen) @@ -297,7 +297,7 @@ Concept: MTH#C3898101 Description: "The Oncotype DX test for DCIS (Ductal Carcinoma in Situ) breast cancer. Risk scores range from 0 to 100 with the following interpretations: 0-38: Low-Risk, 39-54: Intermediate-Risk, 55+: High-Risk. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" Value: Quantity with units UCUM#1 - ObservableCode is MTH#C3898101 + FindingTopicCode is MTH#C3898101 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -308,7 +308,7 @@ Concept: LNC#76544-6 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Prosigna. The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Risk of Recurrence Score in the literature), which is correlated with the probability of distant recurrence at ten years for post-menopausal women with hormone receptor positive, early stage breast cancer." Value: Quantity with units UCUM#1 - ObservableCode is LNC#76544-6 + FindingTopicCode is LNC#76544-6 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -320,7 +320,7 @@ Description: "Breast cancer genomic signature assay for 10-year risk of distant In the United States, MammaPrint can only be used on cancers that are stage I or stage II, invasive, smaller than 5 centimeters, and estrogen-receptor-positive or -negative. Scores range from -1.0 to +1.0, with scores less than 0 indicating high risk, and scores greater than 0 indicating low risk. The is currently no LOINC code for Mammaprint test." Value: Quantity - ObservableCode is MTH#C2827401 + FindingTopicCode is MTH#C2827401 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -331,7 +331,7 @@ Based on: Observation Concept: MTH#C0421176 "Progression" Description: "A finding related to the current trend of a particular existing disease. This concept is most often used for chronic and incurable diseases where the status and trendline of the disease is an important determinant of therapy and prognosis. The specific disorder being evaluated must be cited in the Focus_Reference or Focus_CodeableConcept as a reference to a Condition." Value: CodeableConcept from ProgressionVS - ObservableCode is MTH#C0421176 "Progression" + FindingTopicCode is MTH#C0421176 "Progression" 0..* ProgressionEvidence // "ProgressionEvidence" is somewhat related to FindingMethod, which represents the test or procedure used to generate the result; it is typically a LOINC code (0..1) 0..0 Specimen @@ -411,7 +411,7 @@ EntryElement: TumorDimensions Based on: SimpleCodedObservation Concept: MTH#C4086369 0..0 Value - ObservableCode is TBD#TBD + FindingTopicCode is TBD#TBD DiagnosticService is #pathology NonIndependentFinding includes 0..1 TumorPrimaryDimensionSize @@ -442,7 +442,7 @@ Based on: SimpleCodedObservation Concept: MTH#C4086369 Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." Value: CodeableConcept from PositiveNegativeVS - ObservableCode is MTH#C4086369 + FindingTopicCode is MTH#C4086369 DiagnosticService is #pathology NonIndependentFinding includes 0..1 TumorMarginDescription @@ -475,7 +475,7 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Concept: MTH#C4049944 Description: "Ki-67 is a protein phosphatase whose expression is strongly associated with cell proliferation and encoded by the MKI67 gene. The Ki67 labeling index is the fraction of Ki-67-positive cells to total cells in a tumor specimen and may be useful for determining prognosis with respect to survival and disease recurrence. The more positive cells there are, the more quickly they are dividing and forming new cells. ReferenceRange: Low <10, Intermediate 10-20, >20 High" Value: Quantity with units UCUM#% - ObservableCode is LNC#29593-1 + FindingTopicCode is LNC#29593-1 DiagnosticService is #pathology NonIndependentFinding includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered @@ -486,7 +486,7 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Description: "An expression of the number of mitoses found in a stated number of cells. The S-phase fraction number tells you what percentage of cells in the tissue sample are in the process of copying their genetic information (DNA). This S-phase, short for synthesis phase, happens just before a cell divides into two new cells. ReferenceRange: Low <6, Intermediate 6-10, >10 High." Value: Quantity with units UCUM#% DiagnosticService is #pathology - ObservableCode is LNC#29593-1 + FindingTopicCode is LNC#29593-1 EntryElement: GeneticVariant Based on: Observation @@ -512,7 +512,7 @@ EntryElement: BreastCancerGeneticAnalysisObservation Concept: TBD Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." - Observation.ObservableCode is TBD#TBD + Observation.FindingTopicCode is TBD#TBD DiagnosticService is #genetics 0..0 NonIndependentFinding PanelMembers.EvaluationresultRecorded diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 231c0f6a..ab345817 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -72,7 +72,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t Onset value is type dateTime // nowhere to put code LOINC 85585-8 Date of Onset {mm/dd/yyyy} Abatement value is type dateTime // nowhere to put code 88878-4 Date of abatement {mm/dd/yyyy} 1..1 Category is OBSCAT#exam -1..1 ConditionCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered +1..1 FindingTopicCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered 0..1 ObjectIdentifier is type WoundIdentifier 0..1 ConditionCause is type WoundTypeEtiology 1..1 AnatomicalLocation is type WoundAnatomicalLocation @@ -105,7 +105,7 @@ EntryElement: WoundAbsenceAssertion Based on: ConditionAbsentAssertion Description: "Documents the absence of a wound at a given body site. No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicalLocation." -1..1 ConditionCode is SCT#416462003 "Wound (disorder)" +1..1 FindingTopicCode is SCT#416462003 "Wound (disorder)" 1..1 Category is OBSCAT#exam 1..1 AnatomicalLocation is type WoundAnatomicalLocation @@ -121,7 +121,7 @@ Description: "Group of observations regarding the properties and severity of a w 0..0 ExceptionValue 0..0 AnatomicalLocation // carried by wound assertion 0..0 Device - ObservableCode is LNC#39135-9 + FindingTopicCode is LNC#39135-9 0..0 ReferenceRange Media is type PhotographicImage // 72170-4 Photographic image [Media] NonIndependentFinding @@ -206,7 +206,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89254-7 Description: "The appearance of the base (bed) of the wound, together with the percentage of the bed with each type of appearance." 1..1 WoundIdentifier - ObservableCode is LNC#89254-7 + FindingTopicCode is LNC#89254-7 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device NonIndependentFinding @@ -231,7 +231,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: TBD Description: "Color of part or all of the wound base (bed), and the percentage of the area with that color." 1..1 WoundIdentifier - ObservableCode is TBD#TBD + FindingTopicCode is TBD#TBD 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device NonIndependentFinding @@ -258,7 +258,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89256-2 Description: "The state of the tissue at the edge of the wound." 1..1 WoundIdentifier - ObservableCode is LNC#89256-2 + FindingTopicCode is LNC#89256-2 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device NonIndependentFinding @@ -284,7 +284,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89257-0 Description: "A discharging blind-ended track that extends from the surface of an organ to an underlying area or abscess cavity. The track is invariably lined with granulation tissue. In chronic cases this may be augmented with epithelial tissue." 1..1 WoundIdentifier - ObservableCode is LNC#89257-0 + FindingTopicCode is LNC#89257-0 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device NonIndependentFinding @@ -313,7 +313,7 @@ EntryElement: WoundUnderminingObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89258-8 Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage around the wound margin. Undermining are narrow sinus tracts away from the wound margins and go downward into the wound." - ObservableCode is LNC#89258-8 + FindingTopicCode is LNC#89258-8 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device @@ -339,7 +339,7 @@ EntryElement: WoundExudateObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72292-6 Description: "Description of the fluid produced by a wound." - ObservableCode is LNC#72292-6 + FindingTopicCode is LNC#72292-6 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device @@ -388,7 +388,7 @@ EntryElement: WoundSizeObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72287-6 Description: "The estimated or measured dimensions of a wound." - ObservableCode is LNC#72287-6 + FindingTopicCode is LNC#72287-6 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device From e7f1c0d0ac86cca2f88d8d92400c12e7c27b93ab Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 26 Oct 2018 09:52:54 -0400 Subject: [PATCH 070/289] Taking in May's changes --- spec/LandingPageCimi.html | 18 ------------------ spec/ig-breast-config.json | 4 ++-- spec/shr_base_finding.txt | 4 ++-- spec/shr_oncology.txt | 9 ++++++--- spec/shr_oncology_map.txt | 5 +++-- spec/shr_oncology_vs.txt | 2 +- 6 files changed, 14 insertions(+), 28 deletions(-) delete mode 100644 spec/LandingPageCimi.html diff --git a/spec/LandingPageCimi.html b/spec/LandingPageCimi.html deleted file mode 100644 index dc727c3b..00000000 --- a/spec/LandingPageCimi.html +++ /dev/null @@ -1,18 +0,0 @@ -

    - This is a preliminary version of the CIMI Health Level 7 (HL7) Fast Healthcare - Interoperability Resources (FHIR) profiles, extensions, value sets, and code systems.
    -

    -

    Clincial Information Modeling Initiative Implementation Guide (IG)

    -

    -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non lacus tellus. Mauris in luctus ex. Donec nec leo mauris. Suspendisse nec velit ullamcorper, condimentum neque vel, consequat massa. Ut mattis fermentum facilisis. Etiam ut tortor tortor. Nam eget egestas dolor. Pellentesque dignissim purus mauris, id auctor purus iaculis sit amet. -

    -

    -Quisque sagittis viverra lorem eget blandit. Morbi laoreet nulla ac metus accumsan, ac tristique urna molestie. Aenean ut tortor vitae nulla luctus suscipit. Proin augue risus, laoreet sed fringilla a, cursus sollicitudin ligula. Donec sed accumsan magna. Duis at molestie ex. Sed id condimentum massa. Nam quis metus et orci tincidunt aliquam at ac ipsum. Aliquam nec enim diam. Donec ante metus, fermentum eu massa ac, lobortis mattis velit. -

    -

    -Cras pellentesque efficitur consectetur. Duis sed tristique lorem. Fusce ultrices neque eu euismod rhoncus. Etiam scelerisque vehicula lacus ut faucibus. Fusce arcu lacus, tempus venenatis massa sit amet, dictum lobortis purus. In nunc nisi, consectetur semper magna sit amet, fermentum pulvinar dui. Nulla mollis dolor a diam condimentum sollicitudin. Sed egestas urna a leo ullamcorper molestie. Vestibulum accumsan, lorem ac volutpat viverra, ex felis lacinia felis, condimentum pharetra magna ex ut elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Phasellus semper accumsan eros, id congue turpis malesuada ac. Donec eget porta felis. Phasellus eu massa massa. Vestibulum sem erat, imperdiet sed feugiat et, tempus nec turpis. Ut consectetur urna nec eros pharetra, consectetur feugiat ligula facilisis. -

    -

    Known Issues and Limitations

    -

    -Sed ligula justo, vehicula eu purus et, porttitor congue nibh. Aliquam efficitur eros a nulla varius, in lacinia augue bibendum. In mi erat, rutrum id eleifend eget, scelerisque a arcu. Cras vel posuere urna. Mauris condimentum nunc orci, ut lacinia sem placerat sit amet. Suspendisse congue egestas ipsum quis efficitur. Aliquam justo est, mollis vel semper sit amet, consequat eu lorem. Phasellus vitae nunc in nisi hendrerit porttitor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut viverra lacinia consequat. Fusce eget dui sed ex rhoncus mattis. Duis dignissim ut massa consequat tristique. Cras sollicitudin maximus eros at pulvinar. -

    diff --git a/spec/ig-breast-config.json b/spec/ig-breast-config.json index 748d6d38..92329434 100644 --- a/spec/ig-breast-config.json +++ b/spec/ig-breast-config.json @@ -15,7 +15,7 @@ "primarySelectionStrategy": { "strategy": "namespace", - "primary": ["shr.oncology"], + "primary": ["oncology"], "hideSupporting": true } }, @@ -23,7 +23,7 @@ { "filter": true, "strategy": "namespace", - "target": ["shr.oncology"] + "target": ["oncology"] }, "publisher": "The HL7 Cancer Interoperability Group sponsored by Clinical Interoperability Council Work Group (CIC)", "contact": [ diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index f84b4b65..dffdb296 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -14,7 +14,7 @@ Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time o 0..1 ReferenceRange // included here because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. Element: FindingTopicCode - Description: "A code describing what the finding concerns, such as a lab test or existence of a certain item. In an observation, the code represents the 'question': the aspect or property of the Patient or SpecificFocusOfFinding being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist." + Description: "A code describing what the finding concerns, such as a lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property of the Patient or SpecificFocusOfFinding being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist. The topic code is not the result of the evaluation, which is found in the value. " Value: CodeableConcept Element: ExceptionValue @@ -288,7 +288,7 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Element: Stage Concept: MTH#C0699749 Description: "The relative advancement in the course of a disease. The value is the summary stage or stage group. StageDetail optionally contains the full staging information." - Value: CodeableConcept + Value: 0..1 CodeableConcept 0..1 StageDetail Element: StageDetail diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index 92006b1e..71615e01 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -1,5 +1,5 @@ Grammar: DataElement 5.0 -Namespace: shr.oncology +Namespace: oncology Description: "SHR implementation of ASCO requirements." Uses: shr.core, shr.base, shr.entity @@ -11,6 +11,7 @@ CodeSystem: HGNC = http://www.genenames.org CodeSystem: CAP = https://sdt.cap.org CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category +/************* LEGACY BEGIN ************ EntryElement: BreastSite Based on: AnatomicalLocation Description: "A body site specific to the breast structure." @@ -167,6 +168,8 @@ Value: CodeableConcept from PositiveNegativeVS includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers +************* LEGACY END ************/ + /* additional components from CAP form includes 0..1 StainingControl includes 0..1 PrimaryAntibody //from EstrogenAntibodyVS if covered @@ -175,7 +178,7 @@ includes 0..1 AllredIntensityScore includes 0..1 AllredTotalScore includes 0..1 OtherReceptorScoringSystem */ - +/************* LEGACY BEGIN ************ EntryElement: ProgesteroneReceptorStatus Based on: CodedLaboratoryObservation Concept: LNC#16113-3 @@ -343,7 +346,7 @@ Value: CodeableConcept from ProgressionVS Description: "The type of evidence considered in determining disease progression." Value: CodeableConcept from ProgressionEvidenceVS - +********** LEGACY END ************/ /* diff --git a/spec/shr_oncology_map.txt b/spec/shr_oncology_map.txt index 045b7836..a8fd97a6 100644 --- a/spec/shr_oncology_map.txt +++ b/spec/shr_oncology_map.txt @@ -1,13 +1,14 @@ Grammar: Map 5.1 -Namespace: shr.oncology +Namespace: oncology Target: FHIR_STU_3 - +/* BreastSpecimen maps to Specimen: ColdIschemiaTime maps to processing (slice on = procedure) ColdIschemiaTime.TimePeriod maps to processing.time[x] ColdIschemiaTime._Concept maps to processing.procedure constrain processing.additive to 0..0 +*/ // fix processing.description to "ColdIschemiaTime" diff --git a/spec/shr_oncology_vs.txt b/spec/shr_oncology_vs.txt index 003c51c5..a1bfa0af 100644 --- a/spec/shr_oncology_vs.txt +++ b/spec/shr_oncology_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: shr.oncology +Namespace: oncology CodeSystem: SCT = http://snomed.info/sct From b57ac46607adfe20b222f277956a051361567459 Mon Sep 17 00:00:00 2001 From: May Terry Date: Fri, 26 Oct 2018 10:37:11 -0400 Subject: [PATCH 071/289] merged with fhimi2 commit from 10/25. --- .DS_Store | Bin 6148 -> 8196 bytes spec/.DS_Store | Bin 0 -> 6148 bytes spec/shr_intervention.txt | 15 ++ spec/shr_oncologycore.txt | 205 +++++++++++++++++ spec/shr_oncologycore_vs.txt | 424 +++++++++++++++++++++++++++++++++++ 5 files changed, 644 insertions(+) create mode 100644 spec/.DS_Store create mode 100644 spec/shr_intervention.txt create mode 100644 spec/shr_oncologycore.txt create mode 100644 spec/shr_oncologycore_vs.txt diff --git a/.DS_Store b/.DS_Store index fe08be147437b0167b4ddfc55b51d44a827f918f..c48cbbf5c7f0f45d348edb7938f47fe2652960f7 100644 GIT binary patch literal 8196 zcmeHMUu+ab7@yy@lwG^fE!1+QKo83wAq9HSw2**Y+XF0r0&*=af8@G%yV4DNyXWoR z6(}V&nkXudDp5>$&={@0A!y>0Ml|Y+S|#F}!B;iW2aPX&v$H))OJ962M0S#yZ}$7< zn?Jw#%}i#NF@~<99%n4d7?UV+sa8{Rm%!~j&Ipk}Ba;OAv&^uY&sa`|zQ3ALI#h%R zgb0KPgb0KPgb3UV2+*0$gEY&zFRWo2A`l{QUn0QwhZsdJ6M-BP(%(8L@vi_RD@pAK z%Bws>G8V{0AjgCx3k3*QlEM|i6$8SZ^s%5^B9LQ33U`L!@`0db1UD4;tyBFmzc@oe z$S@5N2oacx0KdCeGMD9VUT%9 ztBoTg>*B2)n_FV>_D!QLv5|PZt)nH@z9l|7Docx2#<%qh=1!j(IXimpk{A|(t%21{ z8|Ld%$EdqmD?`2Hh06oCPQ+7LCztmfE3c2=VRK8};!z{=#v~{=Cqa=Ps8;4hcRjkR zUfG>i7nEqc`}3aZ*zO^t;F3(MH7;S)lXdI^1%uoBvyN5F*=|~`&1zP*Xlb6&X;~@r zj6u2@H(PKl>wx2$yqd!Uo^i_Kwi%{@Bd$~My8X)1s#zb%hYZoYWN_~IHbj^%q^bMQ3H*{EYvxcpk_K71j4Yp@KVHyRw z7Ap~gE7}lkl+r^-fgLqO6xySMEJYoS0ak*4DJf6{XM8GKQt7@oq@cm^-xCA^GRa2apo z9lVS8@DV=6b$o`e@eO{&E&MF{7MUdbo}jORz%P`!&1<(5Jjg}P-<`WnJ9q7@S9s*s-;Lc<%>a@;H8&8)YPPMiiywaRZR*l0NJ;#T}8G?U|GL`EEU9cd7`mlaa3tj z+GQfNI>#@%d5fZ`mBf4Dx$P09Nv$G=i(0#ul9kEwzo+OI>|6E|(erOGB4sre5-pcw zHP)d6+tG<6c3>y=<1wVri#{UdAT(rfl89-;!6}@}9DP<> zerU>uU3Hl^QT8jP3by6gCrCHBNVq)=(-Ei;iYUMT@0k7lf4W=v9U>4S@IOKTmC01H ziv~2?cFFJBF^Yo}dEn*7g!Ek~x#J;#zRN!hDIcSv+$RypF(FAq;Xi)}pi@3P|HJd& JC*OUX`~%l&L(~8O delta 132 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{MGpJ516lP?c{6RoO0mKCYCJ4pA2&92nfFY$g zIVUMUKWAg%H1>%Nf{WQXI0Ts?iUhcUv?~y+ZY=!HJeglc5ongFj5ZI@5RerhTNyUT I^UPre0Og_+ng9R* diff --git a/spec/.DS_Store b/spec/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T075% (score = 1)" +//SCT#369779007 "Breast tubule formation: Moderate 10% to 75% (score = 2)" +//SCT#369780005 "Breast tubule formation: Minimal <10% (score = 3)" +LNC#LA27216-3 "Score 1: >75% of tumor area forming glandular/tubular structures" +LNC#LA27217-1 "Score 2: 10% to 75% of tumor area forming glandular/tubular structures" +LNC#LA27218-9 "Score 3: <10% of tumor area forming glandular/tubular structures " + +ValueSet: NuclearPleomorphismScoreVS +// MK 7/14/2018 -- Since we identify the test by LOINC, and that test has a normative value set, the results should always be reported using the normative value set. +Description: "Value set containing the scores for nuclear pleomorphism. Aligns with LOINC normative answer list LL4382-9" +//SCT#384735004 "Small regular nuclei (score=1)" +//SCT#384737007 "Moderate increase in size, etc (score = 2)" +//SCT#384738002 "Marked variation in size, nucleoli, chromatin clumping, etc (score = 3)" +LNC#LA27222-1 "Score 1: Nuclei small with little increase in size in comparison with normal outlines, uniform clear chromatin, little variation in size." +LNC#LA27223-9 "Score 2: Cells larger than normal with open vesicular nuclei, visible nucleo size and shape." +LNC#LA27224-7 "Score 3: Vesicular nuclei, often with prominent nucleoli, exhibited marked occasionally with very large and bizzare forms." + + +ValueSet: NottinghamComponentNullVS +// MK 7/14/2018 -- Since we identify the test by LOINC, and that test has a normative value set, the null values should align to the normative value set. +Description: "Data absent reasons (null values) for nuclear pleomorphism count and tubule formation score. Aligns with LOINC normative answer lists LL4382-9 and LL4380-3." +LNC#LA27219-7 "Only microinvasion present (not graded)" +LNC#LA27220-5 "No residual invasive carcinoma after presurgical (neoadjuvant) therapy" +LNC#LA27221-3 "Score cannot be determined" + +ValueSet: MitoticCountScoreVS +// MK 7/14/2018 -- Since we identify the test by LOINC, and that test has a normative value set, the results should always be reported using the normative value set. +Description: "The degree of mitotic activity in breast carcinoma is one component of the Nottingham histologic grade (NHG). The specific scores assigned to the number of mitoses depends on the size of the high power fields (HPF). For example, for a HPF size of 0.274 mm^2, less than 10 mitoses per 10 HPF gets a score of 1, 10-19 gets a score of 2, and greater than or equal to 20 gets a score of 3. When larger or smaller HPFs are used, the cutoffs for the number of mitoses corresponding to a specific score are adjusted according to published guidelines." +LNC#LA27225-4 "Score 1" +LNC#LA27226-2 "Score 2" +LNC#LA27227-0 "Score 3" + +ValueSet: MitoticCountScoreNullVS +Description: "Data absent reasons (null values) for mitotic count. Aligns with LOINC normative answer list LL4383-7." +LNC#LA27220-5 "No residual invasive carcinoma after presurgical (neoadjuvant) therapy" +LNC#LA27221-3 "Score cannot be determined" + + +ValueSet: HER2FISHMethodVS +// TODO: request LOINC codes (probably pre-coordinated with FISH) +// MK 7/14/2018 --- found Snomed codes for single and double proble +Description: "Value set containing In Situ Hybridization methods of determining HER2 status" +SCT#257430009 "Double probe" +SCT#257453005 "Single probe" + +ValueSet: HER2byIHCScoreVS +Description: "Value set containing possible scores resulting from determining HER2 status by immunohistochemistry. Based on LNC#LL4396-9 answer list." +LNC#LA6111-4 "0" +LNC#LA11841-6 "1+" +LNC#LA11842-4 "2+" +LNC#LA11843-2 "3+" + +ValueSet: HER2byIHCScoreNullVS +Description: "Null values permissible for HER2 status by immunohistochemistry. Based on LNC#LL4396-9 answer list." +LNC#LA11884-6 "Indeterminate" + +ValueSet: RecurrenceRiskScoreInterpretationVS +Description: "Interpretations of risk as high, intermediate, or low. Answer set taken from LOINC LL3198-0." +#LA19541-4 "High risk of recurrence." +#LA22380-2 "Intermediate risk of recurrence." +#LA19542-2 "Low risk of recurrence." + +// MK 7/15/2018 -- Weak, strong are qualifier values. Weak staining would be a finding. Is it wrong to use a generic qualifier as a finding? The fact it applies to staining is a type of precoordination (the question is contained in the answer), turning a question-answer into a unary assertion. I view it as equivalent to a numerical answer -- a number cannot contain the question. +ValueSet: StainingIntensityVS +Description: "Part of the Allred scoring, based on the intensity of that staining, on a scale of 0 (Negative) to 3 (Strong)." +SCT#260413007 "None (qualifier value)" +SCT#450501000124104 "Light intensity (qualifier value)" +SCT#4901000175103 "Moderate intensity (qualifier value)" +SCT#450511000124101 "High intensity (qualifier value)" + + +ValueSet: ProgressionVS +MTH#C0677874 "Complete response or remission; no measurable or observable evidence of cancer." +MTH#C0015250 "Complete resection/excision of cancerous tumor" +MTH#C1272745 "Improving, responding to treatment" +MTH#C0205360 "Stable, neither improving nor worsening" +MTH#C1546960 "Worsening, disease progressing" +MTH#C3858734 "Insufficient evidence" + +ValueSet: ProgressionEvidenceVS +MTH#C0011923 "Progression determined based on imaging" +MTH#C0030664 "Progression determined based on pathology" +MTH#C1457887 "Progression determined based on physical signs or symptoms" +MTH#C0031809 "Progression determined based on physical examination" +MTH#C0005516 "Progression determined based on biomarkers" + + + +/* NOT USED + +CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: ICDO3 = https://seer.cancer.gov/icd-o-3/ +CodeSystem: HGNC = http://www.genenames.org +CodeSystem: REFSEQ = https://www.ncbi.nlm.nih.gov/refseq + +#C50.0 "Nipple" +#C50.1 "Central portion of the breast." +#C50.2 "Upper inner quadrant" +#C50.3 "Lower inner quadrant " +#C50.4 "Upper outer quadrant" +#C50.5 "Lower outer quadrant" +#C50.6 "Axillary tail of breast" +#C50.8 "Overlapping lesion of breast" // C50.8 is for tumors that overlap between two quadrants (independent of which quadrants), and there is not code for upper, lower, left, or right HALVES of breast structure. +#C50.9 "Breast, not otherwise specified (NOS)" + + +ValueSet: HER2StatusVS +Description: "HER2 status overall result" +#not_amplified "Negative/Not Amplified (IHC Score 0)" +#negative "Negative (IHC Score 1+) " +#equivocal "Equivocal (IHC Score 2+)" +#positive "Positive/Amplified (IHC Score 3+)" + + +ValueSet: GeneIdentifierVS +Description: "A unique code for a gene, including protein coding genes, ncRNA genes and pseudogenes, to allow unambiguous communication, drawn from HUGO Gene Nomenclature Committee." +Includes codes from HGNC + +ValueSet: RefseqVS +Includes codes from REFSEQ + +ValueSet: EstrogenAntibodyVS +Description: "Antibodies relevant to Estrogen receptor." +#SP1 "SP1 - CAP#31093" +#6F11 "6F11 - CAP#31094" +#1D5 "1D5 - CAP#31095" + +ValueSet: ProgesteroneAntibodyVS +Description: "Antibodies relevant to Estrogen receptor." +#1E2 "1E2 - CAP#31103" +#636 "636 - CAP#31104" +#16 "16 - CAP#31105" +#SP2 "SP2 - CAP#31097" +#1A6 "1A6 - CAP#31098" +#1294 "1294 - CAP#32115" +#312 "312 - CAP#32116" + + +ValueSet: HER2AntibodyIHCVS +Description: "Antibodies relevant to HER2 receptor (IHC Test)." +#4B5 "4B5 - CAP#31117" +#Hercep "HercepTest - CAP#31118" +#A0485 "A0485 - CAP#31119" +#SP3 "SP3 - CAP#31120" +#CB11 "CB11 - CAP#31121" + + +ValueSet: Ki67AntibodyVS +Description: "Antibodies relevant to Ki-67 Text." +#MIB1 "MIB1 - CAP#31125" +#SP6 "SP6 - CAP#31126" +#MM1 "MM1 - CAP#32169" +#30-9 "30-9 - CAP#32160" +#IR/IS62 "IR / IS626 - CAP#32168" + +ValueSet: TumorMarginDescriptionVS +SCT#129738007 "Lesion with circumscribed margin" +SCT#129741003 "Lesion with indistinct margin" +SCT#129739004 "Lesion with microlobulated margin" +SCT#129740002 "Lesion with obscured margin" +SCT#129742005 "Lesion with spiculated margin" +// TODO: Add codes for additional tumor margin descriptions (from Penrad) +// Angular margin, Smooth margin, Intraductal extension, Irregular margin, Lobulated margin, Macrolobulated margin, Non circumscribed margin + + +ValueSet: ReceptorVS +Includes codes descending from SCT#116647005 "Receptor (substance)" + +// Eliminated in favor of generic LOINC List +ValueSet: OncotypeDxInvasiveRiskScoreInterpretationVS +Description: "Intepretation of OncotypeDX Recurrence Score for invasive cancers." +#low_risk "Recurrence Score lower than 18: The cancer has a low risk of recurrence. The benefit of chemotherapy is likely to be small and will not outweigh the risks of side effects." +#intermediate_risk "Recurrence Score of 18 up to and including 30: The cancer has an intermediate risk of recurrence. It’s unclear whether the benefits of chemotherapy outweigh the risks of side effects." +#high_risk "Recurrence Score greater than or equal to 31: The cancer has a high risk of recurrence, and the benefits of chemotherapy are likely to be greater than the risks of side effects." + +ValueSet: OncotypeDxDCISRiskScoreInterpretationVS +Description: "Intepretation of OncotypeDX DCIS (Ductal Carcinoma In Situ) Recurrence Score" +#low_risk "Recurrence Score lower than 38: The cancer has a low risk of recurrence. The benefit of chemotherapy is likely to be small and will not outweigh the risks of side effects." +#intermediate_risk "Recurrence Score of 39 up to and including 54: The cancer has an intermediate risk of recurrence. It’s unclear whether the benefits of chemotherapy outweigh the risks of side effects." +#high_risk "Recurrence Score greater than or equal to 55: The cancer has a high risk of recurrence, and the benefits of chemotherapy are likely to be greater than the risks of side effects." + +ValueSet: MammaprintRiskScoreInterpretationVS +Description: "Intepretation of Mammaprint Recurrence Score" +#low_risk "Score between 0.0 and +1.0, meaning a patient has on average a 10% chance that her cancer will recur within 10 years without any additional adjuvant treatment, either hormonal therapy or chemotherapy." +#high_risk "Score between -1.0 and 0.0, meaning a patient has a 29% chance that her cancer will recur within 10 years without any additional adjuvant treatment, either hormonal therapy or chemotherapy." + +#8010 "Carcinoma, NOS" +#8032 "Spindle cell carcinoma" +#8035 "Carcinoma with osteoclast-like stromal giant cells" +#8041 "Neuroendocrine carcinoma, poorly differentiated (small cell carcinoma)" +#8070 "Squamous cell carcinoma" +#8140 "Adenocarcinoma, NOS" +#8200 "Adenoid cystic carcinoma" +#8201 "Cribriform carcinoma" +#8211 "Tubular carcinoma" +#8246 "Neuroendocrine tumor, well-differentiated" +#8255 "Adenocarcinoma with mixed subtypes" +#8290 "Oncocytic carcinoma" +#8314 "Lipid-rich carcinoma" +#8315 "Glycogen-rich clear cell carcinoma" +#8401 "Apocrine adenocarcinoma" +#8410 "Sebaceous carcinoma" +#8430 "Mucoepidermoid carcinoma" +#8480 "Mucinous carcinoma" +#8500 "Ductal carcinoma" +#8501 "Comedocarcinoma, NOS" +#8502 "Secretory carcinoma" +#8503 "Intraductal papillary carcinoma" +#8504 "Encapsulated papillary carcinoma" +#8507 "Invasive micropapillary carcinoma" +#8509 "Solid papillary carcinoma" +#8510 "Medullary carcinoma" +#8513 "Atypical medullary carcinoma" +#8520 "Invasive lobular carcinoma" +#8521 "Infiltrating ductular carcinoma" +#8522 "Infiltrating duct and lobular carcinoma" +#8523 "Infiltrating duct mixed with other types of carcinoma" +#8524 "Infiltrating lobular mixed with other types of carcinoma" +#8525 "Polymorphous carcinoma" +#8530 "Inflammatory carcinoma" +#8540 "Paget disease of the nipple" +#8541 "Paget disease and infiltrating duct carcinoma of breast" +#8543 "Paget disease and intraductal carcinoma" +#8570 "Low-grade adenosquamous carcinoma" +#8571 "Metaplastic carcinoma with mesenchymal differentiation" +#8572 "Fibromatosis-like metaplastic carcinoma" +#8574 "Carcinoma with neuroendocrine differentiation" +#8575 "Metaplastic carcinoma" +#8982 "Myoepithelial carcinoma" +#8983 "Adenomyoepithelioma with carcinoma" + +*/ \ No newline at end of file From bc46902a5a5c5b6dc3c03e0143f0e70f357960a9 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 26 Oct 2018 11:58:50 -0400 Subject: [PATCH 072/289] Incorporated medications back in --- spec/LandingPageWound.html | 2 +- spec/shr_base_action.txt | 29 +++---- spec/shr_base_finding.txt | 2 +- .../shr_medication.txt | 80 +++++++++---------- .../shr_medication_map.txt | 8 +- .../shr_medication_vs.txt | 2 +- spec/shr_oncology.txt | 2 +- spec/shr_procedure.txt | 58 +++++++------- spec/shr_procedure_map.txt | 10 +-- 9 files changed, 96 insertions(+), 97 deletions(-) rename cimi_medication.txt => spec/shr_medication.txt (77%) rename cimi_medication_map.txt => spec/shr_medication_map.txt (83%) rename cimi_medication_vs.txt => spec/shr_medication_vs.txt (98%) diff --git a/spec/LandingPageWound.html b/spec/LandingPageWound.html index b0bb427c..83a8cef8 100644 --- a/spec/LandingPageWound.html +++ b/spec/LandingPageWound.html @@ -12,7 +12,7 @@

    Dealing with Nested Observations

Either approach is feasible, and each has pros and cons. A pure component approach keeps everything related to a single wound assessment together, but requires complicated mapping to FHIR, since FHIR observation components cannot have sub-components. A pure panel approach is also feasible, and nicely modular, but that approach leads to problems pairing up related observations, such as wound tunnel length and clock direction.

In this implementation, we take a hybrid approach, using components wherever possible, and sub-observations where necessary. Panel-type sub-observations are required where the panel observations themselves have sub-observations or components.

-

The other key to our approach representing each wound by a condition assertion (FindingSiteConditionPresenceStatement). A wound is an identifiable entity located at a particular body site that maintains its identity over a period of time. As such, a wound has properties indicative of a condition, including onset time and abatement time. Explicitly representing the wound allows multiple observations about the wound to refer back to the same wound.

+

The other key to our approach representing each wound by a condition assertion (FindingSiteConditionPresent). A wound is an identifiable entity located at a particular body site that maintains its identity over a period of time. As such, a wound has properties indicative of a condition, including onset time and abatement time. Explicitly representing the wound allows multiple observations about the wound to refer back to the same wound.

The use case under consideration is that repeated assessments of the same wound can occur at different times during the clinical course of the wound. These multiple assessments trace a relationship to the same wound by means of a common wound identifier.

Flattening the Topic-Context Pattern

Using the topic-context pattern introduces additional decisions and complexity in terms of orchestrating three class hierarchies that must come together to represent clinical statements. In consultation from Galen Mulrooney, a decision was made to flatten out the topic-context pattern similar to the approach being taken the the Federal Health Information Model (FHIM). The context hierarchy was combined with the clinical statement hierarchy, removing the separate StatementContext hierarchy. The statement topic class attributes were then directly added to the clinical statement/context classes, where previously they were integrated by reference. Work progressed much more smoothly after this change.

diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 25729393..d8746de0 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -8,11 +8,23 @@ Uses: shr.core, shr.entity, shr.encounter Abstract Element: ActionStatement Based on: InformationItem Description: "Abstract class representing any type of action." +1..1 ActionTopic 1..1 Patient // constrain from 0..1 to 1..1 0..1 Encounter // actions often take place during an encounter -1..1 ActionTopic // introduce topics at this point 0..* Reason + Abstract Element: ActionTopic + Description: "Compositional and reusable grouping of attributes that make up the clinical focus of an action statement, independent whether the action is potential or actual, past or future." + 0..1 Category + 1..1 TopicCode + + Element: TopicCode + Concept: TBD + Description: "The concept representing the finding or action that is the topic of the statement. + + For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." + Value: CodeableConcept + Element: Reason Concept: MTH#C0566251 Description: "The justification for an action or non-action, conclusion, opinion, etc." @@ -132,24 +144,13 @@ Description: "Abstract class representing a request for any type of action." Value: CodeableConcept -Abstract Element: ActionNotPerformedStatement +Abstract Element: ActionNotPerformed Based on: ActionStatement Description: "Abstract class representing non-performance of any type of action." 0..1 RelatedRequest 1..1 NonOccurrenceTimeOrPeriod -Abstract Element: ActionRequestedAgainstStatement +Abstract Element: ActionRequestedAgainst Based on: ActionStatement Description: "Abstract class representing a request to not perform any type of action." -Abstract Element: ActionTopic -Description: "Compositional and reusable grouping of attributes that make up the clinical focus of an action statement, independent whether the action is potential or actual, past or future." -0..1 Category -1..1 TopicCode - - Element: TopicCode - Concept: TBD - Description: "The concept representing the finding or action that is the topic of the statement. - - For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." - Value: CodeableConcept diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index dffdb296..5d24352d 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -77,7 +77,7 @@ Based on: Finding Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments. -For an Observation, the FindingTopicCode describes the aspect or property of the subject being observed or measured. The FindingTopicCode is the 'question code' that pairs to the 'answer' contained in the ResultValue." +For an Observation, the FindingTopicCode describes the aspect or property of the subject being observed or measured. The FindingTopicCode is the 'question code' that pairs to the 'answer' contained in the Value." //0..0 Observer 0..1 DeltaFlag 1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered diff --git a/cimi_medication.txt b/spec/shr_medication.txt similarity index 77% rename from cimi_medication.txt rename to spec/shr_medication.txt index 5b45cded..425f1a85 100644 --- a/cimi_medication.txt +++ b/spec/shr_medication.txt @@ -1,9 +1,9 @@ Grammar: DataElement 5.0 -Namespace: cimi.medication -Description: "The CIMI Medication domain contains definitions related to medications taken, or not taken, by the person of record, both currently and in the past." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity, cimi.encounter, cimi.procedure +Namespace: shr.medication +Description: "The medication domain contains definitions related to medications taken, or not taken, by the person of record, both currently and in the past." +Uses: shr.core, shr.base, shr.entity, shr.encounter, shr.procedure -/* Taking out for now since the PlanStatement has not been defined +/* Taking out for now since Plan has not been defined EntryElement: MedicationRegimen // Definitional Concept: MTH#C0237125 Description: "Defines a specific application of over-the-counter and prescribed/recommended medications and infusions to meet guidelines for therapeutic action, safety, and schedule." @@ -11,7 +11,7 @@ Description: "Defines a specific application of over-the-counter and prescribed/ */ Element: MedicationTopic -Based on: ProcedureTopic +Based on: ActionTopic Concept: TBD Description: "Base class for actions involving medications." 1..1 Medication @@ -109,82 +109,80 @@ Based on: ActionTopic Element: MedicationBeforeChange Concept: TBD Description: "The medication taken, prior to the change." - Value: ref(MedicationDispenseRequestedStatement) or ref(MedicationUsedStatement) + Value: ref(MedicationDispenseRequested) or ref(MedicationUsed) Element: MedicationAfterChange Concept: TBD Description: "The medication taken, prior to the change." - Value: ref(MedicationDispenseRequestedStatement) or ref(MedicationUsedStatement) + Value: ref(MedicationDispenseRequested) or ref(MedicationUsed) -EntryElement: MedicationUsedStatement -Based on: ActionPerformedStatement +EntryElement: MedicationUsed +Based on: ActionPerformed Concept: TBD Description: "A record of the use of a medication." // SourceOfInformation value is type AnyPersonOrOrganization - StatementTopic is type MedicationUseTopic + ActionTopic is type MedicationUseTopic 0..1 MedicationUseTopic.Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category Status from http://hl7.org/fhir/ValueSet/medication-statement-status 0..0 Method // because of Dosage.Method -EntryElement: MedicationAdherenceStatement // This could be attached to MedicationUsed directly as an extension, but modeling as an observation avoids creating an extension -Based on: SimpleCodedNonLaboratoryObservation +EntryElement: MedicationAdherence +Based on: CodedNonLaboratoryObservation Concept: MTH#C2364172 -Description: "The degree (frequency) that the stated treatment plan, prescription, or protocol was followed. A statement of the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency." - ResultValue from QualitativeFrequencyVS - TopicCode is MTH#C2364172 -1..1 Medication -0..* MedicationNonAdherenceReason +Description: "The degree (frequency) that the stated treatment plan, prescription, or protocol was followed. A statement of the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency. The SpecificFocusOfFinding must reference the medication via a code, MedicationRequest, or MedicationUsed. +Modeling note: MedicationAdherence could be attached to MedicationUsed directly as an extension, but modeling as an observation avoids creating an extension and allows this observation to be made at any time" +Value: CodeableConcept from QualitativeFrequencyVS + FindingTopicCode is MTH#C2364172 +1..1 SpecificFocusOfFinding + NonIndependentFinding +includes 0..* MedicationNonAdherenceReason Element: MedicationNonAdherenceReason + Based on: NonIndependentFinding Description: "Reason that patient did not adhere to a medication regimen." Value: CodeableConcept from MedicationNonAdherenceReasonVS + FindingTopicCode is TBD#TBD - -EntryElement: MedicationNotUsedStatement -Based on: ActionNotPerformedStatement +EntryElement: MedicationNotUsed +Based on: ActionNotPerformed Concept: TBD Description: "A record of a medication NOT used. Although usually not required, a medication not used is sometimes reported when deviating from normal expectation or care plan." -// SourceOfInformation value is type AnyPersonOrOrganization - StatementTopic is type MedicationUseTopic + ActionTopic is type MedicationUseTopic 0..1 MedicationUseTopic.Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category 0..0 MedicationUseTopic.Dosage Reason from MedicationNotUsedReasonVS - -EntryElement: MedicationDispenseRequestedStatement -Based on: ActionRequestedStatement +EntryElement: MedicationDispenseRequested +Based on: ActionRequested Concept: TBD Description: "An order for a medication to be dispensed and instructions for use." - StatementTopic is type MedicationDispenseTopic + ActionTopic is type MedicationDispenseTopic Status from http://hl7.org/fhir/ValueSet/medication-request-status PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority -EntryElement: MedicationNotPrescribedStatement -Based on: ActionRequestedAgainstStatement +EntryElement: MedicationNotPrescribed +Based on: ActionRequestedAgainst Concept: TBD Description: "A record of a medication NOT being prescribed. Recorded only when deviating from the normal expectation, care plan, or standard of care." - StatementTopic is type MedicationDispenseTopic + ActionTopic is type MedicationDispenseTopic Reason from MedicationNotUsedReasonVS -Element: MedicationDispensedStatement -Based on: ActionPerformedStatement +Element: MedicationDispensed +Based on: ActionPerformed Concept: TBD Description: "Indicates that a medication product has been dispensed for a named person/patient. This includes a description of the medication product (supply) provided and the instructions for administering the medication. The medication dispense is the result of a pharmacy system responding to a medication order." - StatementTopic is type MedicationDispenseTopic + ActionTopic is type MedicationDispenseTopic -Element: MedicationNotDispensedStatement -Based on: ActionNotPerformedStatement +Element: MedicationNotDispensed +Based on: ActionNotPerformed Concept: TBD Description: "Indicates that a medication product has NOT been dispensed for a named person/patient. This may be a result of the timing out of an order or detection of pharmacist of duplicate prescription or other reason." - StatementTopic is type MedicationDispenseTopic + ActionTopic is type MedicationDispenseTopic -EntryElement: MedicationChangeStatement -Based on: ActionPerformedStatement +EntryElement: MedicationChange +Based on: ActionPerformed Concept: MTH#C0554834 Description: "Description of a modification or change of a medication or dosage." - StatementTopic is type MedicationChangeTopic + ActionTopic is type MedicationChangeTopic Reason from MedicationChangeReasonVS // why was the medication changed? - - - diff --git a/cimi_medication_map.txt b/spec/shr_medication_map.txt similarity index 83% rename from cimi_medication_map.txt rename to spec/shr_medication_map.txt index ece4e2db..57f6b64f 100644 --- a/cimi_medication_map.txt +++ b/spec/shr_medication_map.txt @@ -1,5 +1,5 @@ Grammar: Map 5.1 -Namespace: cimi.medication +Namespace: shr.medication Target: FHIR_STU_3 Dosage maps to Dosage: @@ -13,7 +13,7 @@ Dosage maps to Dosage: AdministrationBodySite.Value maps to site MaximumDosePerTimePeriod maps to maxDosePerPeriod -MedicationUsedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: +MedicationUsed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: // SourceOfInformation.Value maps to informationSource _Entry.CreationTime maps to dateAsserted // date asserted and date recorded may not be the same constrain reasonNotTaken to 0..0 @@ -26,7 +26,7 @@ MedicationUsedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/ OccurrenceTimeOrPeriod maps to effective[x] Status maps to status -MedicationNotUsedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: +MedicationNotUsed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: // SourceOfInformation.Value maps to informationSource _Entry.CreationTime maps to dateAsserted MedicationUseTopic.Medication maps to medication[x] @@ -36,7 +36,7 @@ MedicationNotUsedStatement maps to http://hl7.org/fhir/us/core/StructureDefiniti Reason maps to reasonNotTaken NonOccurrenceTimeOrPeriod maps to effective[x] -MedicationDispenseRequestedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest: +MedicationDispenseRequested maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest: MedicationDispenseTopic.Medication maps to medication[x] MedicationDispenseTopic.NumberOfRefillsAllowed maps to dispenseRequest.numberOfRepeatsAllowed MedicationDispenseTopic.QuantityPerDispense maps to dispenseRequest.quantity diff --git a/cimi_medication_vs.txt b/spec/shr_medication_vs.txt similarity index 98% rename from cimi_medication_vs.txt rename to spec/shr_medication_vs.txt index 864670ea..d5371195 100644 --- a/cimi_medication_vs.txt +++ b/spec/shr_medication_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: cimi.medication +Namespace: shr.medication CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: RXN = http://www.nlm.nih.gov/research/umls/rxnorm diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index 71615e01..a4ef8181 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -38,7 +38,7 @@ Description: "Specimen resulting from biopsy or excision of breast and surroundi Description: "The time period between the chilling of a tissue or tissue sample and the time it is warmed." Value: TimePeriod -EntryElement: BreastCancerPresenceStatement +EntryElement: BreastCancerPresent Based on: ConditionPresentAssertion Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 863d9ef5..8ccdae66 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -11,7 +11,7 @@ Concept: TBD Description: "Description of a healthcare procedure. This can be a physical intervention like an operation, or less invasive like counseling or hypnotherapy." 1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* AnatomicalLocation -0..1 PartOf value is type ref(ProcedurePerformedStatement) +0..1 PartOf value is type ref(ProcedurePerformed) 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation 0..1 Reason @@ -128,7 +128,7 @@ Description: "Base class for actions related to the collection of a specimen." Description: "The quantity of specimen collected" Value: SimpleQuantity -EntryElement: ProcedurePerformedStatement +EntryElement: ProcedurePerformed Based on: ActionPerformed Description: "A procedure that has been performed." ActionTopic is type ProcedureTopic @@ -136,7 +136,7 @@ Description: "A procedure that has been performed." Status must be from http://hl7.org/fhir/ValueSet/event-status // Participant.EntityOrRole is type ref(Practitioner) Participant is type FHIRProcedureParticipant - RelatedRequest value is type ref(ProcedureRequestedStatement) + RelatedRequest value is type ref(ProcedureRequested) 0..* OutputFinding // in CIMI, this is part of ProcedureTopic, but the definition hinges on performance, so it belongs here, not there. Element: FHIRProcedureParticipant @@ -153,61 +153,61 @@ Description: "A procedure that has been performed." Value: ref(Finding) -EntryElement: ProcedureNotPerformedStatement -Based on: ActionNotPerformedStatement +EntryElement: ProcedureNotPerformed +Based on: ActionNotPerformed ActionTopic is type ProcedureTopic - RelatedRequest value is type ref(ProcedureRequestedStatement) + RelatedRequest value is type ref(ProcedureRequested) 0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason -EntryElement: ProcedureRequestedStatement +EntryElement: ProcedureRequested Based on: ActionRequested PriorityRank must be from http://hl7.org/fhir/ValueSet/request-priority // required Status must be from http://hl7.org/fhir/ValueSet/request-status ActionTopic is type ProcedureTopic -EntryElement: ProcedureRequestedAgainstStatement -Based on: ActionRequestedAgainstStatement +EntryElement: ProcedureRequestedAgainst +Based on: ActionRequestedAgainst ActionTopic is type ProcedureTopic -EntryElement: SpecimenCollectionPerformedStatement -Based on: ProcedurePerformedStatement +EntryElement: SpecimenCollectionPerformed +Based on: ProcedurePerformed 0..1 AnatomicalLocation // FHIR limits Specimen.collection.bodySite to 0..1 ActionTopic is type SpecimenCollectionTopic -EntryElement: SpecimenCollectionRequestedStatement -Based on: ProcedureRequestedStatement +EntryElement: SpecimenCollectionRequested +Based on: ProcedureRequested ActionTopic is type SpecimenCollectionTopic -EntryElement: ImagingProcedurePerformedStatement -Based on: ProcedurePerformedStatement +EntryElement: ImagingProcedurePerformed +Based on: ProcedurePerformed ActionTopic is type ImagingProcedureTopic -EntryElement: ImagingProcedureRequestedStatement -Based on: ProcedureRequestedStatement +EntryElement: ImagingProcedureRequested +Based on: ProcedureRequested ActionTopic is type ImagingProcedureTopic -EntryElement: SurgicalProcedurePerformedStatement -Based on: ProcedurePerformedStatement +EntryElement: SurgicalProcedurePerformed +Based on: ProcedurePerformed ActionTopic is type SurgicalProcedureTopic -EntryElement: SurgicalProcedureRequestedStatement -Based on: ProcedureRequestedStatement +EntryElement: SurgicalProcedureRequested +Based on: ProcedureRequested ActionTopic is type SurgicalProcedureTopic -EntryElement: SurgicalProcedureNotPerformedStatement -Based on: ProcedureNotPerformedStatement +EntryElement: SurgicalProcedureNotPerformed +Based on: ProcedureNotPerformed ActionTopic is type SurgicalProcedureTopic -EntryElement: SurgicalProcedureRequestedAgainstStatement -Based on: ProcedureRequestedAgainstStatement +EntryElement: SurgicalProcedureRequestedAgainst +Based on: ProcedureRequestedAgainst ActionTopic is type SurgicalProcedureTopic -EntryElement: LaboratoryProcedurePerformedStatement -Based on: ProcedurePerformedStatement +EntryElement: LaboratoryProcedurePerformed +Based on: ProcedurePerformed ActionTopic is type LaboratoryProcedureTopic -EntryElement: LaboratoryProcedureRequestedStatement -Based on: ProcedureRequestedStatement +EntryElement: LaboratoryProcedureRequested +Based on: ProcedureRequested ActionTopic is type LaboratoryProcedureTopic diff --git a/spec/shr_procedure_map.txt b/spec/shr_procedure_map.txt index 219fc3d3..82494478 100644 --- a/spec/shr_procedure_map.txt +++ b/spec/shr_procedure_map.txt @@ -3,7 +3,7 @@ Namespace: shr.procedure Target: FHIR_STU_3 -ProcedurePerformedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: +ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: ProcedureTopic.TopicCode maps to code Patient maps to subject ProcedureTopic.Category maps to category @@ -28,7 +28,7 @@ ProcedurePerformedStatement maps to http://hl7.org/fhir/us/core/StructureDefinit Facility maps to location -ProcedureNotPerformedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: +ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: ProcedureTopic.TopicCode maps to code Patient maps to subject ProcedureTopic.Category maps to category @@ -47,13 +47,13 @@ ProcedureNotPerformedStatement maps to http://hl7.org/fhir/us/core/StructureDefi constrain outcome to 0..0 constrain location to 0..0 -SurgicalProcedurePerformedStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: +SurgicalProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: SurgicalProcedureTopic.DirectSite maps to http://hl7.org/fhir/StructureDefinition/procedure-targetBodySite SurgicalProcedureTopic.IndirectSite maps to http://hl7.org/fhir/StructureDefinition/procedure-approachBodySite SurgicalProcedureTopic.SurgicalApproach maps to http://hl7.org/fhir/StructureDefinition/procedure-approachBodySite -ProcedureRequestedStatement maps to ProcedureRequest: +ProcedureRequested maps to ProcedureRequest: _Entry.CreationTime maps to authoredOn _Entry.SignedBy.Value.EntityOrRole maps to requester ProcedureTopic.TopicCode maps to code @@ -70,7 +70,7 @@ ProcedureRequestedStatement maps to ProcedureRequest: ExpectedPerformer maps to performer PriorityRank maps to priority -ProcedureRequestedAgainstStatement maps to ProcedureRequest: +ProcedureRequestedAgainst maps to ProcedureRequest: fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal _Entry.CreationTime maps to authoredOn From 826aa712ade6d0fba2ceeb120a123d520ba905c8 Mon Sep 17 00:00:00 2001 From: May Terry Date: Fri, 26 Oct 2018 16:02:01 -0400 Subject: [PATCH 073/289] added Tumor (containing TumorLocation) and PrimaryTumorIndicator elements Note: TumorLocation is embedded in Tumor Anatomical Location --- .DS_Store | Bin 8196 -> 8196 bytes spec/shr_intervention.txt | 2 - spec/shr_oncologycore.txt | 182 +++++++++++++++++++++----------------- 3 files changed, 102 insertions(+), 82 deletions(-) diff --git a/.DS_Store b/.DS_Store index c48cbbf5c7f0f45d348edb7938f47fe2652960f7..425c8ca82549f81547ff7e2ae374a1010ae01fd4 100644 GIT binary patch delta 1116 zcmeH^$xl;J7{z;-`W{^5mdWz^C`!>nY-HA;2~ z(LBXKoHiPbCWh1zbz@>8VIi8j(csFh#*Mo5c5p}h3%rYazkAPjbH4n}jD5y_(SxOh zp;`T<>GY7E6FDqtMRYpVI61k!+P0y*qDot!X3S|Tv;gzk587mY=pOVcYM`v_6A}`W zl2h~?pPEL}g~q1lT+*T)FsueMsUgFdCkWjmZe?gh2~1E6$Au%W`DTF}lw1LMk6%)b zD6&K!b9_`OGz&s+L~#tuY?tC6Hd_VKsVXOA>WVjRu@TbQulOXY@_aah8Zt>aspP4| zJH0Nq>Z!<(H1`Dz9X9m-5&qIfb0vX@weJKLFkM4wz||n+o0@Y zGrf(QJJ?J;5p9G7X)WMEs?8QFpM>~3P7;bnVVE{f1VhCfH#%Y|zIh@B8+`vuT!aY30B3|Gn-ryZp z@E#xV8DH@Y-(#i;h?}?m9Z083iIn)Qt!Aw^U0ypiv7xa^>o8o`9%LU6c8w~k;`YkU zF+~a->v5?b*(WK!qfQ1}9_I|O@l+pX!J5QEv4~@sC>OmFtC+^KBx9OYv~e6wh$*FF zInSb_iD6ToV63bngeJ47_?TKlcJeGnniRQiHHo#v&at#;O0;`-KI_);{My*H#Th=v$%>m%;Oqv;|}gJ s%J=aIPw+lMhRdNpwlGnw!I&G*gx{xk2Kcb@fO z`QF5$aUqr$HmRd2{IDPg<) z1N2#j>>MLuR^+mITvvCOx~fpiF}Fue)SS;*IUAwnWN6AOO-xDQ1BqmmE#=A>`hbiI zp0L;-6r{b9D5Mmwl&c_QBpGj?6ty`WW~;brhI)ugk!Hnoi5j+!p$g*~mt-N4Pt7KK zJdOsVzRx1Z6fNuTG~w@n<*q&aO@i+Y>J;G$88MIEgdvX-Nq0AND9dQ5Gb5 z-(W;iB(GnjMl)&{lHjaGw$*ERo+e?Wx4D%(t9iwwwDpymrq3vK8#E8W`c58_y>lo&Dnzicpm6m7~YSDyNv|$@M z(1`);z%IDp))?-A2VRV89AyMCgIOHJAsogr9LGtV!WoU_1zf}>Ea4iirS^WN&88EPA|;FIXa2h!w<*+&4p1gZJ|fxnxg3OuewUgysJY)|S6= I{ZFydA7`BeQUCw| diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index cfd8fca7..f3eed923 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -11,5 +11,3 @@ CodeSystem: HGNC = http://www.genenames.org CodeSystem: CAP = https://sdt.cap.org CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category - - diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index ccd00264..3b9ddbf1 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -64,96 +64,118 @@ Concept: SCT#258232002 "Cancer staging (tumor staging)" includes 0..1 TNMPathologicRegionalNodesClassification includes 0..1 TNMPathologicDistantMetastasesClassification - Element: StageTiming - Based on: NonIndependentFinding - Concept: SCT#260869008 "Timing of stage" - Description: "Indicates when the staging was done, in terms of treatment landmarks." - Value: CodeableConcept from StageTimingPrefixVS - FindingTopicCode is SCT#260869008 "Timing of stage" - - Element: StagingSystem - Based on: NonIndependentFinding - Concept: SCT#254292007 "Tumor staging (tumor staging)" // TODO: Needs LOINC code. - Description: "A systematic method for clinicopathologic evaluation of tumors. (source: NCI Metathesaurus)" - Value: CodeableConcept from CancerStagingSystemVS - FindingTopicCode is SCT#254292007 "Tumor staging (tumor staging)" // TODO: Needs LOINC code. - - EntryElement: StageGroup - // did not use precoordinated codes because only available for clinical and pathologic. - Based on: CodedNonLaboratoryObservation - Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" - Concept: MTH#C1302362 "Stage Grouping" - Value: CodeableConcept from http://loinc.org/vs/LL240-3 - FindingTopicCode is MTH#C1302362 "Stage Grouping" +Element: StageTiming +Based on: NonIndependentFinding +Concept: SCT#260869008 "Timing of stage" +Description: "Indicates when the staging was done, in terms of treatment landmarks." +Value: CodeableConcept from StageTimingPrefixVS + FindingTopicCode is SCT#260869008 "Timing of stage" + +Element: StagingSystem +Based on: NonIndependentFinding +Concept: SCT#254292007 "Tumor staging (tumor staging)" // TODO: Needs LOINC code. +Description: "A systematic method for clinicopathologic evaluation of tumors. (source: NCI Metathesaurus)" +Value: CodeableConcept from CancerStagingSystemVS + FindingTopicCode is SCT#254292007 "Tumor staging (tumor staging)" // TODO: Needs LOINC code. + +EntryElement: StageGroup +// did not use precoordinated codes because only available for clinical and pathologic. +Based on: CodedNonLaboratoryObservation +Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" +Concept: MTH#C1302362 "Stage Grouping" +Value: CodeableConcept from http://loinc.org/vs/LL240-3 + FindingTopicCode is MTH#C1302362 "Stage Grouping" // SpecificFocusOfFinding value is type CancerStage - Element: TNMClinicalPrimaryTumorClassification - Based on: CodedNonLaboratoryObservation - Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" - Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." - Value: CodeableConcept from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 +Element: TNMClinicalPrimaryTumorClassification +Based on: CodedNonLaboratoryObservation +Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" +Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." +Value: CodeableConcept from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 // SpecificFocusOfFinding value is type CancerStage - NonIndependentFinding - includes 0..1 StageSuffix - includes 0..1 StageTiming - - Element: StageSuffix - Based on: NonIndependentFinding - Concept: TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. assign a local value set until we get something assigned. - Description: "A suffix used in conjuction with certain cancer stage categories, usually qualifying how the category value was determined." - Value: CodeableConcept from StageSuffixVS // local value set created - FindingTopicCode is TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. - - - Element: TNMClinicalRegionalNodesClassification - Based on: CodedNonLaboratoryObservation - Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" - Description: "" //TODO: pull from LOINC - Value: CodeableConcept from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 - FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" + NonIndependentFinding + includes 0..1 StageSuffix + includes 0..1 StageTiming // TODO: make this a fixed value to clinical. + +Element: StageSuffix +Based on: NonIndependentFinding +Concept: TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. assign a local value set until we get something assigned. +Description: "A suffix used in conjuction with certain cancer stage categories, usually qualifying how the category value was determined." +Value: CodeableConcept from StageSuffixVS // local value set created + FindingTopicCode is TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. + + +Element: TNMClinicalRegionalNodesClassification +Based on: CodedNonLaboratoryObservation +Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" +Description: "" //TODO: pull from LOINC +Value: CodeableConcept from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 + FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" // SpecificFocusOfFinding value is type CancerStage - NonIndependentFinding - includes 0..1 StageSuffix - includes 0..1 StageTiming - - Element: TNMClinicalDistantMetastasesClassification - Based on: CodedNonLaboratoryObservation - Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" - Description: "" //TODO: pull from LOINC - Value: CodeableConcept from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 - FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" + NonIndependentFinding + includes 0..1 StageSuffix + includes 0..1 StageTiming // TODO: make this a fixed value to clinical. + +Element: TNMClinicalDistantMetastasesClassification +Based on: CodedNonLaboratoryObservation +Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" +Description: "" //TODO: pull from LOINC +Value: CodeableConcept from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 + FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" // SpecificFocusOfFinding value is type CancerStage - Element: TNMPathologicPrimaryTumorClassification - Based on: CodedNonLaboratoryObservation - Concept: LNC#21899-0 "Primary tumor.pathology Cancer" - Description: "" //TODO: pull from LOINC - Value: CodeableConcept from http://loinc.org/vs/LL232-0 // normative - FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" +Element: TNMPathologicPrimaryTumorClassification +Based on: CodedNonLaboratoryObservation +Concept: LNC#21899-0 "Primary tumor.pathology Cancer" +Description: "" //TODO: pull from LOINC +Value: CodeableConcept from http://loinc.org/vs/LL232-0 // normative + FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" // SpecificFocusOfFinding value is type CancerStage - NonIndependentFinding - includes 0..1 StageSuffix - includes 0..1 StageTiming - - Element: TNMPathologicRegionalNodesClassification - Based on: CodedNonLaboratoryObservation - Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" - Description: "" //TODO: pull from LOINC - Value: CodeableConcept from http://loinc.org/vs/LL3136-0 // normative - FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" + NonIndependentFinding + includes 0..1 StageSuffix + includes 0..1 StageTiming // TODO: make this a fixed value to pathologic. + +Element: TNMPathologicRegionalNodesClassification +Based on: CodedNonLaboratoryObservation +Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" +Description: "" //TODO: pull from LOINC +Value: CodeableConcept from http://loinc.org/vs/LL3136-0 // normative + FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" // SpecificFocusOfFinding value is type CancerStage - NonIndependentFinding - includes 0..1 StageSuffix - includes 0..1 StageTiming - - Element: TNMPathologicDistantMetastasesClassification - Based on: CodedNonLaboratoryObservation - Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" - Description: "" //TODO: pull from LOINC - Value: CodeableConcept from http://loinc.org/vs/LL3137-8 - FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative + NonIndependentFinding + includes 0..1 StageSuffix + includes 0..1 StageTiming // TODO: make this a fixed value to pathologic. + +Element: TNMPathologicDistantMetastasesClassification +Based on: CodedNonLaboratoryObservation +Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" +Description: "" //TODO: pull from LOINC +Value: CodeableConcept from http://loinc.org/vs/LL3137-8 + FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative // SpecificFocusOfFinding value is type CancerStage +// A tumor is a morphologic abnormality observation about a CancerDisorder, rather than ConditionPresentAssertion. +EntryElement: Tumor // NOTE: Includes TumorLocation as AnatomicalLocation because there are no site constraints. +Based on: NonLaboratoryObservation +Description: "An abnormal mass of tissue that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). Also called neoplasm. (source: NCI Dictionary)." +Concept: SCT#395557000 "Tumor finding (finding)" +// SpecificFocusOfFinding value is type CancerDisorder + FindingTopicCode is SCT#395557000 "Tumor finding (finding)" + NonIndependentFinding + includes 0..1 PrimaryTumorIndicator + 0..0 Stage + + +Element: PrimaryTumorIndicator +Based on: CodedNonLaboratoryObservation +Description: "Whether the tumor is the original, or first, tumor in the body, for a particular cancer." +Concept: SCT#260716003 "Site of Primary Tumor (attribute)" +Value: CodeableConcept from YesNoVS // TODO: Open a bug for Observation Value to support boolean data type. This is possible in the FHIR Observation.value.valueBoolean attribute. Change back to boolean after fix. + FindingTopicCode is SCT#260716003 "Site of Primary Tumor (attribute)" +// SpecificFocusOfFinding value is type Tumor + + + /********** Assessments **************/ //ECOG is a panel in LOINC with score and interpretation as two components of the panel. From fc2822c684e569f1693f82766756859830727d16 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 26 Oct 2018 16:23:58 -0400 Subject: [PATCH 074/289] updated config files --- spec/ig-cimi-config.json | 34 ---------------------------------- spec/ig-shr-config.json | 9 ++++++++- 2 files changed, 8 insertions(+), 35 deletions(-) delete mode 100644 spec/ig-cimi-config.json diff --git a/spec/ig-cimi-config.json b/spec/ig-cimi-config.json deleted file mode 100644 index 49745477..00000000 --- a/spec/ig-cimi-config.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "projectName": "Clinical Information Modeling Initiative", - "projectShorthand": "CIMI", - "projectURL": "http://hl7.org/cimi", - "fhirURL": "http://hl7.org/cimi/fhir", - "entryTypeURL": "http://hl7.org/cimi/spec/", - "implementationGuide": - { - "includeLogicalModels": true, - "includeModelDoc": true, - "indexContent": "LandingPageCimi.html", - "primarySelectionStrategy": - { - "strategy": "entry" - } - }, - "filterStrategy": - { - "filter": true, - "strategy": "namespace", - "target": ["cimi.core", "shr.encounter", "shr.entity"] - }, - "publisher": "The Clinical Information Modeling Initiative (CIMI)", - "contact": [ - { - "telecom": [ - { - "system": "url", - "value": "http://hl7.org/cimi" - } - ] - } - ] -} \ No newline at end of file diff --git a/spec/ig-shr-config.json b/spec/ig-shr-config.json index d998a826..f8e7fb06 100644 --- a/spec/ig-shr-config.json +++ b/spec/ig-shr-config.json @@ -6,14 +6,21 @@ "entryTypeURL": "http://standardhealthrecord.org/spec/", "implementationGuide": { + "npmName": "hl7.fhir.us.shr", + "version": "0.1.0", "includeLogicalModels": true, "includeModelDoc": true, - "indexContent": "LandingPageShr.html", + "indexContent": "LandingPageShr.html", + "historyLink": "http://hl7.org/fhir/us/shr/history.html", "primarySelectionStrategy": { "strategy": "entry" } }, + "filterStrategy": + { + "filter": false, + }, "publisher": "The MITRE Corporation: Standard Health Record Collaborative", "contact": [ { From 53e1ab8c47dd815eda0a88eee8cc9614d998409e Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 29 Oct 2018 11:11:26 -0400 Subject: [PATCH 075/289] Zero out a couple of element in Histologic Grade --- spec/shr_oncologycore.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 3b9ddbf1..a319dd57 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -31,11 +31,14 @@ Value: CodeableConcept from CancerHistologicTypeVS EntryElement: CancerHistologicGrade // did not use precoordinated codes because only available for clinical and pathologic. -Based on: CodedNonLaboratoryObservation +Based on: SimpleCodedNonLaboratoryObservation Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" Concept: LNC#21858-6 "Grade Cancer" Value: CodeableConcept from http://loinc.org/vs/LL213-0 FindingTopicCode is LNC#21858-6 "Grade Cancer" + SpecificFocusOfFinding value is type CancerDisorder +0..0 BodySite +0..0 Device EntryElement: CancerProgression Based on: CodedNonLaboratoryObservation From 87fcc11c80a599080a656dceb8df5bcd62f25966 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 29 Oct 2018 15:08:53 -0400 Subject: [PATCH 076/289] Aligned Meds and Procedures with FHIR by eliminating ActionTopic --- spec/shr_base_action.txt | 29 ++---- spec/shr_medication.txt | 173 ++++++++++++++++++------------------ spec/shr_medication_map.txt | 55 +++++++----- spec/shr_oncologycore.txt | 4 +- spec/shr_procedure.txt | 169 +++++++++++++++-------------------- spec/shr_procedure_map.txt | 38 ++++---- 6 files changed, 221 insertions(+), 247 deletions(-) diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index d8746de0..bbe1c985 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -8,26 +8,20 @@ Uses: shr.core, shr.entity, shr.encounter Abstract Element: ActionStatement Based on: InformationItem Description: "Abstract class representing any type of action." -1..1 ActionTopic +1..1 TopicCode +0..1 Category // Might not need this 1..1 Patient // constrain from 0..1 to 1..1 0..1 Encounter // actions often take place during an encounter 0..* Reason - Abstract Element: ActionTopic - Description: "Compositional and reusable grouping of attributes that make up the clinical focus of an action statement, independent whether the action is potential or actual, past or future." - 0..1 Category - 1..1 TopicCode - - Element: TopicCode - Concept: TBD - Description: "The concept representing the finding or action that is the topic of the statement. - - For action topics, the TopicCode represents the action being described. For findings, the TopicCode represents the 'question' or property being investigated. For evaluation result findings, the TopicCode contains a concept for an observable entity, such as systolic blood pressure. For assertion findings, the TopicCode contains a code representing the condition, allergy, or other item being asserted. In all cases, the TopicCode describes the topic of the action or the finding." - Value: CodeableConcept + Element: TopicCode + Concept: TBD + Description: "A code representing the (not) requested or (not) performed action that is the topic of the statement." + Value: CodeableConcept Element: Reason Concept: MTH#C0566251 - Description: "The justification for an action or non-action, conclusion, opinion, etc." + Description: "The justification for an action or non-action, etc." Value: string or CodeableConcept or ref(Finding) Abstract Element: ActionPerformed @@ -39,7 +33,6 @@ Description: "Abstract class representing performance of any type of action." 0..1 Method 0..* RelatedRequest //0..1 EnactsPlan -//0..1 FulfillsOrder 0..1 ref(Facility) 0..1 Outcome // e.g., AdverseEvent @@ -76,12 +69,8 @@ Description: "Abstract class representing performance of any type of action." Concept: TBD Description: "The plan that is partly or wholly enacted by the performance of this act." Value: ref(ActionRequested) - - Element: FulfillsOrder - Concept: TBD - Description: "The order that is partly or wholly enacted by the performance of this act." - Value: ref() - */ +*/ + Element: Outcome Concept: TBD Description: "The result of performing an action or behavior, for example, an adverse reaction or new finding." diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 425f1a85..bd1627db 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -10,29 +10,22 @@ Description: "Defines a specific application of over-the-counter and prescribed/ 1..* MedicationUsePlanned */ -Element: MedicationTopic -Based on: ActionTopic -Concept: TBD -Description: "Base class for actions involving medications." -1..1 Medication -0..1 Dosage - - Element: Dosage - Concept: MTH#C0178602 - Description: "The dosage of the medication, prescribed or taken." - 1..1 DoseAmount - 1..1 TimingOfDoses - 1..1 AsNeededIndicator - 0..1 DoseInstructionsText - 0..* AdditionalDoseInstruction from http://hl7.org/fhir/ValueSet/additional-instruction-codes - 0..1 RouteIntoBody - 0..1 AdministrationMethod from http://hl7.org/fhir/ValueSet/administration-method-codes - 0..1 AdministrationBodySite - 0..1 MaximumDosePerTimePeriod +Element: Dosage +Concept: MTH#C0178602 +Description: "The dosage of the medication. The data structure is flexible and can describe a dosage prescribed, administered, or reported." +1..1 DoseAmount +1..1 TimingOfDoses +1..1 AsNeededIndicator +0..1 DosageInstructionsText +0..* AdditionalDosageInstruction from http://hl7.org/fhir/ValueSet/additional-instruction-codes +0..1 RouteIntoBody from http://hl7.org/fhir/ValueSet/route-codes +0..1 DosageMethod from http://hl7.org/fhir/ValueSet/administration-method-codes +0..1 DosageBodySite +0..1 MaximumDosePerTimePeriod Element: DoseAmount Concept: TBD - Description: "The amount of medication taken per dose, as a quantity or range." + Description: "The amount of medication taken per dose, as a quantity or range. Relative dose (e.g., per kg body weight or surface area) are indicated by specifying appropriate units (e.g., mg/kg or mg/m2 etc)." Value: SimpleQuantity or Range Element: TimingOfDoses @@ -45,22 +38,22 @@ Description: "Base class for actions involving medications." Description: "Indicates the pre-condition under which the drug or intervention should be used." Value: boolean or CodeableConcept could be from http://hl7.org/fhir/ValueSet/medication-as-needed-reason - Element: DoseInstructionsText + Element: DosageInstructionsText Concept: TBD Description: "The directions (signetur) on the drug prescription or dispensing record." Value: string - Element: AdditionalDoseInstruction + Element: AdditionalDosageInstruction Concept: MTH#C1644714 Description: "Supplemental instructions - e.g. 'with meals'." Value: CodeableConcept - Element: AdministrationMethod + Element: DosageMethod Concept: MTH#C1547585 Description: "Technique for administering medication." Value: CodeableConcept - Element: AdministrationBodySite + Element: DosageBodySite Concept: MTH#C0229986 Description: "The anatomic site at which medical intervention is applied." Value: AnatomicalLocation @@ -70,71 +63,39 @@ Description: "Base class for actions involving medications." Description: "The maximum amount of a medication to be taken in a given period of time (e.g., no more than x in any 24-hour period)" Value: Ratio -EntryElement: MedicationDispenseTopic -Concept: TBD -Based on: MedicationTopic -Description: "The action of ordering and deliving a medication to the party responsible for administering the medication." -0..1 NumberOfRefillsAllowed -0..1 QuantityPerDispense -0..1 SupplyDuration - - Element: NumberOfRefillsAllowed - Concept: TBD - Description: "The maximum number of times the dispense can be repeated. For medication dispense, this integer does NOT include the original order dispense. This means that if an order indicates dispense 30 tablets plus 3 repeats, then the order can be dispensed a total of 4 times and the patient can receive a total of 120 tablets." - Value: positiveInt // should be unsignedInt, but that causes a mapping error in FHIR 3.0 - - Element: QuantityPerDispense - Concept: TBD - Description: "The amount that is to be dispensed for one fill." - Value: SimpleQuantity - Element: SupplyDuration - Concept: TBD - Description: "Identifies the period time over which the supplied product is expected to be used, or the length of time the dispense is expected to last." - Value: Duration - - -Element: MedicationUseTopic -Based on: MedicationTopic +EntryElement: MedicationStatement +Based on: ActionPerformed Concept: TBD -Description: "A course or dose of medication for a patient of being recommended, used, or not used. Medication use can be reported, directly observed, or inferred from clinical events associated with orders, prescriptions written, pharmacy dispensings, procedural administrations, and other patient-reported information." - - -Element: MedicationChangeTopic -Based on: ActionTopic -1..1 Type from MedicationChangeTypeVS //"Whether the change is a dose change, switch to a new medication, or discontinuation." -0..* MedicationBeforeChange //might be more than one -0..* MedicationAfterChange - - Element: MedicationBeforeChange - Concept: TBD - Description: "The medication taken, prior to the change." - Value: ref(MedicationDispenseRequested) or ref(MedicationUsed) - - Element: MedicationAfterChange - Concept: TBD - Description: "The medication taken, prior to the change." - Value: ref(MedicationDispenseRequested) or ref(MedicationUsed) +Description: "A record of the use of a medication." +// SourceOfInformation value is type AnyPersonOrOrganization +1..1 Medication +0..1 Dosage +0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category + Status from http://hl7.org/fhir/ValueSet/medication-statement-status +0..0 Method // because of Dosage.Method -EntryElement: MedicationUsed +EntryElement: MedicationAdministered Based on: ActionPerformed Concept: TBD Description: "A record of the use of a medication." // SourceOfInformation value is type AnyPersonOrOrganization - ActionTopic is type MedicationUseTopic -0..1 MedicationUseTopic.Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category - Status from http://hl7.org/fhir/ValueSet/medication-statement-status -0..0 Method // because of Dosage.Method +1..1 Medication +0..1 Dosage +0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category + Status from http://hl7.org/fhir/ValueSet/medication-admin-status +0..0 Method // because of Dosage.Method + EntryElement: MedicationAdherence Based on: CodedNonLaboratoryObservation Concept: MTH#C2364172 -Description: "The degree (frequency) that the stated treatment plan, prescription, or protocol was followed. A statement of the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency. The SpecificFocusOfFinding must reference the medication via a code, MedicationRequest, or MedicationUsed. -Modeling note: MedicationAdherence could be attached to MedicationUsed directly as an extension, but modeling as an observation avoids creating an extension and allows this observation to be made at any time" +Description: "The degree (frequency) that the stated treatment plan, prescription, or protocol was followed. A statement of the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency. The SpecificFocusOfFinding must reference the medication via a code, MedicationRequest, or MedicationStatement. +Modeling note: MedicationAdherence could be attached to MedicationStatement directly as an extension, but modeling as an observation avoids creating an extension and allows this observation to be made at any time" Value: CodeableConcept from QualitativeFrequencyVS FindingTopicCode is MTH#C2364172 -1..1 SpecificFocusOfFinding +1..1 SpecificFocusOfFinding // TODO: constrain type! NonIndependentFinding includes 0..* MedicationNonAdherenceReason @@ -144,45 +105,85 @@ includes 0..* MedicationNonAdherenceReason Value: CodeableConcept from MedicationNonAdherenceReasonVS FindingTopicCode is TBD#TBD -EntryElement: MedicationNotUsed +EntryElement: MedicationNotAdministered Based on: ActionNotPerformed Concept: TBD Description: "A record of a medication NOT used. Although usually not required, a medication not used is sometimes reported when deviating from normal expectation or care plan." - ActionTopic is type MedicationUseTopic -0..1 MedicationUseTopic.Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category -0..0 MedicationUseTopic.Dosage +1..1 Medication +0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category Reason from MedicationNotUsedReasonVS -EntryElement: MedicationDispenseRequested +EntryElement: MedicationRequested Based on: ActionRequested Concept: TBD Description: "An order for a medication to be dispensed and instructions for use." - ActionTopic is type MedicationDispenseTopic Status from http://hl7.org/fhir/ValueSet/medication-request-status PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority - +1..1 Medication +0..1 Dosage +0..1 NumberOfRefillsAllowed +0..1 QuantityPerDispense +0..1 SupplyDuration +0..1 SubstitutionAllowed + + Element: NumberOfRefillsAllowed + Concept: TBD + Description: "The maximum number of times the dispense can be repeated. For medication dispense, this integer does NOT include the original order dispense. This means that if an order indicates dispense 30 tablets plus 3 repeats, then the order can be dispensed a total of 4 times and the patient can receive a total of 120 tablets." + Value: positiveInt // should be unsignedInt, but that causes a mapping error in FHIR 3.0 + + Element: QuantityPerDispense + Concept: TBD + Description: "The amount that is to be dispensed for one fill." + Value: SimpleQuantity + + Element: SupplyDuration + Concept: TBD + Description: "Identifies the period time over which the supplied product is expected to be used, or the length of time the dispense is expected to last." + Value: Duration + + Element: SubstitutionAllowed + Concept: TBD + Description: "Whether substitution is allowed or not." + Value: boolean + + EntryElement: MedicationNotPrescribed Based on: ActionRequestedAgainst Concept: TBD Description: "A record of a medication NOT being prescribed. Recorded only when deviating from the normal expectation, care plan, or standard of care." - ActionTopic is type MedicationDispenseTopic +1..1 Medication Reason from MedicationNotUsedReasonVS Element: MedicationDispensed Based on: ActionPerformed Concept: TBD Description: "Indicates that a medication product has been dispensed for a named person/patient. This includes a description of the medication product (supply) provided and the instructions for administering the medication. The medication dispense is the result of a pharmacy system responding to a medication order." - ActionTopic is type MedicationDispenseTopic +// Attributes from FHIR needed + Element: MedicationNotDispensed Based on: ActionNotPerformed Concept: TBD Description: "Indicates that a medication product has NOT been dispensed for a named person/patient. This may be a result of the timing out of an order or detection of pharmacist of duplicate prescription or other reason." - ActionTopic is type MedicationDispenseTopic +// Attributes needed + EntryElement: MedicationChange Based on: ActionPerformed Concept: MTH#C0554834 Description: "Description of a modification or change of a medication or dosage." - ActionTopic is type MedicationChangeTopic +1..1 Type from MedicationChangeTypeVS //"Whether the change is a dose change, switch to a new medication, or discontinuation." +0..* MedicationBeforeChange //might be more than one +0..* MedicationAfterChange Reason from MedicationChangeReasonVS // why was the medication changed? + + Element: MedicationBeforeChange + Concept: TBD + Description: "The medication taken, prior to the change." + Value: ref(MedicationRequested) or ref(MedicationStatement) or ref(MedicationAdministered) + + Element: MedicationAfterChange + Concept: TBD + Description: "The medication taken, prior to the change." + Value: ref(MedicationRequested) or ref(MedicationStatement) or ref(MedicationAdministered) + diff --git a/spec/shr_medication_map.txt b/spec/shr_medication_map.txt index 57f6b64f..7bc0f117 100644 --- a/spec/shr_medication_map.txt +++ b/spec/shr_medication_map.txt @@ -6,43 +6,54 @@ Dosage maps to Dosage: DoseAmount maps to dose[x] TimingOfDoses maps to timing AsNeededIndicator maps to asNeeded[x] - DoseInstructionsText maps to text - AdditionalDoseInstruction maps to additionalInstruction + DosageInstructionsText maps to text + AdditionalDosageInstruction maps to additionalInstruction RouteIntoBody maps to route - AdministrationMethod maps to method - AdministrationBodySite.Value maps to site + DosageMethod maps to method + DosageBodySite.Value maps to site MaximumDosePerTimePeriod maps to maxDosePerPeriod -MedicationUsed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: +MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: // SourceOfInformation.Value maps to informationSource - _Entry.CreationTime maps to dateAsserted // date asserted and date recorded may not be the same + _Entry.CreationTime maps to dateAsserted // however, date asserted and date recorded may not be the same constrain reasonNotTaken to 0..0 constrain dosage to 0..1 - MedicationUseTopic.Dosage maps to dosage - MedicationUseTopic.Medication maps to medication[x] - MedicationUseTopic.Category maps to category + Dosage maps to dosage + Medication maps to medication[x] + Category maps to category fix taken to #y Reason maps to reasonCode OccurrenceTimeOrPeriod maps to effective[x] Status maps to status -MedicationNotUsed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: +MedicationAdministered maps to MedicationAdministration: // SourceOfInformation.Value maps to informationSource - _Entry.CreationTime maps to dateAsserted - MedicationUseTopic.Medication maps to medication[x] - MedicationUseTopic.Category maps to category - fix taken to #n + constrain notGiven to 0..0 + constrain reasonNotGiven to 0..0 + Dosage maps to dosage + Medication maps to medication[x] + Category maps to category + Reason maps to reasonCode + OccurrenceTimeOrPeriod maps to effective[x] + Status maps to status + +MedicationNotAdministered maps to MedicationAdministration: +// SourceOfInformation.Value maps to informationSource + Medication maps to medication[x] + Category maps to category + fix notGiven to true constrain dosage to 0..0 - Reason maps to reasonNotTaken + Reason maps to reasonNotGiven NonOccurrenceTimeOrPeriod maps to effective[x] - -MedicationDispenseRequested maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest: - MedicationDispenseTopic.Medication maps to medication[x] - MedicationDispenseTopic.NumberOfRefillsAllowed maps to dispenseRequest.numberOfRepeatsAllowed - MedicationDispenseTopic.QuantityPerDispense maps to dispenseRequest.quantity - MedicationDispenseTopic.SupplyDuration maps to dispenseRequest.expectedSupplyDuration + + +MedicationRequested maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest: + Medication maps to medication[x] + NumberOfRefillsAllowed maps to dispenseRequest.numberOfRepeatsAllowed + QuantityPerDispense maps to dispenseRequest.quantity + SupplyDuration maps to dispenseRequest.expectedSupplyDuration constrain dosageInstruction to 0..1 - MedicationDispenseTopic.Dosage maps to dosageInstruction + Dosage maps to dosageInstruction Reason maps to reasonCode Status maps to status ExpectedPerformanceTime maps to dispenseRequest.validityPeriod diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index a319dd57..092068b5 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -36,8 +36,8 @@ Description: "The classification resulting from cancer staging. Each type of Concept: LNC#21858-6 "Grade Cancer" Value: CodeableConcept from http://loinc.org/vs/LL213-0 FindingTopicCode is LNC#21858-6 "Grade Cancer" - SpecificFocusOfFinding value is type CancerDisorder -0..0 BodySite +// SpecificFocusOfFinding value is type CancerDisorder // TODO: this is failing; bug reported +0..0 AnatomicalLocation 0..0 Device EntryElement: CancerProgression diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 8ccdae66..e80fa1ad 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -5,10 +5,11 @@ Uses: shr.core, shr.base, shr.entity CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category -Element: ProcedureTopic -Based on: ActionTopic -Concept: TBD -Description: "Description of a healthcare procedure. This can be a physical intervention like an operation, or less invasive like counseling or hypnotherapy." + + +EntryElement: ProcedurePerformed +Based on: ActionPerformed +Description: "A procedure that has been performed." 1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* AnatomicalLocation 0..1 PartOf value is type ref(ProcedurePerformed) @@ -21,6 +22,12 @@ Description: "Description of a healthcare procedure. This can be a physical inte 0..* Indication 0..* ref(Device) 0..1 Location + Participant.OnBehalfOf value is type ref(Organization) + Status must be from http://hl7.org/fhir/ValueSet/event-status +// Participant.EntityOrRole is type ref(Practitioner) + Participant is type FHIRProcedureParticipant + RelatedRequest value is type ref(ProcedureRequested) +0..* OutputFinding // in CIMI, this is part of ProcedureTopic, but the definition hinges on performance, so it belongs here, not there. Element: InputFinding Description: "Patient findings expected for the performance of the specified procedure. For instance, an x-ray of a fracture prior to a surgical procedure for a bone fracture." @@ -28,13 +35,61 @@ Description: "Description of a healthcare procedure. This can be a physical inte Element: Indication Description: "Conditions or situations where the procedure is recommended. In the Performed context, the actual indication should be reported." - Value: CodeableConcept + Value: CodeableConcept + + Element: FHIRProcedureParticipant + Based on: Participant + Description: "Constraints participants to classes that are accepted by FHIR as actors in procedures." + Value: ref(Practitioner) or ref(Organization) or ref(Patient) or ref(RelatedPerson) or ref(Device) +// inherited attributes: +// 0..1 ParticipationType // role +// 0..1 ParticipationPeriod +// 0..1 OnBehalfOf + + Element: OutputFinding + Description: "Patient findings documented during the performance of the procedure." + Value: ref(Finding) + + +EntryElement: ProcedureNotPerformed +Based on: ActionNotPerformed +0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason +1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +0..* AnatomicalLocation +//0..1 PartOf value is type ref(ProcedurePerformed) ??? +0..1 Category // this is a constraint on the cardinality of Action.Category +0..* Annotation +1..1 Status must be from http://hl7.org/fhir/ValueSet/event-status + RelatedRequest value is type ref(ProcedureRequested) + +EntryElement: ProcedureRequested +Based on: ActionRequested + PriorityRank must be from http://hl7.org/fhir/ValueSet/request-priority // required + Status must be from http://hl7.org/fhir/ValueSet/request-status +1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +0..* AnatomicalLocation +0..1 PartOf value is type ref(ProcedurePerformed) +0..1 Category // this is a constraint on the cardinality of Action.Category +0..* Annotation +0..1 Reason +0..1 Method +0..* Precondition +0..* InputFinding +0..* Indication +0..* ref(Device) +0..1 Location + +EntryElement: ProcedureRequestedAgainst +Based on: ActionRequestedAgainst +1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +0..* AnatomicalLocation + //---------- Specialized Types of Procedure Topics ---------------- -Element: ImagingProcedureTopic -Based on: ProcedureTopic +Element: ImagingProcedurePerformed +Based on: ProcedurePerformed Concept: TBD Description: "Experimental class for an imaging procedure. This class is still incomplete at this time." 0..* ImagingSubstance @@ -44,8 +99,9 @@ Description: "Experimental class for an imaging procedure. This class is still i Description: "Substance used for this imaging procedure such as a contrast agent." Value: CodeableConcept -Element: LaboratoryProcedureTopic -Based on: ProcedureTopic + +Element: LaboratoryProcedurePerformed +Based on: ProcedurePerformed Concept: MTH#C0456984 Description: "A procedure performed on a collected specimen such as a blood panel or a biopsy." 1..1 TopicCode from http://hl7.org/fhir/ValueSet/observation-codes @@ -53,9 +109,9 @@ Description: "A procedure performed on a collected specimen such as a blood pane 0..1 ref(Specimen) //0..1 ref(Device) // constraint from 0..* - -Element: SurgicalProcedureTopic -Based on: ProcedureTopic + +Element: SurgicalProcedurePerformed +Based on: ProcedurePerformed Concept: TBD Description: "A surgical action, independent of action context." 0..* DirectSite @@ -119,96 +175,13 @@ Description: "A surgical action, independent of action context." Description: "An indirect device used for this procedure." Value: CodeableConcept -Element: SpecimenCollectionTopic -Based on: ProcedureTopic +Element: SpecimenCollectionPerformed +Based on: ProcedurePerformed Description: "Base class for actions related to the collection of a specimen." 0..* AmountOrSize +0..1 AnatomicalLocation // FHIR limits Specimen.collection.bodySite to 0..1 Element: AmountOrSize Description: "The quantity of specimen collected" Value: SimpleQuantity -EntryElement: ProcedurePerformed -Based on: ActionPerformed -Description: "A procedure that has been performed." - ActionTopic is type ProcedureTopic - Participant.OnBehalfOf value is type ref(Organization) - Status must be from http://hl7.org/fhir/ValueSet/event-status -// Participant.EntityOrRole is type ref(Practitioner) - Participant is type FHIRProcedureParticipant - RelatedRequest value is type ref(ProcedureRequested) -0..* OutputFinding // in CIMI, this is part of ProcedureTopic, but the definition hinges on performance, so it belongs here, not there. - - Element: FHIRProcedureParticipant - Based on: Participant - Description: "Constraints participants to classes that are accepted by FHIR as actors in procedures." - Value: ref(Practitioner) or ref(Organization) or ref(Patient) or ref(RelatedPerson) or ref(Device) -// inherited attributes: -// 0..1 ParticipationType // role -// 0..1 ParticipationPeriod -// 0..1 OnBehalfOf - - Element: OutputFinding - Description: "Patient findings documented during the performance of the procedure." - Value: ref(Finding) - - -EntryElement: ProcedureNotPerformed -Based on: ActionNotPerformed - ActionTopic is type ProcedureTopic - RelatedRequest value is type ref(ProcedureRequested) -0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason - -EntryElement: ProcedureRequested -Based on: ActionRequested - PriorityRank must be from http://hl7.org/fhir/ValueSet/request-priority // required - Status must be from http://hl7.org/fhir/ValueSet/request-status - ActionTopic is type ProcedureTopic - -EntryElement: ProcedureRequestedAgainst -Based on: ActionRequestedAgainst - ActionTopic is type ProcedureTopic - -EntryElement: SpecimenCollectionPerformed -Based on: ProcedurePerformed -0..1 AnatomicalLocation // FHIR limits Specimen.collection.bodySite to 0..1 - ActionTopic is type SpecimenCollectionTopic - -EntryElement: SpecimenCollectionRequested -Based on: ProcedureRequested - ActionTopic is type SpecimenCollectionTopic - -EntryElement: ImagingProcedurePerformed -Based on: ProcedurePerformed - ActionTopic is type ImagingProcedureTopic - -EntryElement: ImagingProcedureRequested -Based on: ProcedureRequested - ActionTopic is type ImagingProcedureTopic - -EntryElement: SurgicalProcedurePerformed -Based on: ProcedurePerformed - ActionTopic is type SurgicalProcedureTopic - -EntryElement: SurgicalProcedureRequested -Based on: ProcedureRequested - ActionTopic is type SurgicalProcedureTopic - -EntryElement: SurgicalProcedureNotPerformed -Based on: ProcedureNotPerformed - ActionTopic is type SurgicalProcedureTopic - -EntryElement: SurgicalProcedureRequestedAgainst -Based on: ProcedureRequestedAgainst - ActionTopic is type SurgicalProcedureTopic - -EntryElement: LaboratoryProcedurePerformed -Based on: ProcedurePerformed - ActionTopic is type LaboratoryProcedureTopic - -EntryElement: LaboratoryProcedureRequested -Based on: ProcedureRequested - ActionTopic is type LaboratoryProcedureTopic - - - diff --git a/spec/shr_procedure_map.txt b/spec/shr_procedure_map.txt index 82494478..e663b23c 100644 --- a/spec/shr_procedure_map.txt +++ b/spec/shr_procedure_map.txt @@ -4,14 +4,14 @@ Target: FHIR_STU_3 ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: - ProcedureTopic.TopicCode maps to code + TopicCode maps to code Patient maps to subject - ProcedureTopic.Category maps to category + Category maps to category constrain notDone to 0..0 constrain notDoneReason to 0..0 - ProcedureTopic.AnatomicalLocation maps to bodySite - ProcedureTopic.PartOf maps to partOf - ProcedureTopic.Annotation maps to note + AnatomicalLocation maps to bodySite + PartOf maps to partOf + Annotation maps to note Encounter maps to context Reason maps to reasonCode OccurrenceTimeOrPeriod maps to performed[x] @@ -29,15 +29,15 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: - ProcedureTopic.TopicCode maps to code + TopicCode maps to code Patient maps to subject - ProcedureTopic.Category maps to category + Category maps to category // TODO the following is causing a crash // fix notDone to true Reason maps to notDoneReason - ProcedureTopic.AnatomicalLocation maps to bodySite - ProcedureTopic.PartOf maps to partOf - ProcedureTopic.Annotation maps to note + AnatomicalLocation maps to bodySite +// PartOf maps to partOf + Annotation maps to note constrain performed[x] to 0..0 constrain performer to 0..0 fix status to http://hl7.org/fhir/event-status#suspended // FHIR is lacking a not-done status (see Gforge issue #14256) @@ -48,19 +48,19 @@ ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us constrain location to 0..0 SurgicalProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: - SurgicalProcedureTopic.DirectSite maps to http://hl7.org/fhir/StructureDefinition/procedure-targetBodySite - SurgicalProcedureTopic.IndirectSite maps to http://hl7.org/fhir/StructureDefinition/procedure-approachBodySite - SurgicalProcedureTopic.SurgicalApproach maps to http://hl7.org/fhir/StructureDefinition/procedure-approachBodySite + DirectSite maps to http://hl7.org/fhir/StructureDefinition/procedure-targetBodySite + IndirectSite maps to http://hl7.org/fhir/StructureDefinition/procedure-approachBodySite + SurgicalApproach maps to http://hl7.org/fhir/StructureDefinition/procedure-approachBodySite ProcedureRequested maps to ProcedureRequest: _Entry.CreationTime maps to authoredOn _Entry.SignedBy.Value.EntityOrRole maps to requester - ProcedureTopic.TopicCode maps to code - ProcedureTopic.Category maps to category + TopicCode maps to code + Category maps to category constrain doNotPerform to 0..0 Patient maps to subject - ProcedureTopic.AnatomicalLocation maps to bodySite + AnatomicalLocation maps to bodySite Encounter maps to context Reason maps to reasonCode Status maps to status @@ -75,9 +75,9 @@ ProcedureRequestedAgainst maps to ProcedureRequest: fix intent to http://hl7.org/fhir/request-intent#proposal _Entry.CreationTime maps to authoredOn _Entry.SignedBy.Value.EntityOrRole maps to requester - ProcedureTopic.TopicCode maps to code - ProcedureTopic.Category maps to category + TopicCode maps to code + Category maps to category Patient maps to subject - ProcedureTopic.AnatomicalLocation maps to bodySite + AnatomicalLocation maps to bodySite Reason maps to reasonCode // Encounter maps to context From be2ab0fcc1fb1c24f8e1dda61352accf90dda20b Mon Sep 17 00:00:00 2001 From: May Terry Date: Mon, 29 Oct 2018 23:12:09 -0400 Subject: [PATCH 077/289] added first pass at MedicationTreatmentRegimen --- spec/shr_intervention.txt | 72 +++++++++++++++++++++++++++++++++++- spec/shr_intervention_vs.txt | 20 ++++++++++ 2 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 spec/shr_intervention_vs.txt diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index f3eed923..3f35333d 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -1,13 +1,81 @@ Grammar: DataElement 5.0 Namespace: mcode Description: "SHR implementation of ASCO requirements." -Uses: shr.core, shr.base, shr.entity +Uses: shr.core, shr.base, shr.entity, shr.medication, shr.composition CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: UCUM = http://unitsofmeasure.org -CodeSystem: HGNC = http://www.genenames.org CodeSystem: CAP = https://sdt.cap.org CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category +CodeSystem: RXN = http://www.nlm.nih.gov/research/umls/rxnorm + +EntryElement: RegimenDrug +Based on: MedicationRequested +Description: "A medication that is part of a drug treatment regimen" +Concept: TBD#TBD "Regimen drug" // TODO: investigate whether we need a new code or use a drug concept. +// SpecificFocusOfFinding value is type TreatmentRegimen + TopicCode is TBD#TBD "Regimen drug" + +Element: TreatmentIntent +Based on: SimpleCodedNonLaboratoryObservation +Concept: SCT#395077000 "Treatment intent (situation)" // TODO: Needs a new LOINC number" +Description: "The intended result from a given treatment. Examples include curative, palliative, and supportive." +Value: CodeableConcept from TreatmentIntentVS + FindingTopicCode is SCT#395077000 "Treatment intent (situation)" +// SpecificFocusOfFinding value is type TreatmentRegimen +0..0 Device +0..0 FindingMethod +0..0 AnatomicalLocation + +Element: LineOfTherapy +Based on: SimpleCodedNonLaboratoryObservation +Description: "The sequence of therapies administered to a patient." +Concept: MTH#C133518 "Line of Therapy" // TODO: Need new LOINC and SNOMED codes +Value: CodeableConcept from LineOfTherapyVS + FindingTopicCode is MTH#C133518 "Line of Therapy" +// SpecificFocusOfFinding value is type TreatmentRegimen +0..0 Device +0..0 FindingMethod +0..0 AnatomicalLocation + +EntryElement: CancerTreatmentPlan +Based on: Composition +Description: "A detailed plan with information about a patient’s disease, the goal of treatment, the treatment options for the disease and possible side effects, and the expected length of treatment. (source: NCI Dictionary)" +Concept: LNC#80759-4 "Oncology Plan of care note" +1..1 Section is type MedicationTreatmentRegimenSection + +EntryElement: MedicationTreatmentRegimenSection +Concept: TBD#TBD +Based on: Section +Description: "Single section in the Oncology Treatment Plan." + InformationItem +includes 0..1 TreatmentIntent +includes 0..1 LineOfTherapy +includes 0..* RegimenDrug + +/* Taking out for now since Plan has not been defined + +EntryElement: MedicationRegimen // Definitional +// Concept: MTH#C0237125 // incorrect. This is the UMLS code for Medication Regimen +Concept: MTH#C15697 // this is the NCI Thesaurus code +Description: "Defines a specific application of over-the-counter and prescribed/recommended medications and infusions to meet guidelines for therapeutic action, safety, and schedule." +1..* MedicationUsePlanned // mlt_cmt: this should be made more generic to support multiple treatment types which includes radiotherapy and surgery therapy + +EntryElement: CancerTreatmentPlan +Based on: Composition +Description: "A detailed plan with information about a patient’s disease, the goal of treatment, the treatment options for the disease and possible side effects, and the expected length of treatment. (source: NCI Dictionary)" +Concept: LNC#80759-4 "Oncology Plan of care note" +1..1 Section is type TreatmentRegimenSection + +Element: TreatmentRegimenSection +Concept: TBD#TBD +Based on: Section +Description: "Single section in the Oncology Treatment Plan." + InformationItem +includes 0..1 TreatmentIntent +includes 0..1 LineOfTherapy +includes 0..* RegimenDrug +*/ diff --git a/spec/shr_intervention_vs.txt b/spec/shr_intervention_vs.txt new file mode 100644 index 00000000..bf3c61bf --- /dev/null +++ b/spec/shr_intervention_vs.txt @@ -0,0 +1,20 @@ +Grammar: ValueSet 5.0 +Namespace: mcode + +CodeSystem: LNC = http://loinc.org +CodeSystem: SCT = http://snomed.info/sct +CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: RXN = http://www.nlm.nih.gov/research/umls/rxnorm + +ValueSet: TreatmentIntentVS +Description: "The intended result from a given treatment. Examples include curative, palliative, and supportive." +SCT#373808002 "Curative - procedure intent (qualifier value)" +SCT#399707004 "Supportive - procedure intent (qualifier value)" +SCT#363676003 "Palliative - procedure intent (qualifier value)" + +ValueSet: LineOfTherapyVS +Description: "The sequence of therapies administered to a patient." +MTH#C45792 "First-Line Therapy" // TODO: Need new LOINC and SNOMED codes +MTH#C54350 "Second-Line Therapy" // TODO: Need new LOINC and SNOMED codes +MTH#C94628 "Third-Line Therapy" // TODO: Need new LOINC and SNOMED codes +MTH#C133522 "Fourth-Line Therapy" // TODO: Need new LOINC and SNOMED codes \ No newline at end of file From e7b35812dbeb9c7e0aa874e639d8145ee208bc13 Mon Sep 17 00:00:00 2001 From: May Terry Date: Mon, 29 Oct 2018 23:28:49 -0400 Subject: [PATCH 078/289] Update spec/shr_intervention.txt --- spec/shr_intervention.txt | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index 3f35333d..d8d62498 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -56,26 +56,4 @@ includes 0..1 TreatmentIntent includes 0..1 LineOfTherapy includes 0..* RegimenDrug -/* Taking out for now since Plan has not been defined - -EntryElement: MedicationRegimen // Definitional -// Concept: MTH#C0237125 // incorrect. This is the UMLS code for Medication Regimen -Concept: MTH#C15697 // this is the NCI Thesaurus code -Description: "Defines a specific application of over-the-counter and prescribed/recommended medications and infusions to meet guidelines for therapeutic action, safety, and schedule." -1..* MedicationUsePlanned // mlt_cmt: this should be made more generic to support multiple treatment types which includes radiotherapy and surgery therapy -EntryElement: CancerTreatmentPlan -Based on: Composition -Description: "A detailed plan with information about a patient’s disease, the goal of treatment, the treatment options for the disease and possible side effects, and the expected length of treatment. (source: NCI Dictionary)" -Concept: LNC#80759-4 "Oncology Plan of care note" -1..1 Section is type TreatmentRegimenSection - -Element: TreatmentRegimenSection -Concept: TBD#TBD -Based on: Section -Description: "Single section in the Oncology Treatment Plan." - InformationItem -includes 0..1 TreatmentIntent -includes 0..1 LineOfTherapy -includes 0..* RegimenDrug -*/ From 6297603c078e8d13c7cd5396266626a06520b287 Mon Sep 17 00:00:00 2001 From: May Terry Date: Tue, 30 Oct 2018 22:26:16 -0400 Subject: [PATCH 079/289] first pass of radiation, drug, and surgical procedure regimens --- .DS_Store | Bin 8196 -> 8196 bytes spec/shr_intervention.txt | 133 ++++++++++++++++++++++++++++------- spec/shr_intervention_vs.txt | 10 ++- spec/shr_medication_map.txt | 2 +- spec/shr_procedure_map.txt | 4 +- 5 files changed, 119 insertions(+), 30 deletions(-) diff --git a/.DS_Store b/.DS_Store index 425c8ca82549f81547ff7e2ae374a1010ae01fd4..b4911201f947272d6bf96416682bf82fb31b49ba 100644 GIT binary patch literal 8196 zcmeHMU2GIZ9G`z_%Pwo%X+c`H2ObtEfd+g1;7ft)wGhgORIa5Te3ZT0wcWV4d*1F{ zX-lXFc2^hFc2^hFmOLGfbVRUqy^sl!W!fO0|5hzk^%O72;;>t>f^XT{^-Dr9{~^x zv6&|`xy0cTp(I7fpA3>uHYXrK)7Rj*zXthaa^EqC*U7Gz@HiX6AJLzar`jv zP9Q2U$O8rf2Ie!s&hCZ8C23-iR>$@<(>5~P+0+f}a-!R`b!RB%WNqE$t_w#Rn#StFqmf9{wz}}v9g(pyS*lzg+0}kJH9RtUcI=t+A|~*k3#4pL zj2C7GsJlrkflFkar=zw8BJre?N^{4;YnNu(++3^pqET=;&&bbtM&xCRQljo}Kd}7Z zp?*rUu5r|`G|$W#ZJKAe{j|(QdfJnY-H|bJNJV$jv9c)}E#*ngN@lUM(PCL~b42t` zW*p1va9qY>gjWxjMvHs>oIYB(W`>ZaU{*0-D5_^MU>@BrIn$z z>o+~pv}1ScWEm~5SiVA0`jBedGoLh#OxKX9dxO22n>1|QvMmbPf z=3Z5+RJA9YFrUtv-Y~6^q{#|eUZ$*3!!o@hozO9o!;a2I)VW1nqpp*rfH zVK&sNN~eo4QB4v9Z?036&Zkfd)Wxazpb@1}rn=l^X$iyPZp~X2wL2$5q6cM(H|~5? zQG4*lr7#q?9O|%{xvNn%CeiECDK_^Z&Gn9?4g2n@_DNDNv$W{Cp-VMUw}apJn&?K3 zq(%TCHPL!er0m_an$(jRIY3U~P8lZW$ZO4bTXCU_Ts&BhUd)Kp*sj1_?-l1u1YK4LNugo`V7+hWl2_Ka~mrKe)0oynfS`#_hXe(*l@tyJsnKrVP3IgtWNq^0MN3pG28g zhgK^O<#)l{-O+_YHO@#(ZFK2m^(wV$?ZcrEWqOl%bwh1Pp@3UL=GD!$Xe~e+8(66i zHOMG@x`f-BniYi>q0nVv-Kjh#<0hbmVikLo774XZi-omK*(bB@NXdT^?Y~NPf_zVI zpFF}(?L@r-Rb_5il!Hx08d%Ctm8UB%A-dl&xxzbLs0 zf({s1EDS(lTf8lX(Ju5vWM}O#UZ?S5iS-*7$Xzg-^&tT3(|;IZIgDMIPt?b8f!KoS XfBz7`etib-|KR=4Rm>&0D6@Y6-M3RS literal 8196 zcmeHMTWl0n7(U-p%8VW86ly8U78gn_Xbo&BkgCA8U4aTpWm{S4e#tWoLFv zDJ6aL%9}TcQC>8fKKO#*?Mb8YLgKAT#KZ@~tCvI*HNN89PH)1EFI z=1*N|cOc`JyKUQ?ET=OE41F-AR(IHzn>H-H;5i$bP9{fs4NJ2J+wG#IIbJ(Sp^&+x z)Y{?Ut(%*ovF4VMrs!}i*0QxJx}`NXG9pXM8)Dl!`*TC5hEI>2IVa`>e_vpgGv;`H z>I5|>Yi4MO+<0=<=CN2ZYv=NwW7&se({xU$L)>VDUZ04_wTXzxw^S&L!@G8O)+l>Y z>e3QTc3<8#Y|A;I7aYQrTIo=LIE zM^-o7v7x1PTl;vWTD4TER%&`nhGS$*y=TzS+<}8>C#zeUVI4a}Yhby?BZgj(tI#BO zTj`uWzErKMtX&Zf_Z2h7iK5{Ssr8cN)z+;FD@Qcy@&Q}pUYh!bBzu}QtHR;KT+>m| zDc5|5+Z)45x5G!4_6_fBQk3rFLby$yPY{w47(TNAqg@>>ohtZD=ve1x&g*;AR5TkeuPvA*Bg=g?0Ucv>u zhBxsx-od;00H5J=e1R|V9j@a?{3J#fn&AE3iIEG$?}YzQ+$s4NbD^hiOykJTUAt?P z`)^(vf4hWpcUkqVHOr$7>+fpbdT-n0+Rs?L(@sTBwW0J?k}*wGz=wmApr#F;XGZ3m|ljktRt}LqfA55|fGX>Vol=E5fy# zS`JioWu}@aT;gvC?5BCdKS;(Ih@0JynvVS z3SK3~j^QFM;W9DzExdg+d4*d6YmSx&vRKI=3mRt|M$&(|3A;86ih#e!2de}C`%+0?KH=^ z_C|izj#BEU#D&|93iMnkn|2XE&yzn4sT?I!?i2TMR3O!m{O1<|!S_G-{(H=u-`U?T Cc1%P7 diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index d8d62498..6ead1376 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: mcode Description: "SHR implementation of ASCO requirements." -Uses: shr.core, shr.base, shr.entity, shr.medication, shr.composition +Uses: shr.core, shr.base, shr.entity, shr.medication, shr.composition, shr.procedure CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org @@ -12,12 +12,49 @@ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category CodeSystem: RXN = http://www.nlm.nih.gov/research/umls/rxnorm -EntryElement: RegimenDrug -Based on: MedicationRequested +EntryElement: MedicationTreatmentPerformed +Based on: MedicationStatement // the therapy itself could be a procedure. Description: "A medication that is part of a drug treatment regimen" -Concept: TBD#TBD "Regimen drug" // TODO: investigate whether we need a new code or use a drug concept. +Concept: SCT#416608005 "Drug therapy (procedure)" // TODO: investigate whether we need a new code or use a drug concept. +Value: CodeableConcept from http://www.nlm.nih.gov/research/umls/rxnorm // SpecificFocusOfFinding value is type TreatmentRegimen - TopicCode is TBD#TBD "Regimen drug" + TopicCode is SCT#416608005 "Drug therapy (procedure)" + 0..1 TreatmentIntent + 0..1 LineOfTherapy + 0..1 RegimenIdentifier + 0..1 RegimenName + 0..1 RegimenStartDate + 0..1 RegimenStopDate + +EntryElement: RadiationTreatmentPerformed +Based on: ProcedurePerformed +Description: "A medication that is part of a radiation oncology related regimen" +Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" +// SpecificFocusOfFinding value is type TreatmentRegimen + TopicCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" + 0..1 TreatmentIntent + 0..1 LineOfTherapy + 0..1 RegimenIdentifier + 0..1 RegimenName + 0..1 RegimenStartDate // equivalent to ASTRO Treatment Start Date + 0..1 RegimenStopDate // equivalent to ASTRO Treatment End Date + 0..1 RadiationModality + 0..1 RadiationDosePerFraction + 0..1 RadiationFractionsDelivered + 0..1 TotalRadiationDoseDelivered + +EntryElement: SurgicalTreatmentPerformed +Based on: SurgicalProcedurePerformed +Description: "A medication that is part of a drug treatment regimen" +Concept: SCT#387713003 "Surgical procedure (procedure)" +// SpecificFocusOfFinding value is type TreatmentRegimen + TopicCode is SCT#387713003 "Surgical procedure (procedure)" + 0..1 TreatmentIntent + 0..1 LineOfTherapy + 0..1 RegimenIdentifier + 0..1 RegimenName + 0..1 RegimenStartDate + 0..1 RegimenStopDate Element: TreatmentIntent Based on: SimpleCodedNonLaboratoryObservation @@ -26,9 +63,10 @@ Description: "The intended result from a given treatment. Examples include cura Value: CodeableConcept from TreatmentIntentVS FindingTopicCode is SCT#395077000 "Treatment intent (situation)" // SpecificFocusOfFinding value is type TreatmentRegimen -0..0 Device -0..0 FindingMethod -0..0 AnatomicalLocation + 0..0 Media + 0..0 Device + 0..0 FindingMethod + 0..0 AnatomicalLocation Element: LineOfTherapy Based on: SimpleCodedNonLaboratoryObservation @@ -37,23 +75,66 @@ Concept: MTH#C133518 "Line of Therapy" // TODO: Need new LOINC and SNOMED code Value: CodeableConcept from LineOfTherapyVS FindingTopicCode is MTH#C133518 "Line of Therapy" // SpecificFocusOfFinding value is type TreatmentRegimen -0..0 Device -0..0 FindingMethod -0..0 AnatomicalLocation - -EntryElement: CancerTreatmentPlan -Based on: Composition -Description: "A detailed plan with information about a patient’s disease, the goal of treatment, the treatment options for the disease and possible side effects, and the expected length of treatment. (source: NCI Dictionary)" -Concept: LNC#80759-4 "Oncology Plan of care note" -1..1 Section is type MedicationTreatmentRegimenSection - -EntryElement: MedicationTreatmentRegimenSection -Concept: TBD#TBD -Based on: Section -Description: "Single section in the Oncology Treatment Plan." - InformationItem -includes 0..1 TreatmentIntent -includes 0..1 LineOfTherapy -includes 0..* RegimenDrug + 0..0 Media + 0..0 Device + 0..0 FindingMethod + 0..0 AnatomicalLocation + +Element: RegimenIdentifier +Based on: ObjectIdentifier +Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes +Description: "A unique identifier assigned to a regimen - a treatment plan that specifies the dosage, the schedule, and the duration of treatment. (source: NCI Dictionary)" + +Element: RegimenName +Based on: ObjectIdentifier +Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes +Description: "The name of the regimen - a treatment plan that specifies the dosage, the schedule, and the duration of treatment. (source: NCI Dictionary)" + +Element: RegimenStartDate +Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes +Description: "The date that the treatment regimen began." +Value: date + +Element: RegimenStopDate +Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes +Description: "The date that the treatment regimen began." +Value: date + +Element: RadiationModality +Based on: SimpleCodedNonLaboratoryObservation +Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" +Description: "A specific manner, characteristic, pattern of application or the employment of, a method of treatment involving radiation, especially involving the physical treatment of a condition." +Value: CodeableConcept from RadiationModalityVS + FindingTopicCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" + +Element: RadiationDosePerFraction +Based on: SimpleNonLaboratoryObservation +Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes +Description: "The total number of treatment sessions (fractions) administered during a course of radiation therapy therapy. A fraction is a portion of the total radiation dose, delivered as a series of treatments that make up the full course of radiotherapy. (source: LOINC)" +Value: Ratio + FindingTopicCode is TBD#TBD + 0..0 Media + 0..0 Device + 0..0 FindingMethod + 0..0 AnatomicalLocation +Element: RadiationFractionsDelivered +Based on: SimpleNonLaboratoryObservation +Concept: LNC#21959-2 "Number of radiation treatment" +Description: "The total number of treatment sessions (fractions) administered during a course of radiation therapy therapy. A fraction is a portion of the total radiation dose, delivered as a series of treatments that make up the full course of radiotherapy. (source: LOINC)" +Value: Quantity + 0..0 Media + 0..0 Device + 0..0 FindingMethod + 0..0 AnatomicalLocation +Element: TotalRadiationDoseDelivered +Based on: SimpleNonLaboratoryObservation +Concept: SCT#445461008 "Total radiation dose delivered (observable entity)" +Description: "The total amount of radiation dose delivered for the course of therapy. (source: SNOMED, ASTRO)" +Value: Quantity with units UCUM#Gy + FindingTopicCode is SCT#445461008 "Total radiation dose delivered (observable entity)" + 0..0 Media + 0..0 Device + 0..0 FindingMethod + 0..0 AnatomicalLocation diff --git a/spec/shr_intervention_vs.txt b/spec/shr_intervention_vs.txt index bf3c61bf..6d013db7 100644 --- a/spec/shr_intervention_vs.txt +++ b/spec/shr_intervention_vs.txt @@ -17,4 +17,12 @@ Description: "The sequence of therapies administered to a patient." MTH#C45792 "First-Line Therapy" // TODO: Need new LOINC and SNOMED codes MTH#C54350 "Second-Line Therapy" // TODO: Need new LOINC and SNOMED codes MTH#C94628 "Third-Line Therapy" // TODO: Need new LOINC and SNOMED codes -MTH#C133522 "Fourth-Line Therapy" // TODO: Need new LOINC and SNOMED codes \ No newline at end of file +MTH#C133522 "Fourth-Line Therapy" // TODO: Need new LOINC and SNOMED codes + +ValueSet: SurgicalProcedureVS +Description: "Surgical procedure (procedure)" +Includes codes descending from SCT#387713003 "Surgical procedure (procedure)" + +ValueSet: RadiationModalityVS +Description: "Radiation oncology AND/OR radiotherapy (procedure)" +Includes codes descending from SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" diff --git a/spec/shr_medication_map.txt b/spec/shr_medication_map.txt index 7bc0f117..28227bef 100644 --- a/spec/shr_medication_map.txt +++ b/spec/shr_medication_map.txt @@ -15,7 +15,7 @@ Dosage maps to Dosage: MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: // SourceOfInformation.Value maps to informationSource - _Entry.CreationTime maps to dateAsserted // however, date asserted and date recorded may not be the same +// _Entry.CreationTime maps to dateAsserted // however, date asserted and date recorded may not be the same constrain reasonNotTaken to 0..0 constrain dosage to 0..1 Dosage maps to dosage diff --git a/spec/shr_procedure_map.txt b/spec/shr_procedure_map.txt index e663b23c..8b57c544 100644 --- a/spec/shr_procedure_map.txt +++ b/spec/shr_procedure_map.txt @@ -54,8 +54,8 @@ SurgicalProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefiniti ProcedureRequested maps to ProcedureRequest: - _Entry.CreationTime maps to authoredOn - _Entry.SignedBy.Value.EntityOrRole maps to requester +// _Entry.CreationTime maps to authoredOn +// _Entry.SignedBy.Value.EntityOrRole maps to requester TopicCode maps to code Category maps to category constrain doNotPerform to 0..0 From 043d2b1146e0f7f5bfdd24b98116e5f71ea9947c Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 31 Oct 2018 09:42:05 -0400 Subject: [PATCH 080/289] Cardinality changes in Dosage and other minor changes --- spec/shr_base_finding.txt | 9 ++++++--- spec/shr_composition.txt | 3 ++- spec/shr_entity.txt | 8 ++++++-- spec/shr_entity_map.txt | 2 +- spec/shr_medication.txt | 8 ++++---- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 5d24352d..a15a121a 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -6,10 +6,13 @@ Uses: shr.core, shr.entity, shr.encounter Abstract Element: NonIndependentFinding Based on: InformationItem -Description: "A finding that is part of another finding, does not or cannot stand alone." +Description: "A finding that does not or cannot stand alone, or a component of another finding." Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) // exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 -1..1 FindingTopicCode +// should we have finding protocol, finding precondition, finding question, finding data, finding interpretation? +// how do we handle normal? (physical exam normal) +// exclusions? +1..1 FindingTopicCode // Question, test name, or assertion 0..1 ExceptionValue 0..1 ReferenceRange // included here because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. @@ -95,7 +98,7 @@ For an Observation, the FindingTopicCode describes the aspect or property of the Element: Observer Concept: MTH#C0449416 Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." - Value: ref(InformationItem) //string or ref(Practitioner) or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) + Value: ref(EntityOrRole) //string or ref(Practitioner) or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) 0..1 RelationshipToPersonOfRecord Element: RelationshipToPersonOfRecord diff --git a/spec/shr_composition.txt b/spec/shr_composition.txt index 4dcc97a2..015b2b41 100644 --- a/spec/shr_composition.txt +++ b/spec/shr_composition.txt @@ -5,13 +5,14 @@ Uses: shr.base EntryElement: Composition Based on: InformationItem -Description: "A composition represents a document such as an extract from a patient record, a knowledge artifact, or a catalog definition." +Description: "A composition represents a set of Entries sharing common provenance, adocument such as an extract from a patient record, a knowledge artifact, or a catalog definition." //1..1 Status from http://hl7.org/fhir/ValueSet/composition-status //1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes //1..1 CreationTime -- from Entry -- maps to date 0..* Section Element: Section + Based on: InformationItem Description: "Represents a section containing entries in a composition." //0..1 Title 0..* InformationItem diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index c7b50c65..6835ee75 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -130,15 +130,19 @@ Description: "A set of entities (personnel, material, or places) to be considere Element: GroupCharacteristic Concept: MTH#C0599755 - Description: "An inclusion or exclusion criterion as part of defining a cohort. If the criterion is an unary, then TopicCode must be SCT#385432009 (not applicable)" - Value: boolean or Quantity or Range + Description: "An inclusion or exclusion criterion as part of defining a cohort." 1..1 GroupCharacteristicCode + 0..1 GroupCharacteristicValue 1..1 ExcludeFlag 0..1 TimePeriod Element: GroupCharacteristicCode Description: "A code describing the characteristic present, absent, or having a value in this group." Value: CodeableConcept + + Element: GroupCharacteristicValue + Description: "The value or range of the characteristic." + Value: boolean or Quantity or Range Element: ExcludeFlag Concept: MTH#C0680251 diff --git a/spec/shr_entity_map.txt b/spec/shr_entity_map.txt index abeefb53..ffe14c9e 100644 --- a/spec/shr_entity_map.txt +++ b/spec/shr_entity_map.txt @@ -65,7 +65,7 @@ Group maps to Group: Actual maps to actual constrain code to 0..0 Title maps to name - GroupCharacteristic maps to characteristic.value[x] + GroupCharacteristic.GroupCharacteristicValue maps to characteristic.value[x] GroupCharacteristic.GroupCharacteristicCode maps to characteristic.code GroupCharacteristic.ExcludeFlag maps to characteristic.exclude GroupCharacteristic.TimePeriod maps to characteristic.period diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index bd1627db..18e1e2d0 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -13,9 +13,9 @@ Description: "Defines a specific application of over-the-counter and prescribed/ Element: Dosage Concept: MTH#C0178602 Description: "The dosage of the medication. The data structure is flexible and can describe a dosage prescribed, administered, or reported." -1..1 DoseAmount -1..1 TimingOfDoses -1..1 AsNeededIndicator +0..1 DoseAmount +0..1 TimingOfDoses +0..1 AsNeededIndicator 0..1 DosageInstructionsText 0..* AdditionalDosageInstruction from http://hl7.org/fhir/ValueSet/additional-instruction-codes 0..1 RouteIntoBody from http://hl7.org/fhir/ValueSet/route-codes @@ -172,7 +172,7 @@ EntryElement: MedicationChange Based on: ActionPerformed Concept: MTH#C0554834 Description: "Description of a modification or change of a medication or dosage." -1..1 Type from MedicationChangeTypeVS //"Whether the change is a dose change, switch to a new medication, or discontinuation." + TopicCode from MedicationChangeTypeVS //"Whether the change is a dose change, switch to a new medication, or discontinuation." 0..* MedicationBeforeChange //might be more than one 0..* MedicationAfterChange Reason from MedicationChangeReasonVS // why was the medication changed? From a223ac9ad6ec36ebc8c6d467b25e415742ff57eb Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 31 Oct 2018 09:56:02 -0400 Subject: [PATCH 081/289] Simplified TreatmentIntent, etc. to element --- spec/shr_intervention.txt | 37 ++----------------------------------- 1 file changed, 2 insertions(+), 35 deletions(-) diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index 6ead1376..5735f5d1 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -57,38 +57,24 @@ Concept: SCT#387713003 "Surgical procedure (procedure)" 0..1 RegimenStopDate Element: TreatmentIntent -Based on: SimpleCodedNonLaboratoryObservation Concept: SCT#395077000 "Treatment intent (situation)" // TODO: Needs a new LOINC number" Description: "The intended result from a given treatment. Examples include curative, palliative, and supportive." Value: CodeableConcept from TreatmentIntentVS - FindingTopicCode is SCT#395077000 "Treatment intent (situation)" -// SpecificFocusOfFinding value is type TreatmentRegimen - 0..0 Media - 0..0 Device - 0..0 FindingMethod - 0..0 AnatomicalLocation Element: LineOfTherapy -Based on: SimpleCodedNonLaboratoryObservation Description: "The sequence of therapies administered to a patient." Concept: MTH#C133518 "Line of Therapy" // TODO: Need new LOINC and SNOMED codes Value: CodeableConcept from LineOfTherapyVS - FindingTopicCode is MTH#C133518 "Line of Therapy" -// SpecificFocusOfFinding value is type TreatmentRegimen - 0..0 Media - 0..0 Device - 0..0 FindingMethod - 0..0 AnatomicalLocation Element: RegimenIdentifier -Based on: ObjectIdentifier Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes Description: "A unique identifier assigned to a regimen - a treatment plan that specifies the dosage, the schedule, and the duration of treatment. (source: NCI Dictionary)" +Value: string // CodeableConcept? Element: RegimenName -Based on: ObjectIdentifier Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes Description: "The name of the regimen - a treatment plan that specifies the dosage, the schedule, and the duration of treatment. (source: NCI Dictionary)" +Value: string Element: RegimenStartDate Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes @@ -101,40 +87,21 @@ Description: "The date that the treatment regimen began." Value: date Element: RadiationModality -Based on: SimpleCodedNonLaboratoryObservation Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" Description: "A specific manner, characteristic, pattern of application or the employment of, a method of treatment involving radiation, especially involving the physical treatment of a condition." Value: CodeableConcept from RadiationModalityVS - FindingTopicCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" Element: RadiationDosePerFraction -Based on: SimpleNonLaboratoryObservation Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes Description: "The total number of treatment sessions (fractions) administered during a course of radiation therapy therapy. A fraction is a portion of the total radiation dose, delivered as a series of treatments that make up the full course of radiotherapy. (source: LOINC)" Value: Ratio - FindingTopicCode is TBD#TBD - 0..0 Media - 0..0 Device - 0..0 FindingMethod - 0..0 AnatomicalLocation Element: RadiationFractionsDelivered -Based on: SimpleNonLaboratoryObservation Concept: LNC#21959-2 "Number of radiation treatment" Description: "The total number of treatment sessions (fractions) administered during a course of radiation therapy therapy. A fraction is a portion of the total radiation dose, delivered as a series of treatments that make up the full course of radiotherapy. (source: LOINC)" Value: Quantity - 0..0 Media - 0..0 Device - 0..0 FindingMethod - 0..0 AnatomicalLocation Element: TotalRadiationDoseDelivered -Based on: SimpleNonLaboratoryObservation Concept: SCT#445461008 "Total radiation dose delivered (observable entity)" Description: "The total amount of radiation dose delivered for the course of therapy. (source: SNOMED, ASTRO)" Value: Quantity with units UCUM#Gy - FindingTopicCode is SCT#445461008 "Total radiation dose delivered (observable entity)" - 0..0 Media - 0..0 Device - 0..0 FindingMethod - 0..0 AnatomicalLocation From 210e45be01235af80dfd2f462278cf01cd19fd30 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sun, 4 Nov 2018 14:29:11 -0500 Subject: [PATCH 082/289] Changes to differentiate Element and Cluster --- spec/shr_base_action.txt | 22 ++++++----- spec/shr_base_finding.txt | 2 +- spec/shr_encounter.txt | 2 +- spec/shr_encounter_map.txt | 8 ++-- spec/shr_entity.txt | 3 +- spec/shr_entity_map.txt | 2 +- spec/shr_intervention.txt | 72 +++++++++++++----------------------- spec/shr_intervention_vs.txt | 10 +---- spec/shr_medication.txt | 7 ++-- spec/shr_oncologycore.txt | 1 + spec/shr_procedure.txt | 14 +++---- spec/shr_procedure_map.txt | 8 ++-- spec/shr_procedure_vs.txt | 20 ++++++++++ 13 files changed, 82 insertions(+), 89 deletions(-) create mode 100644 spec/shr_procedure_vs.txt diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index bbe1c985..e8775c93 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -28,7 +28,7 @@ Abstract Element: ActionPerformed Based on: ActionStatement Description: "Abstract class representing performance of any type of action." 1..1 OccurrenceTimeOrPeriod // when the action took place -0..* Participant +0..* Participation 1..1 Status should be from http://hl7.org/fhir/ValueSet/event-status 0..1 Method 0..* RelatedRequest @@ -36,14 +36,19 @@ Description: "Abstract class representing performance of any type of action." 0..1 ref(Facility) 0..1 Outcome // e.g., AdverseEvent - Element: Participant - Concept: MTH#C1550369 - Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." - Value: ref(EntityOrRole) + Element: Participation + Concept: TBD + Description: "Record of someone or something involvement in an activity." + 0..1 Participant 0..1 ParticipationType // role 0..1 ParticipationPeriod 0..1 OnBehalfOf + Element: Participant + Concept: MTH#C1550369 + Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." + Value: ref(EntityOrRole) + Element: ParticipationType Concept: MTH#C1553854 Description: "The role played by the participant engaged in the action, for example, as the attending physician, surgical assistant, etc." @@ -62,20 +67,19 @@ Description: "Abstract class representing performance of any type of action." Element: RelatedRequest Concept: TBD Description: "The proposal, order, or plan that is partly or wholly fulfilled by the performance of this act." - Value: ref(ActionRequested) - + Value: ref(ActionRequested) + /* Element: EnactsPlan Concept: TBD Description: "The plan that is partly or wholly enacted by the performance of this act." Value: ref(ActionRequested) */ - + Element: Outcome Concept: TBD Description: "The result of performing an action or behavior, for example, an adverse reaction or new finding." Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/procedure-outcome - 0..* ref(Finding) Abstract Element: ActionRequested diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index a15a121a..f630324c 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -7,7 +7,7 @@ Uses: shr.core, shr.entity, shr.encounter Abstract Element: NonIndependentFinding Based on: InformationItem Description: "A finding that does not or cannot stand alone, or a component of another finding." -Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) +Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) // exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 // should we have finding protocol, finding precondition, finding question, finding data, finding interpretation? // how do we handle normal? (physical exam normal) diff --git a/spec/shr_encounter.txt b/spec/shr_encounter.txt index 9c428cc8..863832b1 100644 --- a/spec/shr_encounter.txt +++ b/spec/shr_encounter.txt @@ -127,7 +127,7 @@ Description: "Cxntext for encounters performed." Reason should be from http://hl7.org/fhir/ValueSet/encounter-reason // RelatedRequest value is type ref(EncounterRequested) // RelatedPlan is type EncounterPlanned - Participant.Entity is type PractitionerOrRelatedPerson + Participation.Participant is type PractitionerOrRelatedPerson 0..* ServiceGiven 0..1 ServiceProvider diff --git a/spec/shr_encounter_map.txt b/spec/shr_encounter_map.txt index 5ac1569e..cc3b6ab2 100644 --- a/spec/shr_encounter_map.txt +++ b/spec/shr_encounter_map.txt @@ -9,11 +9,11 @@ Encounter maps to Encounter: // ServiceProvider maps to serviceProvider Status maps to status TimePeriod maps to period -// Participant maps to participant -// Participant.Entity maps to participant.individual +// Participation.Participant maps to participant +// Participation.Participant[Entity] maps to participant.individual ??? // constrain participant.type to 0..1 -// Participant.ParticipationType maps to participant.type -// Participant.ParticipationPeriod maps to participant.period +// Participation.Participant.ParticipationType maps to participant.type +// Participation.Participant.ParticipationPeriod maps to participant.period // RelatedRequest.Value maps to incomingReferral // constrain location to 0..1 // Facility maps to location.location diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 6835ee75..b0538abe 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -70,9 +70,9 @@ Description: "A person who practices a healing art." Value: Organization Element: NationalProviderIdentifier - Based on: Identifier Concept: MTH#C1549728 Description: "A unique 10 digit number to allow US healthcare providers to identify themselves in a standard way throughout the healthcare industry." + Value: Identifier Element: Qualification Concept: MTH#C0037778 @@ -598,7 +598,6 @@ Description: "A specimen is a substance, physical object, or collection of objec Value: CodeableConcept EntryElement: SpecimenTreatment -// Based on: ProcedurePerformed Concept: TBD Description: "Treatment performed on the specimen." 0..* Additive diff --git a/spec/shr_entity_map.txt b/spec/shr_entity_map.txt index ffe14c9e..2bc18811 100644 --- a/spec/shr_entity_map.txt +++ b/spec/shr_entity_map.txt @@ -115,7 +115,7 @@ Specimen maps to Specimen: // SpecimenCollectionPerformed.AmountOrSize maps to collection.quantity // SpecimenCollectionPerformed.BodySite maps to collection.bodySite // SpecimenCollectionPerformed.OccurrenceTimeOrPeriod maps to collection.collected[x] -// SpecimenCollectionPerformed.Participant.Entity maps to collection.collector +// SpecimenCollectionPerformed.Participation.Participant maps to collection.collector // SpecimenCollectionPerformed.Method maps to collection.method // SpecimenCollectionPerformed.RelatedRequest.Value maps to request SpecimenContainer.Identifier maps to container.identifier diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index 5735f5d1..cafce356 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -12,59 +12,25 @@ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category CodeSystem: RXN = http://www.nlm.nih.gov/research/umls/rxnorm -EntryElement: MedicationTreatmentPerformed -Based on: MedicationStatement // the therapy itself could be a procedure. -Description: "A medication that is part of a drug treatment regimen" -Concept: SCT#416608005 "Drug therapy (procedure)" // TODO: investigate whether we need a new code or use a drug concept. -Value: CodeableConcept from http://www.nlm.nih.gov/research/umls/rxnorm -// SpecificFocusOfFinding value is type TreatmentRegimen - TopicCode is SCT#416608005 "Drug therapy (procedure)" - 0..1 TreatmentIntent - 0..1 LineOfTherapy - 0..1 RegimenIdentifier - 0..1 RegimenName - 0..1 RegimenStartDate - 0..1 RegimenStopDate -EntryElement: RadiationTreatmentPerformed +EntryElement: CourseOfTreatment Based on: ProcedurePerformed -Description: "A medication that is part of a radiation oncology related regimen" -Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" -// SpecificFocusOfFinding value is type TreatmentRegimen - TopicCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - 0..1 TreatmentIntent +Description: "A series of interventions, typically grouped in time and including several medications, tests, and/or procedures. A course of treatment may follow (with possible deviation) from a predetermined regimen, which provides a set of orders that result in instances of ProcedurePerformed, MedicationStatement, or MedicationAdministration. If the course of treatment is based on a known or defined regimen, the regimen name should be put into the TopicCode, and the start and stop dates recorded in the OccurrenceTimeOrPeriod. External identifiers for the regimen should be put into the Identifier." + 0..* TreatmentIntent 0..1 LineOfTherapy - 0..1 RegimenIdentifier - 0..1 RegimenName - 0..1 RegimenStartDate // equivalent to ASTRO Treatment Start Date - 0..1 RegimenStopDate // equivalent to ASTRO Treatment End Date - 0..1 RadiationModality - 0..1 RadiationDosePerFraction - 0..1 RadiationFractionsDelivered - 0..1 TotalRadiationDoseDelivered + 0..* ActionPerformed -EntryElement: SurgicalTreatmentPerformed -Based on: SurgicalProcedurePerformed -Description: "A medication that is part of a drug treatment regimen" -Concept: SCT#387713003 "Surgical procedure (procedure)" -// SpecificFocusOfFinding value is type TreatmentRegimen - TopicCode is SCT#387713003 "Surgical procedure (procedure)" - 0..1 TreatmentIntent - 0..1 LineOfTherapy - 0..1 RegimenIdentifier - 0..1 RegimenName - 0..1 RegimenStartDate - 0..1 RegimenStopDate + Element: TreatmentIntent + Concept: SCT#395077000 "Treatment intent (situation)" // TODO: Needs a new LOINC number" + Description: "The intended result from a given treatment. Examples include curative, diagnostic, palliative, and supportive." + Value: CodeableConcept from ActionIntentVS -Element: TreatmentIntent -Concept: SCT#395077000 "Treatment intent (situation)" // TODO: Needs a new LOINC number" -Description: "The intended result from a given treatment. Examples include curative, palliative, and supportive." -Value: CodeableConcept from TreatmentIntentVS + Element: LineOfTherapy + Description: "The sequence of therapies administered to a patient." + Concept: MTH#C133518 "Line of Therapy" // TODO: Need new LOINC and SNOMED codes + Value: CodeableConcept from LineOfTherapyVS -Element: LineOfTherapy -Description: "The sequence of therapies administered to a patient." -Concept: MTH#C133518 "Line of Therapy" // TODO: Need new LOINC and SNOMED codes -Value: CodeableConcept from LineOfTherapyVS +/* Element: RegimenIdentifier Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes @@ -85,6 +51,18 @@ Element: RegimenStopDate Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes Description: "The date that the treatment regimen began." Value: date +*/ + +EntryElement: RadiationTreatmentPerformed +Based on: ProcedurePerformed +Description: "A radiation oncology procedure. If the treatment is part of a course of treatment, the PartOf attribute should indicate the CourseOfTreatment." +Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" + TopicCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" + 0..1 RadiationModality + 0..1 RadiationDosePerFraction + 0..1 RadiationFractionsDelivered + 0..1 TotalRadiationDoseDelivered + Element: RadiationModality Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" diff --git a/spec/shr_intervention_vs.txt b/spec/shr_intervention_vs.txt index 6d013db7..1fc6c789 100644 --- a/spec/shr_intervention_vs.txt +++ b/spec/shr_intervention_vs.txt @@ -6,11 +6,7 @@ CodeSystem: SCT = http://snomed.info/sct CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: RXN = http://www.nlm.nih.gov/research/umls/rxnorm -ValueSet: TreatmentIntentVS -Description: "The intended result from a given treatment. Examples include curative, palliative, and supportive." -SCT#373808002 "Curative - procedure intent (qualifier value)" -SCT#399707004 "Supportive - procedure intent (qualifier value)" -SCT#363676003 "Palliative - procedure intent (qualifier value)" + ValueSet: LineOfTherapyVS Description: "The sequence of therapies administered to a patient." @@ -19,9 +15,7 @@ MTH#C54350 "Second-Line Therapy" // TODO: Need new LOINC and SNOMED c MTH#C94628 "Third-Line Therapy" // TODO: Need new LOINC and SNOMED codes MTH#C133522 "Fourth-Line Therapy" // TODO: Need new LOINC and SNOMED codes -ValueSet: SurgicalProcedureVS -Description: "Surgical procedure (procedure)" -Includes codes descending from SCT#387713003 "Surgical procedure (procedure)" + ValueSet: RadiationModalityVS Description: "Radiation oncology AND/OR radiotherapy (procedure)" diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 18e1e2d0..ebd1df2a 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -66,9 +66,10 @@ Description: "The dosage of the medication. The data structure is flexible and c EntryElement: MedicationStatement Based on: ActionPerformed -Concept: TBD -Description: "A record of the use of a medication." +Concept: SCT#416608005 "Drug therapy (procedure)" // TODO: investigate whether we need a new code or use a drug concept. +Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." // SourceOfInformation value is type AnyPersonOrOrganization + TopicCode is SCT#416608005 "Drug therapy (procedure)" 1..1 Medication 0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category @@ -79,7 +80,7 @@ Description: "A record of the use of a medication." EntryElement: MedicationAdministered Based on: ActionPerformed Concept: TBD -Description: "A record of the use of a medication." +Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." // SourceOfInformation value is type AnyPersonOrOrganization 1..1 Medication 0..1 Dosage diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 092068b5..61dc050f 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -27,6 +27,7 @@ Based on: CodedNonLaboratoryObservation Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" Concept: SCT#86049000 "Malignant neoplasm, primary (morphologic abnormality)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." Value: CodeableConcept from CancerHistologicTypeVS +// FindingValue from FindingTopicCode is SCT#86049000 "Malignant neoplasm, primary (morphologic abnormality)" EntryElement: CancerHistologicGrade diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index e80fa1ad..54ff9921 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -6,7 +6,6 @@ Uses: shr.core, shr.base, shr.entity CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category - EntryElement: ProcedurePerformed Based on: ActionPerformed Description: "A procedure that has been performed." @@ -22,10 +21,10 @@ Description: "A procedure that has been performed." 0..* Indication 0..* ref(Device) 0..1 Location - Participant.OnBehalfOf value is type ref(Organization) + Participation.OnBehalfOf value is type ref(Organization) Status must be from http://hl7.org/fhir/ValueSet/event-status -// Participant.EntityOrRole is type ref(Practitioner) - Participant is type FHIRProcedureParticipant +// Participation.Participant.EntityOrRole is type ref(Practitioner) + Participation.Participant is type FHIRProcedureParticipant RelatedRequest value is type ref(ProcedureRequested) 0..* OutputFinding // in CIMI, this is part of ProcedureTopic, but the definition hinges on performance, so it belongs here, not there. @@ -39,12 +38,8 @@ Description: "A procedure that has been performed." Element: FHIRProcedureParticipant Based on: Participant - Description: "Constraints participants to classes that are accepted by FHIR as actors in procedures." + Description: "Constraints participants to classes that are accepted by FHIR as actors in procedures in STU 3." Value: ref(Practitioner) or ref(Organization) or ref(Patient) or ref(RelatedPerson) or ref(Device) -// inherited attributes: -// 0..1 ParticipationType // role -// 0..1 ParticipationPeriod -// 0..1 OnBehalfOf Element: OutputFinding Description: "Patient findings documented during the performance of the procedure." @@ -114,6 +109,7 @@ Element: SurgicalProcedurePerformed Based on: ProcedurePerformed Concept: TBD Description: "A surgical action, independent of action context." + TopicCode from SurgicalProcedureVS 0..* DirectSite 0..* DirectSiteCode 0..* IndirectSite diff --git a/spec/shr_procedure_map.txt b/spec/shr_procedure_map.txt index 8b57c544..0677c3fd 100644 --- a/spec/shr_procedure_map.txt +++ b/spec/shr_procedure_map.txt @@ -15,10 +15,10 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Encounter maps to context Reason maps to reasonCode OccurrenceTimeOrPeriod maps to performed[x] - FHIRProcedureParticipant maps to performer - FHIRProcedureParticipant.Value maps to performer.actor - FHIRProcedureParticipant.ParticipationType maps to performer.role - FHIRProcedureParticipant.OnBehalfOf maps to performer.onBehalfOf +// Participation.FHIRProcedureParticipant maps to performer + Participation.Participant maps to performer.actor + Participation.ParticipationType maps to performer.role + Participation.OnBehalfOf maps to performer.onBehalfOf Status maps to status // TODO The following statement is failing it might be a bug // Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method diff --git a/spec/shr_procedure_vs.txt b/spec/shr_procedure_vs.txt new file mode 100644 index 00000000..08321020 --- /dev/null +++ b/spec/shr_procedure_vs.txt @@ -0,0 +1,20 @@ + +Grammar: ValueSet 5.0 +Namespace: shr.procedure + +CodeSystem: LNC = http://loinc.org +CodeSystem: SCT = http://snomed.info/sct +CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: RXN = http://www.nlm.nih.gov/research/umls/rxnorm + +ValueSet: ActionIntentVS +Description: "The intended result from a given treatment. Examples include curative, palliative, and supportive." +// Why not all descendants of SCT#363675004 "Intents (nature of procedure values) (qualifier value)"? +SCT#373808002 "Curative - procedure intent (qualifier value)" +SCT#399707004 "Supportive - procedure intent (qualifier value)" +SCT#363676003 "Palliative - procedure intent (qualifier value)" +SCT#261004008 "Diagnostic intent (qualifier value)" + +ValueSet: SurgicalProcedureVS +Description: "Surgical procedure (procedure)" +Includes codes descending from SCT#387713003 "Surgical procedure (procedure)" \ No newline at end of file From ff9b8d26b912d6d854b6c2324fcb7b393363abd1 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 5 Nov 2018 08:05:50 -0500 Subject: [PATCH 083/289] Significant changes to differentiate Elements from Clusters No elements that have values and additional attributes. Elements are properties and just have values. Clusters (still Element in 5.0) only have properties, not values. --- spec/shr_base.txt | 9 ++- spec/shr_base_finding.txt | 57 ++++++++++++------ spec/shr_base_map.txt | 18 +++--- spec/shr_core.txt | 42 ++++++++----- spec/shr_core_map.txt | 35 ++++++----- spec/shr_encounter.txt | 6 +- spec/shr_entity.txt | 116 +++++++++++++++++++++++------------- spec/shr_entity_map.txt | 24 ++++---- spec/shr_medication.txt | 11 +++- spec/shr_medication_map.txt | 2 +- spec/shr_occupation_map.txt | 4 +- spec/shr_oncologycore.txt | 54 +++++++++-------- spec/shr_procedure_map.txt | 8 +-- spec/shr_wound.txt | 2 +- 14 files changed, 238 insertions(+), 150 deletions(-) diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 27613220..dd17a124 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -61,9 +61,14 @@ Description: "Metadata attributes that apply to any item represented in the stan Element: Narrative Concept: TBD Description: "A human-readable narrative, potentially including images, that contains a summary of the resource, and may be used to represent the content of the resource to a human." - Value: xhtml + 1..1 NarrativeText 1..1 NarrativeQualifier + Element: NarrativeText + Concept: TBD + Description: "Text of narrative, in xhtml." + Value: xhtml + Element: NarrativeQualifier Concept: TBD Description: "Additional information on how the narrative was generated, and the scope of information contained." @@ -102,7 +107,7 @@ Description: "Metadata attributes that apply to any item represented in the stan Element: Attribution Description: "Information ascribing the record to a particular contributor or responsible person." - 1..1 EntityOrRole + 1..1 EntityOrRole // TODO: change to Participant 0..1 RecordedOn 0..1 Signature diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index f630324c..a021cddf 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -7,14 +7,19 @@ Uses: shr.core, shr.entity, shr.encounter Abstract Element: NonIndependentFinding Based on: InformationItem Description: "A finding that does not or cannot stand alone, or a component of another finding." -Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) -// exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 // should we have finding protocol, finding precondition, finding question, finding data, finding interpretation? // how do we handle normal? (physical exam normal) -// exclusions? +// exclusions? (diabetes excluded) 1..1 FindingTopicCode // Question, test name, or assertion +0..1 FindingValue 0..1 ExceptionValue -0..1 ReferenceRange // included here because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. +0..1 ReferenceRange // included here only because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. + + Element: FindingValue + Concept: TBD + Description: "The observed value associated with a finding." + Value: Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod + // exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 Element: FindingTopicCode Description: "A code describing what the finding concerns, such as a lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property of the Patient or SpecificFocusOfFinding being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist. The topic code is not the result of the evaluation, which is found in the value. " @@ -28,7 +33,7 @@ Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time o Element: ReferenceRange Concept: MTH#C0883335 Description: "The usual or acceptable range for a test result." - Value: Range // TODO: align this with FHIR + 0..1 Range // TODO: align this with FHIR 0..1 Type from http://hl7.org/fhir/ValueSet/referencerange-meaning if covered 0..1 ApplicableSubpopulation 0..1 ApplicableAgeRange @@ -55,10 +60,15 @@ Description: "An assertion, determination, opinion, evaluation, result, observat 0..* NonIndependentFinding Element: SpecificFocusOfFinding - Description: "The specific observed item finding relates to. The SpecificFocusOfFinding is only required if the thing observed is different than the patient. The SpecificFocusOfFinding could be a relative of the patient, a location, or a group. The SpecificFocusOfFinding for cancer progression would be the cancer condition. If the property is wound length, the SpecificFocusOfFinding would be an instance of a wound. In the case of an assertion of existence, the SpecificFocusOfFinding is the larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter. SpecificFocusOfFinding should not be used to record anatomical location." - Value: string or CodeableConcept or Identifier or ref(InformationItem) + Description: "The specific observed item finding relates to. The SpecificFocusOfFinding is only required if the thing observed is different than the patient. SpecificFocusOfFinding should not be used to record anatomical location." + 1..1 FindingFocus 0..1 RelationshipToPersonOfRecord + Element: FindingFocus + Description: "The FindingFocus could be a relative of the patient, a location, or a group. The FindingFocus for cancer progression would be the cancer condition. If the property is wound length, the FindingFocus would be an instance of a wound. In the case of an assertion of existence, the FindingFocus is the larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." + Value: string or CodeableConcept or Identifier or ref(InformationItem) + + Element: RelevantTime Concept: TBD Description: "The time or time period that the statement addresses. @@ -82,6 +92,8 @@ Description: "Represents the result of evaluations (measurements, tests, or ques Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments. For an Observation, the FindingTopicCode describes the aspect or property of the subject being observed or measured. The FindingTopicCode is the 'question code' that pairs to the 'answer' contained in the Value." //0..0 Observer + FindingStatus value is type code + FindingStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 DeltaFlag 1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered 0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? @@ -91,14 +103,12 @@ For an Observation, the FindingTopicCode describes the aspect or property of the 0..1 Specimen 0..* Precondition 0..* Media - FindingStatus value is type code - FindingStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 PanelMembers Element: Observer Concept: MTH#C0449416 Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." - Value: ref(EntityOrRole) //string or ref(Practitioner) or ref(Patient) or ref(Group) or ref(Device) or ref(RelatedPerson) or ref(Organization) + 1..1 ref(EntityOrRole) 0..1 RelationshipToPersonOfRecord Element: RelationshipToPersonOfRecord @@ -154,7 +164,7 @@ EntryElement: CodedNonLaboratoryObservation Based on: NonLaboratoryObservation Concept: TBD Description: "The result of evaluations (measurements, tests, or questions) whose answer is expressed as a code." -Value: CodeableConcept + FindingValue value is type CodeableConcept 0..0 ReferenceRange EntryElement: SimpleCodedNonLaboratoryObservation @@ -166,7 +176,7 @@ Description: "An observation whose result is a code, and also having no componen EntryElement: ComponentOnlyNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation with components, but without a result value or panel members." -0..0 Value +0..0 FindingValue 0..0 ExceptionValue 0..0 PanelMembers 0..0 ReferenceRange @@ -190,7 +200,7 @@ Description: "A coded finding based on a specimen collected from a patient." EntryElement: CodedLaboratoryObservation Based on: LaboratoryObservation Description: "A coded finding from a laboratory test." -Value: CodeableConcept + FindingValue value is type CodeableConcept 0..0 ReferenceRange EntryElement: SimpleLaboratoryObservation @@ -211,7 +221,8 @@ Abstract Element: ExistenceAssertion Based on: Finding Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place. For assertions, the FindingTopicCode represents the thing asserted to be present or absent; i.e., the type of condition, event, relationship or phenomenon that is being asserted to exist or not exist." -Value: CodeableConcept from PresentAbsentVS + FindingValue value is type CodeableConcept + FindingValue from PresentAbsentVS 0..0 ReferenceRange 0..1 ObjectIdentifier // TODO: 0..* business identifier? 0..1 Certainty @@ -229,14 +240,14 @@ Value: CodeableConcept from PresentAbsentVS Abstract Element: PresenceAssertion Based on: ExistenceAssertion Description: "Finding that a phenomena is present." - Value is SCT#52101004 "Present (qualifier value" + FindingValue.CodeableConcept is SCT#52101004 "Present (qualifier value)" 0..1 Certainty from PresenceCertaintyVS Abstract Element: AbsenceAssertion Based on: ExistenceAssertion Description: "Finding that an entity, person, role, condition, or phenomenon is absent." - Value is SCT#2667000 "Absent (qualifier value)" + FindingValue.CodeableConcept is SCT#2667000 "Absent (qualifier value)" 0..1 Certainty from AbsenceCertaintyVS @@ -290,10 +301,15 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Element: Stage Concept: MTH#C0699749 - Description: "The relative advancement in the course of a disease. The value is the summary stage or stage group. StageDetail optionally contains the full staging information." - Value: 0..1 CodeableConcept + Description: "The relative advancement in the course of a disease. The StageCode is the summary stage or stage group. StageDetail optionally contains the full staging information." + 0..1 StageSummary 0..1 StageDetail + Element: StageSummary + Concept: TBD + Description: "A code representing the current stage of a disease." + Value: CodeableConcept + Element: StageDetail Concept: TBD Description: "The full staging information" @@ -332,6 +348,8 @@ EntryElement: ClinicalNote Based on: Finding Concept: MTH#C0747978 "Progress Note" Description: "An entry concerning a patient where the result is a narrative text." +0..0 FindingValue +0..0 ReferenceRange 1..1 Patient 1..1 AdditionalText // make required @@ -339,4 +357,5 @@ Abstract Element: RelationshipExistenceAssertion Based on: ExistenceAssertion Description: "An assertion of a realtionship between two things being either present or absent. The subject of the relationship is is the Patient (or SpecificFocusOfFinding, if given) and the object of the relationship is . For relationships, FindingTopicCode describes the relationship, e.g., Father or Mother." -Value: CodeableConcept from PresentAbsentVS + FindingValue value is type CodeableConcept + FindingValue from PresentAbsentVS diff --git a/spec/shr_base_map.txt b/spec/shr_base_map.txt index c76604e3..3d5b6c71 100644 --- a/spec/shr_base_map.txt +++ b/spec/shr_base_map.txt @@ -16,7 +16,7 @@ Entry maps to DomainResource: InformationItem maps to DomainResource: Narrative maps to Narrative: - Value maps to div + NarrativeText maps to div NarrativeQualifier maps to status // do not map Observation to US Core Results -- Brett says that's only for labs @@ -32,7 +32,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs AdditionalText maps to comment // Media maps to extension Category maps to category - AnatomicalLocation maps to bodySite + AnatomicalLocation.AnatomicalLocationCode maps to bodySite Device maps to device Specimen maps to specimen // Precondition maps to extension @@ -44,14 +44,14 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.ApplicableAgeRange maps to referenceRange.age NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code - NonIndependentFinding.Value maps to component.value[x] + NonIndependentFinding.FindingValue maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) - Value maps to value[x] + FindingValue maps to value[x] ExceptionValue maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued @@ -73,7 +73,7 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us AdditionalText maps to comment // Media maps to extension Category maps to category - AnatomicalLocation maps to bodySite + AnatomicalLocation.AnatomicalLocationCode maps to bodySite Device maps to device Specimen maps to specimen // Precondition maps to extension @@ -85,14 +85,14 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us ReferenceRange.ApplicableAgeRange maps to referenceRange.age NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code - NonIndependentFinding.Value maps to component.value[x] + NonIndependentFinding.FindingValue maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) - Value maps to value[x] + FindingValue maps to value[x] ExceptionValue maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued @@ -108,7 +108,7 @@ ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinitio Category maps to category FindingTopicCode maps to code constrain bodySite to 0..0 - AnatomicalLocation maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite + AnatomicalLocation.AnatomicalLocationCode maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Encounter maps to context ClinicalStatus maps to clinicalStatus FindingStatus maps to verificationStatus @@ -116,7 +116,7 @@ ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinitio Abatement maps to abatement[x] Severity maps to severity Stage maps to stage - Stage.CodeableConcept maps to stage.summary + Stage.StageSummary maps to stage.summary Stage.StageDetail maps to stage.assessment diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 94b2e84d..fac89da2 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -16,11 +16,16 @@ CodeSystem: UCUM = http://unitsofmeasure.org Element: Quantity Description: "A quantity with units, whose value may be bounded from above or below, as defined in FHIR" -Value: 0..1 decimal +0..1 DecimalValue 0..1 Comparator 0..1 Units + Element: DecimalValue + Description: "A decimal value." + Value: decimal + Element: Comparator + Description: "A code indicated if the value represents an upper or lower bound" Value: code from http://hl7.org/fhir/ValueSet/quantity-comparator Element: Units @@ -65,12 +70,17 @@ Description: "Representation of an amount of currency or monetary value." Element: Coding Concept: MTH#C0805701 Description: "Coding of a concept, drawn from a controlled vocabulary. Includes the vocabulary and version, if applicable. May include a display text, and a descriptor expressing the intended interpretation of the code." -Value: 0..1 code // changed to 0..1 so SHR won't generate a profile. +0..1 Code 0..1 CodeSystem 0..1 CodeSystemVersion 0..1 DisplayText //0..* CodingQualifier + Element: Code + Description: "A coded value." + Value: code + + /* TODO: Suggest changing FHIR's Coding.userSelected to Coding.qualifier Element: CodingQualifier @@ -263,7 +273,7 @@ Timing offers a choice of multiple OccurrenceTime (used is used to specify speci Element: SampledData Concept: TBD Description: "Data that comes from a series of measurements taken by a device, which may have upper and lower limits. The data type also supports more than one dimension in the data." -Value: string +1..1 Text 1..1 Origin 1..1 MillisecondsBetweenSamples 0..1 CorrectionFactor @@ -271,6 +281,10 @@ Value: string 0..1 UpperLimit 1..1 Dimensions + Element: Text + Description: "A value that is a sting." + Value: string + Element: Origin Description: "The base quantity that a measured value of zero represents. In addition, this provides the units of the entire measurement series." Value: SimpleQuantity @@ -353,13 +367,6 @@ Concept: MTH#C0750480 Description: "The number of items (0 or more), as an integer." Value: unsignedInt -Element: PlainText -Concept: TBD -Description: "A text written in a human language." -Value: string -0..1 Language - - Element: Details Concept: MTH#C0947611 Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." @@ -633,7 +640,7 @@ Element: ParsableContent Based on: EmbeddedContent Concept: TBD Description: "A string that follows a formal syntax and can be analyzed and broken into meaningful parts." -Value: string +1..1 Text 1..1 Formalism Element: Formalism @@ -696,7 +703,7 @@ Concept: LNC#72170-4 Element: Annotation Description: "An added or follow-up note, often after the fact, that contains metadata about who made the statement and when." -Value: string // change to language-text +1..1 Text 1..1 Author 1..1 OccurrenceTime @@ -739,10 +746,15 @@ Value: CodeableConcept from http://hl7.org/fhir/ValueSet/route-codes Element: AnatomicalLocation Concept: LNC#72369-2 // Body site identification panel Description: "A location or structure in the body, including tissues, regions, cavities, and spaces; for example, right elbow, or left ventricle of the heart." -Value: CodeableConcept from AnatomicalLocationVS +1..1 AnatomicalLocationCode 0..1 Laterality 0..1 AnatomicalDirection + Element: AnatomicalLocationCode + Concept: TBD + Description: "Code for the anatomical location, with or without laterality." + Value: CodeableConcept should be from AnatomicalLocationVS + Element: Laterality Concept: MTH#C0925205 "Anatomical laterality" Description: "Anatomical location or specimen further detailing the side(s) of interest." @@ -756,7 +768,7 @@ Value: CodeableConcept from AnatomicalLocationVS Element: Identifier Concept: MTH#C0600091 Description: "A unique string that identifies a specific person or thing." -Value: string // or id or code or CodeableConcept? +1..1 Text 0..1 Purpose from http://hl7.org/fhir/ValueSet/identifier-use 0..1 Type from http://hl7.org/fhir/ValueSet/identifier-type if covered 0..1 CodeSystem @@ -774,6 +786,7 @@ Concept: MTH#C0449438 Description: "The current standing or state." Value: code or Coding or CodeableConcept +/* Element: TermMapping Description: "Represents an alternative (mapped) Concept associated with a source concept (i.e., CodedText.concept or the textual value of the CodedText when no equivalent concept has been defined), and the relative match of the mapped Concept with respect to the source Concept. Mappings may be used to add classification terms (e.g. adding ICD classifiers to SNOMED descriptive terms), for computational convenience, or to provide equivalents in other terminologies (e.g. across nursing vocabularies)." Value: Coding @@ -783,6 +796,7 @@ Value: Coding Element: Match Description: "The relative match of the mapped concept to the original (target) concept. Examples include broader (i.e., the mapped term is more general than the original), equivalent, narrower (e.g. mapped concept is 'atypical diabetes mellitus' and the original term is 'diabetes mellitus'), or unknown." Value: Coding +*/ Element: Name Description: "Abstract supertype for the name of an entity." diff --git a/spec/shr_core_map.txt b/spec/shr_core_map.txt index e5a54ca7..1d4f1657 100644 --- a/spec/shr_core_map.txt +++ b/spec/shr_core_map.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 // Code types map direction to FHIR Coding maps to Coding: - Value maps to code + Code maps to code CodeSystem maps to system CodeSystemVersion maps to version DisplayText maps to display @@ -15,8 +15,8 @@ CodeableConcept maps to CodeableConcept: DisplayText maps to text Quantity maps to Quantity: - Value maps to value - Units.Coding.code maps to code + DecimalValue maps to value + Units.Coding.Code maps to code Units.Coding.CodeSystem maps to system Units.Coding.DisplayText maps to unit Comparator maps to comparator @@ -31,7 +31,7 @@ Duration maps to Duration: Money maps to Money: Address maps to Address: - Purpose maps to use + Purpose.Coding.Code maps to use Type maps to type DisplayText maps to text AddressLine maps to line @@ -48,7 +48,7 @@ HumanName maps to HumanName: GivenName maps to given FamilyName maps to family Suffix maps to suffix - Purpose maps to use + Purpose.Coding.Code maps to use EffectiveTimePeriod maps to period TimePeriod maps to Period: @@ -64,7 +64,7 @@ Geoposition maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-loca ContactPoint maps to ContactPoint: TelecomNumberOrAddress maps to value Type maps to system - Purpose maps to use + Purpose.Coding.Code maps to use PriorityRank maps to rank EffectiveTimePeriod maps to period @@ -83,12 +83,15 @@ Ratio maps to Ratio: Timing maps to Timing: OccurrenceTime maps to event TimingCode maps to code - EventDuration.Value.LowerBound maps to repeat.duration - EventDuration.Value.UpperBound maps to repeat.durationMax - EventDuration.Value.LowerBound.Value.Units.Value.Value maps to repeat.durationUnit - RecurrencePattern.RecurrenceInterval.Value maps to repeat.period +// EventDuration.Value.LowerBound maps to repeat.duration +// EventDuration.Value.UpperBound maps to repeat.durationMax +// EventDuration.Value.LowerBound.Value.Units.Value.Value maps to repeat.durationUnit + EventDuration.DurationRange.LowerBound.SimpleQuantity.DecimalValue maps to repeat.duration + EventDuration.DurationRange.UpperBound.SimpleQuantity.DecimalValue maps to repeat.durationMax + EventDuration.DurationRange.LowerBound.SimpleQuantity.Units.Coding.Code maps to repeat.durationUnit + RecurrencePattern.RecurrenceInterval.Duration.DecimalValue maps to repeat.period + RecurrencePattern.RecurrenceInterval.Duration.Units.Coding.Code maps to repeat.periodUnit constrain repeat.periodMax to 0..0 - RecurrencePattern.RecurrenceInterval.Value.Units.Value.Value maps to repeat.periodUnit RecurrencePattern.DayOfWeek maps to repeat.dayOfWeek RecurrencePattern.TimeOfDay maps to repeat.timeOfDay RecurrencePattern.DailyLifeEvent maps to repeat.when @@ -97,7 +100,7 @@ Timing maps to Timing: RecurrencePattern.CountPerInterval.MaxCount maps to repeat.frequencyMax SampledData maps to SampledData: - Value maps to data + Text maps to data Origin maps to origin MillisecondsBetweenSamples maps to period CorrectionFactor maps to factor @@ -117,18 +120,18 @@ Media maps to Attachment: // From FHIR 3.5 documentation: "The BodyStructure resource is not ... intended for describing the type of anatomical location but rather a specific body site on a specific patient." AnatomicalLocation maps to BodySite: - Value maps to code + AnatomicalLocationCode maps to code Laterality maps to qualifier (slice on = coding.code) AnatomicalDirection maps to qualifier Annotation maps to Annotation: - Value maps to text + Text maps to text Author maps to author[x] OccurrenceTime maps to time Identifier maps to Identifier: - Value maps to value - Purpose maps to use + Text maps to value + Purpose.Coding.Code maps to use Type maps to type CodeSystem maps to system EffectiveTimePeriod maps to period diff --git a/spec/shr_encounter.txt b/spec/shr_encounter.txt index 863832b1..0468d6c6 100644 --- a/spec/shr_encounter.txt +++ b/spec/shr_encounter.txt @@ -27,10 +27,14 @@ Description: "A description of an interaction between a patient and healthcare p Element: Diagnosis Description: "A diagnosis, which is a disease or injury determined to be present through evaluation of patient history, examination, and/or review of laboratory data." - Value: code + 1..1 DiagnosisCode 0..1 PriorityRank 0..1 Type should be from http://hl7.org/fhir/ValueSet/diagnosis-role + Element: DiagnosisCode + Concept: TBD + Description: "A code for the diagnosis." + Value: CodeableConcept Element: DetailedEncounter Based on: Encounter diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index b0538abe..9216200c 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.entity Description: "The namespace containing definitions for basic classes." -Uses: shr.core, shr.base +Uses: shr.core, shr.base, shr.medication Abstract Element: EntityOrRole Based on: InformationItem @@ -33,13 +33,7 @@ Description: "A person in the role of a patient." Element: ActiveFlag Concept: TBD Description: "If the ActiveFlag is false, it indicates the record or item is no longer to be used and should generally be hidden for the user in the UI." - Value: boolean - - Element: ActiveFlagAsaCodeableConcept - Concept: TBD - Description: "If the ActiveFlag is false, it indicates the record or item is no longer to be used and should generally be hidden for the user in the UI." - Value: CodeableConcept - + Value: boolean or CodeableConcept EntryElement: ExternalHealthRecord Based on: Entity @@ -121,7 +115,7 @@ Description: "A set of entities (personnel, material, or places) to be considere 0..1 Title // name 1..1 Actual 0..* GroupCharacteristic -0..* Member +0..* MemberParticipation 0..1 Count Element: Actual @@ -149,13 +143,19 @@ Description: "A set of entities (personnel, material, or places) to be considere Description: "If true, exclude the subjects that match the criterion." Value: boolean - Element: Member + Element: MemberParticipation Concept: MTH#C0682343 "Member of Target Group" Description: "A person or entity in a group." - Value: ref(Patient) or ref(Practitioner) or ref(Device) or ref(Medication) or ref(Substance) + 1..1 Member 0..1 ParticipationPeriod 1..1 ActiveFlag + Element: Member + Concept: TBD + Description: "A person or entity in a group." + Value: ref(Patient) or ref(Practitioner) or ref(Device) or ref(Medication) or ref(Substance) + + EntryElement: Facility Based on: Entity Concept: MTH#C1547538 @@ -190,16 +190,24 @@ Concept: MTH#C0439861 Description: "Any matter of defined composition that has discrete existence, whose origin may be biological, mineral or chemical." 1..1 Type should be from http://hl7.org/fhir/ValueSet/substance-code 0..* Category from http://hl7.org/fhir/ValueSet/substance-category if covered -0..1 ActiveFlagAsaCodeableConcept from http://hl7.org/fhir/ValueSet/substance-status +0..1 ActiveFlag 0..1 AdditionalText 0..* Ingredient + ActiveFlag value is type CodeableConcept + ActiveFlag from http://hl7.org/fhir/ValueSet/substance-status Element: Ingredient Concept: MTH#C3176062 Description: "Specifies an material component in a non-medication substance." - Value: CodeableConcept or ref(Substance) + 1..1 SubstanceOrCode 1..1 IngredientAmount - + 0..1 IsActiveIngredient + + Element: SubstanceOrCode + Concept: TBD + Description: "A code or substance reference identifying the ingredient." + Value: CodeableConcept or ref(Substance) or ref(Medication) + Element: IsActiveIngredient Concept: TBD Description: "True if the ingredient is an active ingredient in the medication." @@ -218,7 +226,7 @@ Description: "A type of prescription drug or over-the-counter drug that is used 0..1 DoseForm 0..1 Brand 0..1 OverTheCounter -0..* MedicationIngredient +0..* Ingredient 0..1 Manufacturer 0..1 LotNumber 0..1 ExpirationDate @@ -232,9 +240,14 @@ Description: "A type of prescription drug or over-the-counter drug that is used Element: Brand Concept: TBD Description: "If the product is branded, and if so, the brand name of a product." - Value: boolean + 1..1 IsBrand 0..1 BrandName + Element: IsBrand + Concept: TBD + Description: "If the product is branded." + Value: boolean + Element: BrandName Concept: TBD Description: "The marketing name for a brand name product" @@ -245,13 +258,6 @@ Description: "A type of prescription drug or over-the-counter drug that is used Description: "True if the medication is available to consumers without a prescription." Value: boolean - Element: MedicationIngredient - Concept: MTH#C3176062 - Description: "Specifies an material component in a medication." - Value: CodeableConcept or ref(Substance) or ref(Medication) - 1..1 IngredientAmount - 1..1 IsActiveIngredient - Element: Manufacturer Concept: MTH#C1114744 Description: "The organization producing the product or test." @@ -304,12 +310,17 @@ Description: "A person relevant to the health or social situation of the subject Description: "The location of a birth event. There may be multiple entries, but a person has only one place of birth." Value: Address - Element: MultipleBirth - Concept: MTH#C0026753 - Description: "Indication if the person was part of a multiple birth event." - Value: boolean + Element: MultipleBirthInformation + Concept: TBD + Description: "If the person was part of a multiple birth event, and if so in which order." + 1..1 IsMultipleBirth 0..1 MultipleBirthOrder + Element: IsMultipleBirth + Concept: MTH#C0026753 + Description: "Whether the person was part of multiple birth event" + Value: boolean + Element: MultipleBirthOrder Concept: LNC#73771-8 Description: "Order of birth of the person in multiple birth event (if part of multiple birth)." @@ -324,9 +335,14 @@ Description: "A person relevant to the health or social situation of the subject Element: Race Concept: MTH#C0034510 Description: "Subjective association of a person with a named category of humans sharing common history, traits, place of family origin, nationality, tribe, or other inherited background." - Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity + 0..1 RaceCode 0..* RaceDetail + Element: RaceCode + Concept: TBD + Description: "A code for the person's race" + Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity + Element: RaceDetail Concept: TBD Description: "Additional description of race or heritage." @@ -335,9 +351,14 @@ Description: "A person relevant to the health or social situation of the subject Element: Ethnicity Concept: MTH#C0015031 Description: "Indicator of Hispanic or Latino origin." - Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity + 1..1 EthnicityCode 0..* EthnicityDetail + Element: EthnicityCode + Concept: TBD + Description: "A code for the person's race" + Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity + Element: EthnicityDetail Concept: TBD Description: "Additional description of ethnicity." @@ -358,37 +379,49 @@ Description: "A person relevant to the health or social situation of the subject Description: "A US social security number (SSN)." Value: string // note that missing value reasons include "none" - meaning the subject does not have a SSN - Element: DriversLicenseNumber + Element: DriversLicenseInformation Concept: TBD Description: "Identifying information from a drivers license." - Value: string + 0..1 DriversLicenseNumber 0..1 StateOfIssue 0..1 EffectiveTimePeriod + Element: DriversLicenseNumber + Description: "The drivers license number." + Value: string + Element: StateOfIssue Concept: TBD Description: "A state or country acting as an assuing authority for a document." Value: State - Element: PassportNumber + Element: PassportInformation Concept: MTH#C1549737 Description: "Credential indicating citizenship." - Value: string + 1..1 PassportNumber 1..1 CountryOfIssue 0..1 EffectiveTimePeriod + Element: PassportNumber + Description: "The passport number." + Value: string + Element: CountryOfIssue Concept: TBD Description: "A country acting as an assuing authority for a document." Value: Country - Element: MedicalInterpreterNeeded + Element: MedicalInterpreter Concept: MTH#C1442531 Description: "Whether the subject requires an interpreter to communicate with an English-speaking provider." - Value: CodeableConcept from YesNoUnknownVS + 1..1 MedicalInterpreterNeeded 1..1 Language + Element: MedicalInterpreterNeeded + Concept: MTH#C1442531 + Description: "Whether the subject requires an interpreter to communicate with an English-speaking provider." + Value: CodeableConcept from YesNoUnknownVS Element: MaritalStatus Concept: MTH#C0024819 @@ -423,7 +456,7 @@ Description: "A person relevant to the health or social situation of the subject Element: LanguageUsed // needs to be aligned with CCDA 2.1 Concept: TBD Description: "Language used for communication by a human, either the subject of record, parent, or other involved person." - Value: Language + 1..1 Language 0..1 SpokenLanguageProficiency 0..1 WrittenLanguageProficiency 0..* LanguageQualifier @@ -442,13 +475,18 @@ Description: "A person relevant to the health or social situation of the subject Description: "Additional information about a person's use of language." Value: CodeableConcept from LanguageQualifierVS - Element: Deceased + Element: DeathInformation Concept: MTH#C0011065 Description: "An indication that the person is no longer living, given by a date, time of death, or a boolean value which, when true, indicates the person is deceased." - Value: boolean + 1..1 IsDeceased 0..1 DateOfDeath 0..1 AgeAtDeath + Element: IsDeceased + Concept: TBD + Description: "Whether or not the person is deceased." + Value: boolean + Element: DateOfDeath Concept: MTH#C1148348 Description: "The calendar date of subject's death." @@ -575,7 +613,6 @@ Description: "A specimen is a substance, physical object, or collection of objec Concept: TBD Description: "Identifier assigned by the lab" - Element: SpecimenStatus Concept: MTH#C0449438 Description: "State of the specimen, such as obtained, processed, used." @@ -586,7 +623,6 @@ Description: "A specimen is a substance, physical object, or collection of objec Description: "Identifier for the source specimen from which this specimen was derived." Value: ref(Specimen) - Element: HandlingRisk Concept: TBD Description: "Cautions on the handling of this specimen." diff --git a/spec/shr_entity_map.txt b/spec/shr_entity_map.txt index 2bc18811..bb634c25 100644 --- a/spec/shr_entity_map.txt +++ b/spec/shr_entity_map.txt @@ -9,12 +9,12 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: Person.Headshot maps to photo Person.Address maps to address Person.ContactPoint maps to telecom - Person.LanguageUsed maps to communication + Person.LanguageUsed.Language maps to communication Person.DateOfBirth maps to birthDate Person.MaritalStatus maps to maritalStatus // PlaceOfBirth maps to http://hl7.org/fhir/StructureDefinition/birthPlace -// MultipleBirth maps to multipleBirth[x].boolean -// MultipleBirth.MultipleBirthOrder maps to multipleBirth[x].integer +// MultipleBirthInformation.IsMultipleBirth maps to multipleBirth[x].boolean +// MultipleBirthInformation.MultipleBirthOrder maps to multipleBirth[x].integer // BirthSex maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex // Race maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-race // Ethnicity maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity @@ -30,7 +30,7 @@ Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-pra Person.Headshot maps to photo Person.Address maps to address Person.ContactPoint maps to telecom - Person.LanguageUsed maps to communication + Person.LanguageUsed.Language maps to communication NationalProviderIdentifier maps to identifier Qualification maps to qualification Qualification.Type maps to qualification.code @@ -69,9 +69,9 @@ Group maps to Group: GroupCharacteristic.GroupCharacteristicCode maps to characteristic.code GroupCharacteristic.ExcludeFlag maps to characteristic.exclude GroupCharacteristic.TimePeriod maps to characteristic.period - Member.Value maps to member.entity - Member.ParticipationPeriod maps to member.period - Member.ActiveFlag maps to member.inactive // TODO this is an inverse TF mapping + MemberParticipation.Member maps to member.entity + MemberParticipation.ParticipationPeriod maps to member.period + MemberParticipation.ActiveFlag maps to member.inactive // TODO this is an inverse TF mapping Count maps to quantity Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-location: @@ -89,15 +89,15 @@ Substance maps to Substance: Type maps to code Ingredient maps to ingredient Ingredient.IngredientAmount maps to ingredient.quantity - Ingredient.Value maps to ingredient.substance[x] + Ingredient.SubstanceOrCode maps to ingredient.substance[x] Medication maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medication: Type maps to code DoseForm maps to form - MedicationIngredient.Value maps to ingredient.item[x] - MedicationIngredient.IngredientAmount maps to ingredient.amount - MedicationIngredient.IsActiveIngredient maps to ingredient.isActive - Brand maps to isBrand + Ingredient.SubstanceOrCode maps to ingredient.item[x] + Ingredient.IngredientAmount maps to ingredient.amount + Ingredient.IsActiveIngredient maps to ingredient.isActive + Brand.IsBrand maps to isBrand OverTheCounter maps to isOverTheCounter Manufacturer maps to manufacturer constrain package.batch to 0..1 diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index ebd1df2a..72338cb0 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -92,14 +92,19 @@ Description: "A record of the use of a medication. If the medication is given as EntryElement: MedicationAdherence Based on: CodedNonLaboratoryObservation Concept: MTH#C2364172 -Description: "The degree (frequency) that the stated treatment plan, prescription, or protocol was followed. A statement of the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency. The SpecificFocusOfFinding must reference the medication via a code, MedicationRequest, or MedicationStatement. -Modeling note: MedicationAdherence could be attached to MedicationStatement directly as an extension, but modeling as an observation avoids creating an extension and allows this observation to be made at any time" -Value: CodeableConcept from QualitativeFrequencyVS +Description: "Information on the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency. The SpecificFocusOfFinding must reference the medication via a code, MedicationRequest, or MedicationStatement. +Modeling note: MedicationAdherence could be attached to MedicationStatement directly as an extension, but modeling as an observation avoids creating an extension and allows this observation to be made at any time." +1..1 AdherenceFrequency FindingTopicCode is MTH#C2364172 1..1 SpecificFocusOfFinding // TODO: constrain type! NonIndependentFinding includes 0..* MedicationNonAdherenceReason + Element: AdherenceFrequency + Concept: TBD + Description: "The degree (frequency) that the stated treatment plan, prescription, or protocol was followed." + Value: CodeableConcept from QualitativeFrequencyVS + Element: MedicationNonAdherenceReason Based on: NonIndependentFinding Description: "Reason that patient did not adhere to a medication regimen." diff --git a/spec/shr_medication_map.txt b/spec/shr_medication_map.txt index 28227bef..b0009c74 100644 --- a/spec/shr_medication_map.txt +++ b/spec/shr_medication_map.txt @@ -10,7 +10,7 @@ Dosage maps to Dosage: AdditionalDosageInstruction maps to additionalInstruction RouteIntoBody maps to route DosageMethod maps to method - DosageBodySite.Value maps to site + DosageBodySite.AnatomicalLocation.AnatomicalLocationCode maps to site MaximumDosePerTimePeriod maps to maxDosePerPeriod MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index 730cb6c2..d9fc8035 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -9,12 +9,12 @@ SocialHistoryObservation maps to Observation: Category maps to category NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code - NonIndependentFinding.Value maps to component.value[x] + NonIndependentFinding.FindingValue maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange // constrain related to 0..0 - Value maps to value[x] + FindingValue maps to value[x] // ExceptionValue maps to dataAbsentReason RelevantTime maps to effective[x] // Encounter maps to context diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 61dc050f..9bc06fbb 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -15,8 +15,8 @@ EntryElement: CancerDisorder Based on: ConditionPresentAssertion Description: "The presence of malignant neoplastic disease, in which abnormal cells divide without control and can invade nearby tissues." Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" - FindingTopicCode from CancerDisorderVS // BASECHANGE: to FindingTopicCode ... global replace. -// 0..0 Stage.Value + FindingTopicCode from CancerDisorderVS +// 0..0 Stage.StageGroup Stage.StageDetail value is type CancerStage // 0..1 MorphologyBehavior from MorphologyBehaviorVS //Not carried over from BrCa because it was intended to break out behavior codes from ICD-O-3, and we are no longer using it. @@ -26,7 +26,7 @@ EntryElement: CancerHistologicType Based on: CodedNonLaboratoryObservation Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" Concept: SCT#86049000 "Malignant neoplasm, primary (morphologic abnormality)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." -Value: CodeableConcept from CancerHistologicTypeVS + FindingValue.CodeableConcept from CancerHistologicTypeVS // FindingValue from FindingTopicCode is SCT#86049000 "Malignant neoplasm, primary (morphologic abnormality)" @@ -35,7 +35,7 @@ EntryElement: CancerHistologicGrade Based on: SimpleCodedNonLaboratoryObservation Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" Concept: LNC#21858-6 "Grade Cancer" -Value: CodeableConcept from http://loinc.org/vs/LL213-0 + FindingValue.CodeableConcept from http://loinc.org/vs/LL213-0 FindingTopicCode is LNC#21858-6 "Grade Cancer" // SpecificFocusOfFinding value is type CancerDisorder // TODO: this is failing; bug reported 0..0 AnatomicalLocation @@ -45,7 +45,7 @@ EntryElement: CancerProgression Based on: CodedNonLaboratoryObservation Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" Concept: SCT#246453008 "Course of illness (attribute)" -Value: CodeableConcept from CancerProgressionVS + FindingValue.CodeableConcept from CancerProgressionVS FindingTopicCode is SCT#246453008 "Course of illness (attribute)" EntryElement: CancerStage @@ -53,7 +53,7 @@ Based on: Observation Description: "The extent a cancer has spread in the body (source: NCI Dictionary of Cancer Terms)" Concept: SCT#258232002 "Cancer staging (tumor staging)" FindingTopicCode is SCT#258232002 "Cancer staging (tumor staging)" - 0..0 Value + 0..0 FindingValue // SpecificFocusOfFinding value is type CancerDisorder NonIndependentFinding includes 0..1 StageTiming // retained StageTiming because if using TNM staging, the StageGroup still needs a prefix (even if we're using precoordinated categories). There are LOINC codes for clinical and pathologic stage groups in LOINC, but we back ourselves into TNM for stage group if we use them. @@ -72,14 +72,14 @@ Element: StageTiming Based on: NonIndependentFinding Concept: SCT#260869008 "Timing of stage" Description: "Indicates when the staging was done, in terms of treatment landmarks." -Value: CodeableConcept from StageTimingPrefixVS + FindingValue.CodeableConcept from StageTimingPrefixVS FindingTopicCode is SCT#260869008 "Timing of stage" Element: StagingSystem Based on: NonIndependentFinding Concept: SCT#254292007 "Tumor staging (tumor staging)" // TODO: Needs LOINC code. Description: "A systematic method for clinicopathologic evaluation of tumors. (source: NCI Metathesaurus)" -Value: CodeableConcept from CancerStagingSystemVS + FindingValue.CodeableConcept from CancerStagingSystemVS FindingTopicCode is SCT#254292007 "Tumor staging (tumor staging)" // TODO: Needs LOINC code. EntryElement: StageGroup @@ -87,7 +87,7 @@ EntryElement: StageGroup Based on: CodedNonLaboratoryObservation Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" Concept: MTH#C1302362 "Stage Grouping" -Value: CodeableConcept from http://loinc.org/vs/LL240-3 + FindingValue.CodeableConcept from http://loinc.org/vs/LL240-3 FindingTopicCode is MTH#C1302362 "Stage Grouping" // SpecificFocusOfFinding value is type CancerStage @@ -95,7 +95,7 @@ Element: TNMClinicalPrimaryTumorClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." -Value: CodeableConcept from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 + FindingValue.CodeableConcept from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 // SpecificFocusOfFinding value is type CancerStage NonIndependentFinding includes 0..1 StageSuffix @@ -105,15 +105,15 @@ Element: StageSuffix Based on: NonIndependentFinding Concept: TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. assign a local value set until we get something assigned. Description: "A suffix used in conjuction with certain cancer stage categories, usually qualifying how the category value was determined." -Value: CodeableConcept from StageSuffixVS // local value set created + FindingValue.CodeableConcept from StageSuffixVS // local value set created FindingTopicCode is TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. -Element: TNMClinicalRegionalNodesClassification +Element: TNMClinicalRegionalNodesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC -Value: CodeableConcept from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 + FindingValue.CodeableConcept from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" // SpecificFocusOfFinding value is type CancerStage NonIndependentFinding @@ -124,7 +124,7 @@ Element: TNMClinicalDistantMetastasesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC -Value: CodeableConcept from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 + FindingValue.CodeableConcept from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" // SpecificFocusOfFinding value is type CancerStage @@ -132,29 +132,29 @@ Element: TNMPathologicPrimaryTumorClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21899-0 "Primary tumor.pathology Cancer" Description: "" //TODO: pull from LOINC -Value: CodeableConcept from http://loinc.org/vs/LL232-0 // normative + FindingValue.CodeableConcept from http://loinc.org/vs/LL232-0 // normative FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" // SpecificFocusOfFinding value is type CancerStage NonIndependentFinding includes 0..1 StageSuffix includes 0..1 StageTiming // TODO: make this a fixed value to pathologic. -Element: TNMPathologicRegionalNodesClassification +Element: TNMPathologicRegionalNodesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" Description: "" //TODO: pull from LOINC -Value: CodeableConcept from http://loinc.org/vs/LL3136-0 // normative + FindingValue.CodeableConcept from http://loinc.org/vs/LL3136-0 // normative FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" // SpecificFocusOfFinding value is type CancerStage NonIndependentFinding includes 0..1 StageSuffix includes 0..1 StageTiming // TODO: make this a fixed value to pathologic. -Element: TNMPathologicDistantMetastasesClassification +Element: TNMPathologicDistantMetastasesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" Description: "" //TODO: pull from LOINC -Value: CodeableConcept from http://loinc.org/vs/LL3137-8 + FindingValue.CodeableConcept from http://loinc.org/vs/LL3137-8 FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative // SpecificFocusOfFinding value is type CancerStage @@ -174,7 +174,7 @@ Element: PrimaryTumorIndicator Based on: CodedNonLaboratoryObservation Description: "Whether the tumor is the original, or first, tumor in the body, for a particular cancer." Concept: SCT#260716003 "Site of Primary Tumor (attribute)" -Value: CodeableConcept from YesNoVS // TODO: Open a bug for Observation Value to support boolean data type. This is possible in the FHIR Observation.value.valueBoolean attribute. Change back to boolean after fix. + FindingValue.CodeableConcept from YesNoVS // TODO: Open a bug for Observation Value to support boolean data type. This is possible in the FHIR Observation.value.valueBoolean attribute. Change back to boolean after fix. FindingTopicCode is SCT#260716003 "Site of Primary Tumor (attribute)" // SpecificFocusOfFinding value is type Tumor @@ -193,18 +193,19 @@ Concept: LNC#89246-3 "ECOG Performance Status panel" includes 0..1 ECOGPerformanceStatusScore includes 0..1 ECOGPerformanceStatusInterpretation -Element: ECOGPerformanceStatusScore +Element: ECOGPerformanceStatusScore Based on: SimpleNonLaboratoryObservation Concept: LNC#89247-1 "ECOG Performance Status score" Description: "The Eastern Cooperative Oncology Group (ECOG) performance score, which indicates a patient’s level of daily functioning and physical ability. The ECOG grade ranges from 0-5. Source: LOINC" -Value: IntegerQuantity + FindingValue value is type Quantity + FindingValue.Quantity.Units.Coding is UCUM#1 // SpecificFocusOfFinding value is type Patient -Element: ECOGPerformanceStatusInterpretation +Element: ECOGPerformanceStatusInterpretation Based on: CodedNonLaboratoryObservation Concept: LNC#89262-0 "ECOG Performance Status [Interpretation]" Description: "The Eastern Cooperative Oncology Group (ECOG) Performance Status represents the patient's functional status and is used to determine their ability to tolerate therapies in serious illness, specifically for chemotherapy. (Source: LOINC)" -Value: CodeableConcept from http://loinc.org/vs/LL529-9 // normative answer list for LNC#89262-0, the scores are included in descriptions of answers + FindingValue.CodeableConcept from http://loinc.org/vs/LL529-9 // normative answer list for LNC#89262-0, the scores are included in descriptions of answers // SpecificFocusOfFinding value is type Patient //KPS is a panel in LOINC with score and interpretation as two components of the panel. @@ -221,11 +222,12 @@ Concept: LNC#89245-5 "Karnofsky Performance Status panel" Element: KarnofskyPerformanceStatusScore Based on: SimpleNonLaboratoryObservation Concept: LNC#89243-0 "Karnofsky Performance Status score" -Value: IntegerQuantity + FindingValue value is type Quantity + FindingValue.Quantity.Units.Coding is UCUM#1 // SpecificFocusOfFinding value is type Patient Element: KarnofskyPerformanceStatusInterpretation Based on: CodedNonLaboratoryObservation Concept: LNC#89245-5 "Karnofsky Performance Status [Interpretation]" -Value: CodeableConcept from http://loinc.org/vs/LL4986-7 // normative answer list + FindingValue.CodeableConcept from http://loinc.org/vs/LL4986-7 // normative answer list // SpecificFocusOfFinding value is type Patient \ No newline at end of file diff --git a/spec/shr_procedure_map.txt b/spec/shr_procedure_map.txt index 0677c3fd..40159411 100644 --- a/spec/shr_procedure_map.txt +++ b/spec/shr_procedure_map.txt @@ -9,7 +9,7 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Category maps to category constrain notDone to 0..0 constrain notDoneReason to 0..0 - AnatomicalLocation maps to bodySite + AnatomicalLocation.AnatomicalLocationCode maps to bodySite PartOf maps to partOf Annotation maps to note Encounter maps to context @@ -35,7 +35,7 @@ ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us // TODO the following is causing a crash // fix notDone to true Reason maps to notDoneReason - AnatomicalLocation maps to bodySite + AnatomicalLocation.AnatomicalLocationCode maps to bodySite // PartOf maps to partOf Annotation maps to note constrain performed[x] to 0..0 @@ -60,7 +60,7 @@ ProcedureRequested maps to ProcedureRequest: Category maps to category constrain doNotPerform to 0..0 Patient maps to subject - AnatomicalLocation maps to bodySite + AnatomicalLocation.AnatomicalLocationCode maps to bodySite Encounter maps to context Reason maps to reasonCode Status maps to status @@ -78,6 +78,6 @@ ProcedureRequestedAgainst maps to ProcedureRequest: TopicCode maps to code Category maps to category Patient maps to subject - AnatomicalLocation maps to bodySite + AnatomicalLocation.AnatomicalLocationCode maps to bodySite Reason maps to reasonCode // Encounter maps to context diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index ab345817..5d1d0299 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -96,7 +96,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t Element: WoundAnatomicalLocation Based on: AnatomicalLocation Concept: LNC#39111-0 "Body Site" - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.14/expansion + AnatomicalLocationCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.14/expansion 1..1 Laterality 0..0 AnatomicalDirection From 9087e753498ed44eb771da0ada4a6dcd2888c8f6 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 5 Nov 2018 13:50:20 -0500 Subject: [PATCH 084/289] deleted some comments --- spec/shr_core_map.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/spec/shr_core_map.txt b/spec/shr_core_map.txt index 1d4f1657..ad58ee30 100644 --- a/spec/shr_core_map.txt +++ b/spec/shr_core_map.txt @@ -83,9 +83,6 @@ Ratio maps to Ratio: Timing maps to Timing: OccurrenceTime maps to event TimingCode maps to code -// EventDuration.Value.LowerBound maps to repeat.duration -// EventDuration.Value.UpperBound maps to repeat.durationMax -// EventDuration.Value.LowerBound.Value.Units.Value.Value maps to repeat.durationUnit EventDuration.DurationRange.LowerBound.SimpleQuantity.DecimalValue maps to repeat.duration EventDuration.DurationRange.UpperBound.SimpleQuantity.DecimalValue maps to repeat.durationMax EventDuration.DurationRange.LowerBound.SimpleQuantity.Units.Coding.Code maps to repeat.durationUnit From 638d164e46a64f62360ae6e53bff7a74956e17a0 Mon Sep 17 00:00:00 2001 From: May Terry Date: Tue, 6 Nov 2018 11:12:55 -0500 Subject: [PATCH 085/289] added DiagnosticImaging; fixed code assignment for med, radiotherapy, and surgicalProc --- spec/ig-mcode-config.json | 6 +++--- spec/shr_imaging.txt | 20 ++++++++++++++++++++ spec/shr_imaging_vs.txt | 8 ++++++++ spec/shr_intervention.txt | 8 +++----- 4 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 spec/shr_imaging.txt create mode 100644 spec/shr_imaging_vs.txt diff --git a/spec/ig-mcode-config.json b/spec/ig-mcode-config.json index 740ca4eb..b62f7489 100644 --- a/spec/ig-mcode-config.json +++ b/spec/ig-mcode-config.json @@ -14,15 +14,15 @@ "historyLink": "http://hl7.org/fhir/us/mcode/history.html", "primarySelectionStrategy": { - "strategy": "namespace", - "primary": ["mcode"], + "strategy": "hybrid", + "primary": ["mcode"], "hideSupporting": true } }, "filterStrategy": { "filter": true, - "strategy": "namespace", + "strategy": "hybrid", "target": ["mcode"] }, "publisher": "The HL7 Cancer Interoperability Group sponsored by Clinical Interoperability Council Work Group (CIC)", diff --git a/spec/shr_imaging.txt b/spec/shr_imaging.txt new file mode 100644 index 00000000..d4794928 --- /dev/null +++ b/spec/shr_imaging.txt @@ -0,0 +1,20 @@ +Grammar: DataElement 5.0 +Namespace: mcode +Description: "Diagnostic imaging." +Uses: shr.core, shr.base, shr.entity, shr.medication, shr.composition, shr.procedure + +CodeSystem: SCT = http://snomed.info/sct +CodeSystem: LNC = http://loinc.org +CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: UCUM = http://unitsofmeasure.org +CodeSystem: HGNC = http://www.genenames.org +CodeSystem: CAP = https://sdt.cap.org +CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category + +EntryElement: DiagnosticImagingPerformed +Based on: ProcedurePerformed +Description: "Diagnostic imaging procedure performed." +Concept: SCT#363679005 "Imaging (procedure)" +// SpecificFocusOfFinding value is type Patient + TopicCode from DiagnosticImagingVS + diff --git a/spec/shr_imaging_vs.txt b/spec/shr_imaging_vs.txt new file mode 100644 index 00000000..814839a6 --- /dev/null +++ b/spec/shr_imaging_vs.txt @@ -0,0 +1,8 @@ +Grammar: ValueSet 5.0 +Namespace: mcode + +CodeSystem: SCT = http://snomed.info/sct + +ValueSet: DiagnosticImagingVS +Description: "Imaging procedures." +Includes codes descending from SCT#363679005 "Imaging (procedure)" diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index 5735f5d1..72ac26bf 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -15,10 +15,8 @@ CodeSystem: RXN = http://www.nlm.nih.gov/research/umls/rxnorm EntryElement: MedicationTreatmentPerformed Based on: MedicationStatement // the therapy itself could be a procedure. Description: "A medication that is part of a drug treatment regimen" -Concept: SCT#416608005 "Drug therapy (procedure)" // TODO: investigate whether we need a new code or use a drug concept. -Value: CodeableConcept from http://www.nlm.nih.gov/research/umls/rxnorm +Concept: SCT#416608005 "Drug therapy (procedure)" // SpecificFocusOfFinding value is type TreatmentRegimen - TopicCode is SCT#416608005 "Drug therapy (procedure)" 0..1 TreatmentIntent 0..1 LineOfTherapy 0..1 RegimenIdentifier @@ -31,7 +29,7 @@ Based on: ProcedurePerformed Description: "A medication that is part of a radiation oncology related regimen" Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" // SpecificFocusOfFinding value is type TreatmentRegimen - TopicCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" + TopicCode from RadiationModalityVS if covered 0..1 TreatmentIntent 0..1 LineOfTherapy 0..1 RegimenIdentifier @@ -48,7 +46,7 @@ Based on: SurgicalProcedurePerformed Description: "A medication that is part of a drug treatment regimen" Concept: SCT#387713003 "Surgical procedure (procedure)" // SpecificFocusOfFinding value is type TreatmentRegimen - TopicCode is SCT#387713003 "Surgical procedure (procedure)" + TopicCode from SurgicalProcedureVS if covered 0..1 TreatmentIntent 0..1 LineOfTherapy 0..1 RegimenIdentifier From a8a9a752d539382ef923f704c4c04759d5b046bb Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 7 Nov 2018 09:24:00 -0500 Subject: [PATCH 086/289] Backing out of FindingValue. Wasn't able to fix a compile problem. Still like the idea of not having values in Clusters, however. --- spec/shr_base_finding.txt | 44 ++++++--------- spec/shr_base_map.txt | 25 ++++---- spec/shr_core.txt | 33 ++++++----- spec/shr_core_map.txt | 6 +- spec/shr_entity.txt | 4 +- spec/shr_entity_map.txt | 2 +- spec/shr_familyhistory.txt | 34 +++++++++++ spec/shr_medication_map.txt | 2 +- spec/shr_occupation.txt | 2 +- spec/shr_occupation_map.txt | 4 +- spec/shr_oncology.txt | 2 +- spec/shr_oncologycore.txt | 110 +++++++++++++++++------------------- spec/shr_procedure_map.txt | 8 +-- spec/shr_research.txt | 4 +- spec/shr_research_map.txt | 2 +- spec/shr_wound.txt | 4 +- 16 files changed, 156 insertions(+), 130 deletions(-) create mode 100644 spec/shr_familyhistory.txt diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index a021cddf..be4faa0b 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -10,16 +10,12 @@ Description: "A finding that does not or cannot stand alone, or a component of // should we have finding protocol, finding precondition, finding question, finding data, finding interpretation? // how do we handle normal? (physical exam normal) // exclusions? (diabetes excluded) -1..1 FindingTopicCode // Question, test name, or assertion -0..1 FindingValue +Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) + // exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 +1..1 FindingTopicCode // Question, test name, or condition 0..1 ExceptionValue 0..1 ReferenceRange // included here only because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. - Element: FindingValue - Concept: TBD - Description: "The observed value associated with a finding." - Value: Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod - // exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 Element: FindingTopicCode Description: "A code describing what the finding concerns, such as a lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property of the Patient or SpecificFocusOfFinding being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist. The topic code is not the result of the evaluation, which is found in the value. " @@ -49,7 +45,7 @@ Description: "A finding that does not or cannot stand alone, or a component of Value: Range Abstract Element: Finding -Based on: NonIndependentFinding // Although the parent is NonIndependentFinding, a Finding can be independent. It's a modeling compromise that allows better mapping. +Based on: NonIndependentFinding // A Finding has elements that allow it to be independently observed. It's a modeling compromise that allows better mapping. Description: "An assertion, determination, opinion, evaluation, result, observation, or measurement made by a person or device." 0..1 Patient 0..1 SpecificFocusOfFinding @@ -97,7 +93,7 @@ For an Observation, the FindingTopicCode describes the aspect or property of the 0..1 DeltaFlag 1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered 0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? -0..1 AdditionalText +0..1 CommentOrDescription 0..1 Interpretation 0..1 Device 0..1 Specimen @@ -116,11 +112,6 @@ For an Observation, the FindingTopicCode describes the aspect or property of the Description: "The relationship to the person of record." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered - Element: AdditionalText - Concept: MTH#C0947611 - Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." - Value: string // change to language-text - Element: Interpretation Concept: MTH#C0420833 Description: "A clinical interpretation of a finding (applies to both assertions and observation)." @@ -164,7 +155,7 @@ EntryElement: CodedNonLaboratoryObservation Based on: NonLaboratoryObservation Concept: TBD Description: "The result of evaluations (measurements, tests, or questions) whose answer is expressed as a code." - FindingValue value is type CodeableConcept +Value: CodeableConcept 0..0 ReferenceRange EntryElement: SimpleCodedNonLaboratoryObservation @@ -176,7 +167,7 @@ Description: "An observation whose result is a code, and also having no componen EntryElement: ComponentOnlyNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation with components, but without a result value or panel members." -0..0 FindingValue +0..0 Value 0..0 ExceptionValue 0..0 PanelMembers 0..0 ReferenceRange @@ -200,7 +191,7 @@ Description: "A coded finding based on a specimen collected from a patient." EntryElement: CodedLaboratoryObservation Based on: LaboratoryObservation Description: "A coded finding from a laboratory test." - FindingValue value is type CodeableConcept +Value: CodeableConcept 0..0 ReferenceRange EntryElement: SimpleLaboratoryObservation @@ -221,8 +212,8 @@ Abstract Element: ExistenceAssertion Based on: Finding Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place. For assertions, the FindingTopicCode represents the thing asserted to be present or absent; i.e., the type of condition, event, relationship or phenomenon that is being asserted to exist or not exist." - FindingValue value is type CodeableConcept - FindingValue from PresentAbsentVS +Value: CodeableConcept from PresentAbsentVS +// Leave ExceptionValue in, to represent the case where the presence or absence of something was not evaluated 0..0 ReferenceRange 0..1 ObjectIdentifier // TODO: 0..* business identifier? 0..1 Certainty @@ -240,14 +231,14 @@ For assertions, the FindingTopicCode represents the thing asserted to be present Abstract Element: PresenceAssertion Based on: ExistenceAssertion Description: "Finding that a phenomena is present." - FindingValue.CodeableConcept is SCT#52101004 "Present (qualifier value)" + Value is SCT#52101004 "Present (qualifier value)" 0..1 Certainty from PresenceCertaintyVS Abstract Element: AbsenceAssertion Based on: ExistenceAssertion Description: "Finding that an entity, person, role, condition, or phenomenon is absent." - FindingValue.CodeableConcept is SCT#2667000 "Absent (qualifier value)" + Value is SCT#2667000 "Absent (qualifier value)" 0..1 Certainty from AbsenceCertaintyVS @@ -265,7 +256,7 @@ Description: "A condition that is or may be present in a subject. 'Condition' is 0..1 PresentOnAdmission 0..1 Severity 0..1 Criticality -0..1 Stage +0..1 StageInformation 0..1 Onset 0..1 Abatement // TODO: change abatement to an Observation @@ -299,7 +290,7 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Description: "The potential clinical harm associated with a condition. When the worst case result is assessed to have a life-threatening or organ system threatening potential, it is considered to be of high criticality." Value: code from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality - Element: Stage + Element: StageInformation Concept: MTH#C0699749 Description: "The relative advancement in the course of a disease. The StageCode is the summary stage or stage group. StageDetail optionally contains the full staging information." 0..1 StageSummary @@ -348,14 +339,13 @@ EntryElement: ClinicalNote Based on: Finding Concept: MTH#C0747978 "Progress Note" Description: "An entry concerning a patient where the result is a narrative text." -0..0 FindingValue +0..0 Value 0..0 ReferenceRange 1..1 Patient -1..1 AdditionalText // make required +1..1 CommentOrDescription // make required Abstract Element: RelationshipExistenceAssertion Based on: ExistenceAssertion Description: "An assertion of a realtionship between two things being either present or absent. The subject of the relationship is is the Patient (or SpecificFocusOfFinding, if given) and the object of the relationship is . For relationships, FindingTopicCode describes the relationship, e.g., Father or Mother." - FindingValue value is type CodeableConcept - FindingValue from PresentAbsentVS +Value: CodeableConcept from PresentAbsentVS diff --git a/spec/shr_base_map.txt b/spec/shr_base_map.txt index 3d5b6c71..9e99979a 100644 --- a/spec/shr_base_map.txt +++ b/spec/shr_base_map.txt @@ -27,12 +27,13 @@ Observation maps to Observation: // TODO: observationresults is only for labs // RecordStatus maps to extension // _Entry.CosignedBy maps to extension // _Entry.VerifiedBy maps to extension +// _Concept maps to code FindingTopicCode maps to code FindingMethod maps to method - AdditionalText maps to comment + CommentOrDescription maps to comment // Media maps to extension Category maps to category - AnatomicalLocation.AnatomicalLocationCode maps to bodySite + AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite Device maps to device Specimen maps to specimen // Precondition maps to extension @@ -44,14 +45,14 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.ApplicableAgeRange maps to referenceRange.age NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code - NonIndependentFinding.FindingValue maps to component.value[x] + NonIndependentFinding.Value maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) - FindingValue maps to value[x] + Value maps to value[x] ExceptionValue maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued @@ -70,10 +71,10 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us // _Entry.VerifiedBy maps to extension FindingTopicCode maps to code FindingMethod maps to method - AdditionalText maps to comment + CommentOrDescription maps to comment // Media maps to extension Category maps to category - AnatomicalLocation.AnatomicalLocationCode maps to bodySite + AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite Device maps to device Specimen maps to specimen // Precondition maps to extension @@ -85,14 +86,14 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us ReferenceRange.ApplicableAgeRange maps to referenceRange.age NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code - NonIndependentFinding.FindingValue maps to component.value[x] + NonIndependentFinding.Value maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) - FindingValue maps to value[x] + Value maps to value[x] ExceptionValue maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued @@ -108,16 +109,16 @@ ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinitio Category maps to category FindingTopicCode maps to code constrain bodySite to 0..0 - AnatomicalLocation.AnatomicalLocationCode maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite + AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Encounter maps to context ClinicalStatus maps to clinicalStatus FindingStatus maps to verificationStatus Onset maps to onset[x] Abatement maps to abatement[x] Severity maps to severity - Stage maps to stage - Stage.StageSummary maps to stage.summary - Stage.StageDetail maps to stage.assessment + StageInformation maps to stage + StageInformation.StageSummary maps to stage.summary + StageInformation.StageDetail maps to stage.assessment ConditionAbsentAssertion maps to Basic: diff --git a/spec/shr_core.txt b/spec/shr_core.txt index fac89da2..77718dc7 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -367,9 +367,9 @@ Concept: MTH#C0750480 Description: "The number of items (0 or more), as an integer." Value: unsignedInt -Element: Details +Element: CommentOrDescription Concept: MTH#C0947611 -Description: "A text note containing additional details, explanation, description, comment, or summarization. Details can discuss, support, explain changes to, or dispute information." +Description: "A text note containing additional details, explanation, description, comment, or summarization." Value: string // change to language-text /* Can't restrict "value is type" to a primitive @@ -413,27 +413,21 @@ Description: "A qualitative (subjective) likelihood." Value: CodeableConcept from QualitativeLikelihoodVS /*Element: Length -Based on: NonIndependentFinding Concept: MTH#C1444754 Description: "The measurement or linear extent of something from end to end; the greatest dimensions of a body." -Value: Quantity -// with units from UnitsOfLengthVS - Value.Units with Coding from UnitsOfLengthVS +Value: Quantity with Coding from UnitsOfLengthVS */ Element: Depth -Based on: NonIndependentFinding Concept: SCT#131197000 "Depth (qualifier value)" Description: "The extent downward or inward; the perpendicular measurement from the surface downward to determine deepness." Value: Quantity with units UCUM#cm Element: Area -Based on: NonIndependentFinding Concept: SCT#42798000 "Area (qualifier value)" Description: "The extent of a 2-dimensional surface enclosed within a boundary." Value: Quantity with units UCUM#cm2 Element: ClockDirection -Based on: NonIndependentFinding Concept: LNC#72294-2 Description: "A direction indicated by an angle relative to 12 o'clock." Value: CodeableConcept from ClockDirectionVS @@ -441,13 +435,11 @@ Value: CodeableConcept from ClockDirectionVS /* Element: Volume -Based on: ??? Concept: MTH#C0449468 Description: "The amount of three dimensional space occupied by an object or the capacity of a space or container." Value: Quantity with units UCUM#TBD Element: Circumference -Based on: ??? Concept: MTH#C0332520 Description: "The length of such a boundary line of a figure, area, or object." */ @@ -744,15 +736,20 @@ Description: "The way a substance enters an organism after contact, particularly Value: CodeableConcept from http://hl7.org/fhir/ValueSet/route-codes Element: AnatomicalLocation -Concept: LNC#72369-2 // Body site identification panel +Concept: LNC#72369-2 // Body site identification panel +// Perhaps SCT#758637006 "Anatomical location (property) (qualifier value)" Description: "A location or structure in the body, including tissues, regions, cavities, and spaces; for example, right elbow, or left ventricle of the heart." -1..1 AnatomicalLocationCode +1..1 AnatomicalLocationOrLandmarkCode 0..1 Laterality +0..1 DistanceFromLandmark 0..1 AnatomicalDirection +0..1 ClockDirection +0..1 CommentOrDescription +0..* Media - Element: AnatomicalLocationCode + Element: AnatomicalLocationOrLandmarkCode Concept: TBD - Description: "Code for the anatomical location, with or without laterality." + Description: "Code for the anatomical location or landmark, with or without laterality." Value: CodeableConcept should be from AnatomicalLocationVS Element: Laterality @@ -764,6 +761,12 @@ Description: "A location or structure in the body, including tissues, regions, c Concept: NCI#C99074 Description: "Anatomical location or specimen further detailing directionality." Value: CodeableConcept from AnatomicalDirectionVS + + Element: DistanceFromLandmark + Concept: TBD + Description: "" + Value: Distance + Element: Identifier Concept: MTH#C0600091 diff --git a/spec/shr_core_map.txt b/spec/shr_core_map.txt index ad58ee30..f4d6a8fc 100644 --- a/spec/shr_core_map.txt +++ b/spec/shr_core_map.txt @@ -115,11 +115,13 @@ Media maps to Attachment: Title maps to title CreationTime maps to creation - // From FHIR 3.5 documentation: "The BodyStructure resource is not ... intended for describing the type of anatomical location but rather a specific body site on a specific patient." + // Note that AnatomicalLocation does not have a patient, whereas FHIR BodySite (BodyStructure in r4) does. From FHIR 3.5 documentation: "The BodyStructure resource is not ... intended for describing the type of anatomical location but rather a specific body site on a specific patient." AnatomicalLocation maps to BodySite: - AnatomicalLocationCode maps to code + AnatomicalLocationOrLandmarkCode maps to code Laterality maps to qualifier (slice on = coding.code) AnatomicalDirection maps to qualifier + CommentOrDescription maps to description + Media maps to image Annotation maps to Annotation: Text maps to text diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 9216200c..09502c19 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -191,7 +191,7 @@ Description: "Any matter of defined composition that has discrete existence, who 1..1 Type should be from http://hl7.org/fhir/ValueSet/substance-code 0..* Category from http://hl7.org/fhir/ValueSet/substance-category if covered 0..1 ActiveFlag -0..1 AdditionalText +0..1 CommentOrDescription 0..* Ingredient ActiveFlag value is type CodeableConcept ActiveFlag from http://hl7.org/fhir/ValueSet/substance-status @@ -645,7 +645,7 @@ Concept: TBD Description: "Direct container of specimen (tube/slide, etc.)" 0..1 Type //"Kind of container holding the specimen - e.g. a vial or well." 0..1 Identifier -0..1 AdditionalText +0..1 CommentOrDescription 0..1 Capacity 0..1 SpecimenQuantity 0..* Additive diff --git a/spec/shr_entity_map.txt b/spec/shr_entity_map.txt index bb634c25..05a70222 100644 --- a/spec/shr_entity_map.txt +++ b/spec/shr_entity_map.txt @@ -119,7 +119,7 @@ Specimen maps to Specimen: // SpecimenCollectionPerformed.Method maps to collection.method // SpecimenCollectionPerformed.RelatedRequest.Value maps to request SpecimenContainer.Identifier maps to container.identifier - SpecimenContainer.AdditionalText maps to container.description + SpecimenContainer.CommentOrDescription maps to container.description SpecimenContainer.Type maps to container.type SpecimenContainer.Capacity maps to container.capacity SpecimenContainer.SpecimenQuantity maps to container.specimenQuantity diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt new file mode 100644 index 00000000..25f0f0a2 --- /dev/null +++ b/spec/shr_familyhistory.txt @@ -0,0 +1,34 @@ +Grammar: DataElement 5.0 +Namespace: fhx +Description: "Contains elements related to the health history of a patient's family members." +Uses: shr.core, shr.base, shr.entity + CodeSystem: LNC = http://loinc.org + +EntryElement: FamilyMember +Based on: RelatedPerson +Description: "A related person that is a family member of the patient. This includes biological and non-biological family, as well as extended family." +1..1 RelationshipToPersonOfRecord from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion // Family member value VS used in CCDA. 2015 Ed ONC Cert Criteria indicate relationship to patient should be coded in SCT, and allows for pre- or post-coordination with condition. TODO: consider SCT value set (maybe allow both?) + + +EntryElement: FamilyMemberhealthlHistory +Based on: Finding +Concept: LNC#54114-4 "Family member health history [USSG-FHT] Family member" //This is part of a US General Surgeon general family health LOINC panel +Description: "The health history of a patient's family member." +1..1 Patient +// SpecificFocusOfFinding value is type FamilyMember + FindingStatus from http://hl7.org/fhir/ValueSet/history-status +0..* FamilyMemberConditionPresentAssertion + + +EntryElement: FamilyMemberConditionPresentAssertion +Based on: PresenceAssertion +Concept: LNC#8670-2 "History of family member diseases" +0..1 Onset +0..1 ConditionOutcome +0..0 FindingMethod + FindingTopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered +// SpecificFocusOfFinding value is type FamilyMember + Element: ConditionOutcome + Concept: TBD#TBD + Description: "The lasting effects of a disease, e.g. death, functional impairment." + Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/condition-outcome \ No newline at end of file diff --git a/spec/shr_medication_map.txt b/spec/shr_medication_map.txt index b0009c74..9a731677 100644 --- a/spec/shr_medication_map.txt +++ b/spec/shr_medication_map.txt @@ -10,7 +10,7 @@ Dosage maps to Dosage: AdditionalDosageInstruction maps to additionalInstruction RouteIntoBody maps to route DosageMethod maps to method - DosageBodySite.AnatomicalLocation.AnatomicalLocationCode maps to site + DosageBodySite.AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to site MaximumDosePerTimePeriod maps to maxDosePerPeriod MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 8e6134e9..728f66b3 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -220,7 +220,7 @@ Description: "A simplified observation for social histories." 0..0 Interpretation 0..0 Encounter 0..0 DeltaFlag -0..0 AdditionalText +0..0 CommentOrDescription //0..0 FindingStatus Element: FocalSubjectModifier diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index d9fc8035..730cb6c2 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -9,12 +9,12 @@ SocialHistoryObservation maps to Observation: Category maps to category NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code - NonIndependentFinding.FindingValue maps to component.value[x] + NonIndependentFinding.Value maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange // constrain related to 0..0 - FindingValue maps to value[x] + Value maps to value[x] // ExceptionValue maps to dataAbsentReason RelevantTime maps to effective[x] // Encounter maps to context diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index a4ef8181..ad039a0c 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -43,7 +43,7 @@ Based on: ConditionPresentAssertion Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." FindingTopicCode from BreastCancerTypeVS - Stage.StageDetail value is type BreastCancerStage + StageInformation.StageDetail value is type BreastCancerStage 0..1 FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding AnatomicalLocation is type BreastSite 0..1 MorphologyBehavior from MorphologyBehaviorVS diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 9bc06fbb..8b444344 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -7,17 +7,15 @@ CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: UCUM = http://unitsofmeasure.org -CodeSystem: HGNC = http://www.genenames.org -CodeSystem: CAP = https://sdt.cap.org -CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category + EntryElement: CancerDisorder Based on: ConditionPresentAssertion Description: "The presence of malignant neoplastic disease, in which abnormal cells divide without control and can invade nearby tissues." Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" - FindingTopicCode from CancerDisorderVS -// 0..0 Stage.StageGroup - Stage.StageDetail value is type CancerStage + FindingTopicCode from CancerDisorderVS + StageInformation.StageSummary from http://loinc.org/vs/LL240-3 // MK - also include stage group here + StageInformation.StageDetail value is type CancerStage // 0..1 MorphologyBehavior from MorphologyBehaviorVS //Not carried over from BrCa because it was intended to break out behavior codes from ICD-O-3, and we are no longer using it. @@ -26,8 +24,7 @@ EntryElement: CancerHistologicType Based on: CodedNonLaboratoryObservation Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" Concept: SCT#86049000 "Malignant neoplasm, primary (morphologic abnormality)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." - FindingValue.CodeableConcept from CancerHistologicTypeVS -// FindingValue from + Value from CancerHistologicTypeVS FindingTopicCode is SCT#86049000 "Malignant neoplasm, primary (morphologic abnormality)" EntryElement: CancerHistologicGrade @@ -35,7 +32,7 @@ EntryElement: CancerHistologicGrade Based on: SimpleCodedNonLaboratoryObservation Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" Concept: LNC#21858-6 "Grade Cancer" - FindingValue.CodeableConcept from http://loinc.org/vs/LL213-0 + Value from http://loinc.org/vs/LL213-0 FindingTopicCode is LNC#21858-6 "Grade Cancer" // SpecificFocusOfFinding value is type CancerDisorder // TODO: this is failing; bug reported 0..0 AnatomicalLocation @@ -45,22 +42,22 @@ EntryElement: CancerProgression Based on: CodedNonLaboratoryObservation Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" Concept: SCT#246453008 "Course of illness (attribute)" - FindingValue.CodeableConcept from CancerProgressionVS + Value from CancerProgressionVS FindingTopicCode is SCT#246453008 "Course of illness (attribute)" EntryElement: CancerStage Based on: Observation Description: "The extent a cancer has spread in the body (source: NCI Dictionary of Cancer Terms)" Concept: SCT#258232002 "Cancer staging (tumor staging)" - FindingTopicCode is SCT#258232002 "Cancer staging (tumor staging)" - 0..0 FindingValue + FindingTopicCode is SCT#258232002 "Cancer staging (tumor staging)" + 0..0 Value // SpecificFocusOfFinding value is type CancerDisorder NonIndependentFinding - includes 0..1 StageTiming // retained StageTiming because if using TNM staging, the StageGroup still needs a prefix (even if we're using precoordinated categories). There are LOINC codes for clinical and pathologic stage groups in LOINC, but we back ourselves into TNM for stage group if we use them. - includes 0..1 StagingSystem + includes 0..1 StageGroup // MK - Should this be the value? + includes 0..1 StageTiming // retained StageTiming because if using TNM staging, the StageGroup still needs a prefix (even if we're using precoordinated categories). There are LOINC codes for clinical and pathologic stage groups in LOINC, but we back ourselves into TNM for stage group if we use them. + includes 0..1 StagingSystem //RM: my gut is telling me to add a TNM wrapper that could contain the TNM categories below - PanelMembers.Observation - includes 0..1 StageGroup + PanelMembers.Observation // MK - why aren't these components? includes 0..1 TNMClinicalPrimaryTumorClassification includes 0..1 TNMClinicalRegionalNodesClassification includes 0..1 TNMClinicalDistantMetastasesClassification @@ -72,89 +69,91 @@ Element: StageTiming Based on: NonIndependentFinding Concept: SCT#260869008 "Timing of stage" Description: "Indicates when the staging was done, in terms of treatment landmarks." - FindingValue.CodeableConcept from StageTimingPrefixVS +Value: CodeableConcept from StageTimingPrefixVS FindingTopicCode is SCT#260869008 "Timing of stage" Element: StagingSystem Based on: NonIndependentFinding Concept: SCT#254292007 "Tumor staging (tumor staging)" // TODO: Needs LOINC code. Description: "A systematic method for clinicopathologic evaluation of tumors. (source: NCI Metathesaurus)" - FindingValue.CodeableConcept from CancerStagingSystemVS +Value: CodeableConcept from CancerStagingSystemVS FindingTopicCode is SCT#254292007 "Tumor staging (tumor staging)" // TODO: Needs LOINC code. EntryElement: StageGroup // did not use precoordinated codes because only available for clinical and pathologic. +//Based on: NonIndependentFinding Based on: CodedNonLaboratoryObservation -Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" Concept: MTH#C1302362 "Stage Grouping" - FindingValue.CodeableConcept from http://loinc.org/vs/LL240-3 +Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" +//Value: CodeableConcept from http://loinc.org/vs/LL240-3 + Value from http://loinc.org/vs/LL240-3 FindingTopicCode is MTH#C1302362 "Stage Grouping" // SpecificFocusOfFinding value is type CancerStage -Element: TNMClinicalPrimaryTumorClassification +Element: StageSuffix +Based on: NonIndependentFinding +Concept: TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. assign a local value set until we get something assigned. +Description: "A suffix used in conjuction with certain cancer stage categories, usually qualifying how the category value was determined." +Value: CodeableConcept from StageSuffixVS // local value set created + FindingTopicCode is TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. + + +EntryElement: TNMClinicalPrimaryTumorClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." - FindingValue.CodeableConcept from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 + Value from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 // SpecificFocusOfFinding value is type CancerStage NonIndependentFinding includes 0..1 StageSuffix includes 0..1 StageTiming // TODO: make this a fixed value to clinical. -Element: StageSuffix -Based on: NonIndependentFinding -Concept: TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. assign a local value set until we get something assigned. -Description: "A suffix used in conjuction with certain cancer stage categories, usually qualifying how the category value was determined." - FindingValue.CodeableConcept from StageSuffixVS // local value set created - FindingTopicCode is TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. - - -Element: TNMClinicalRegionalNodesClassification +EntryElement: TNMClinicalRegionalNodesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC - FindingValue.CodeableConcept from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 + Value from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" // SpecificFocusOfFinding value is type CancerStage NonIndependentFinding includes 0..1 StageSuffix includes 0..1 StageTiming // TODO: make this a fixed value to clinical. -Element: TNMClinicalDistantMetastasesClassification +EntryElement: TNMClinicalDistantMetastasesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC - FindingValue.CodeableConcept from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 + Value from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" // SpecificFocusOfFinding value is type CancerStage -Element: TNMPathologicPrimaryTumorClassification +EntryElement: TNMPathologicPrimaryTumorClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21899-0 "Primary tumor.pathology Cancer" Description: "" //TODO: pull from LOINC - FindingValue.CodeableConcept from http://loinc.org/vs/LL232-0 // normative + Value from http://loinc.org/vs/LL232-0 // normative FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" // SpecificFocusOfFinding value is type CancerStage NonIndependentFinding includes 0..1 StageSuffix includes 0..1 StageTiming // TODO: make this a fixed value to pathologic. -Element: TNMPathologicRegionalNodesClassification +EntryElement: TNMPathologicRegionalNodesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" Description: "" //TODO: pull from LOINC - FindingValue.CodeableConcept from http://loinc.org/vs/LL3136-0 // normative + Value from http://loinc.org/vs/LL3136-0 // normative FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" // SpecificFocusOfFinding value is type CancerStage NonIndependentFinding includes 0..1 StageSuffix includes 0..1 StageTiming // TODO: make this a fixed value to pathologic. -Element: TNMPathologicDistantMetastasesClassification +EntryElement: TNMPathologicDistantMetastasesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" Description: "" //TODO: pull from LOINC - FindingValue.CodeableConcept from http://loinc.org/vs/LL3137-8 + Value from http://loinc.org/vs/LL3137-8 FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative // SpecificFocusOfFinding value is type CancerStage @@ -163,22 +162,27 @@ EntryElement: Tumor // NOTE: Includes TumorLocation as AnatomicalLocation be Based on: NonLaboratoryObservation Description: "An abnormal mass of tissue that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). Also called neoplasm. (source: NCI Dictionary)." Concept: SCT#395557000 "Tumor finding (finding)" -// SpecificFocusOfFinding value is type CancerDisorder FindingTopicCode is SCT#395557000 "Tumor finding (finding)" NonIndependentFinding includes 0..1 PrimaryTumorIndicator - 0..0 Stage + 0..0 StageInformation Element: PrimaryTumorIndicator -Based on: CodedNonLaboratoryObservation +Based on: NonIndependentFinding Description: "Whether the tumor is the original, or first, tumor in the body, for a particular cancer." Concept: SCT#260716003 "Site of Primary Tumor (attribute)" - FindingValue.CodeableConcept from YesNoVS // TODO: Open a bug for Observation Value to support boolean data type. This is possible in the FHIR Observation.value.valueBoolean attribute. Change back to boolean after fix. +Value: CodeableConcept from YesNoUnknownVS // TODO: Open a bug for Observation Value to support boolean data type. This is possible in the FHIR Observation.value.valueBoolean attribute. Change back to boolean after fix. FindingTopicCode is SCT#260716003 "Site of Primary Tumor (attribute)" -// SpecificFocusOfFinding value is type Tumor +EntryElement: EarliestDateOfCancerDiagnosis +//TODO_discussion: added, but not convinced we need a separate element for this given the WhenClinicallyRecognized property of ConditionPresentAssertion. +Based on: SimpleNonLaboratoryObservation +Concept: LNC#77975-1 "Earliest date of diagnosis" +Description: "The earliest date of diagnosis (clinical or laboratory) of an illness or condition (Source: LOINC). This element is the same as the WhenClinicallyRecognized property in CancerDiagnosis." +Value: dateTime // parent class only allows time, dateTime or TimePeriod as choices. +// SpecificFocusOfFinding value is type CancerDisorder /********** Assessments **************/ @@ -188,7 +192,6 @@ EntryElement: ECOGPerformanceStatus Based on: ComponentOnlyNonLaboratoryObservation Description: "The Eastern Cooperative Oncology Group (ECOG) performance status grade or score, which indicates a patient’s level of daily functioning and physical ability. Source: LOINC" Concept: LNC#89246-3 "ECOG Performance Status panel" -// SpecificFocusOfFinding value is type Patient NonIndependentFinding includes 0..1 ECOGPerformanceStatusScore includes 0..1 ECOGPerformanceStatusInterpretation @@ -197,16 +200,13 @@ Element: ECOGPerformanceStatusScore Based on: SimpleNonLaboratoryObservation Concept: LNC#89247-1 "ECOG Performance Status score" Description: "The Eastern Cooperative Oncology Group (ECOG) performance score, which indicates a patient’s level of daily functioning and physical ability. The ECOG grade ranges from 0-5. Source: LOINC" - FindingValue value is type Quantity - FindingValue.Quantity.Units.Coding is UCUM#1 -// SpecificFocusOfFinding value is type Patient +Value: Quantity with units UCUM#1 Element: ECOGPerformanceStatusInterpretation Based on: CodedNonLaboratoryObservation Concept: LNC#89262-0 "ECOG Performance Status [Interpretation]" Description: "The Eastern Cooperative Oncology Group (ECOG) Performance Status represents the patient's functional status and is used to determine their ability to tolerate therapies in serious illness, specifically for chemotherapy. (Source: LOINC)" - FindingValue.CodeableConcept from http://loinc.org/vs/LL529-9 // normative answer list for LNC#89262-0, the scores are included in descriptions of answers -// SpecificFocusOfFinding value is type Patient + Value from http://loinc.org/vs/LL529-9 // normative answer list for LNC#89262-0, the scores are included in descriptions of answers //KPS is a panel in LOINC with score and interpretation as two components of the panel. @@ -214,7 +214,6 @@ EntryElement: KarnofskyPerformanceStatus Based on: ComponentOnlyNonLaboratoryObservation Description: "The Karnofsky Performance Status (KPS) is a tool used to measure a patient's functional status. It can be used to compare the effectiveness of different therapies and to help assess the prognosis of certain patients, such as those with certain cancers. The KPS score ranges from 0 to 100. Higher scores are associated with better functional status, with 100 representing no symptoms or evidence of disease, and 0 representing death [PMID: 23870327] . This panel contains LOINC terms to report the KPS score [LOINC: 89243-0] and its interpretation [LOINC: 89245-5]." Concept: LNC#89245-5 "Karnofsky Performance Status panel" -// SpecificFocusOfFinding value is type Patient PanelMembers.Observation includes 0..1 KarnofskyPerformanceStatusScore includes 0..1 KarnofskyPerformanceStatusInterpretation @@ -222,12 +221,9 @@ Concept: LNC#89245-5 "Karnofsky Performance Status panel" Element: KarnofskyPerformanceStatusScore Based on: SimpleNonLaboratoryObservation Concept: LNC#89243-0 "Karnofsky Performance Status score" - FindingValue value is type Quantity - FindingValue.Quantity.Units.Coding is UCUM#1 -// SpecificFocusOfFinding value is type Patient +Value: Quantity with units UCUM#1 Element: KarnofskyPerformanceStatusInterpretation Based on: CodedNonLaboratoryObservation Concept: LNC#89245-5 "Karnofsky Performance Status [Interpretation]" - FindingValue.CodeableConcept from http://loinc.org/vs/LL4986-7 // normative answer list -// SpecificFocusOfFinding value is type Patient \ No newline at end of file + Value from http://loinc.org/vs/LL4986-7 // normative answer list \ No newline at end of file diff --git a/spec/shr_procedure_map.txt b/spec/shr_procedure_map.txt index 40159411..1f0166c5 100644 --- a/spec/shr_procedure_map.txt +++ b/spec/shr_procedure_map.txt @@ -9,7 +9,7 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Category maps to category constrain notDone to 0..0 constrain notDoneReason to 0..0 - AnatomicalLocation.AnatomicalLocationCode maps to bodySite + AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite PartOf maps to partOf Annotation maps to note Encounter maps to context @@ -35,7 +35,7 @@ ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us // TODO the following is causing a crash // fix notDone to true Reason maps to notDoneReason - AnatomicalLocation.AnatomicalLocationCode maps to bodySite + AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite // PartOf maps to partOf Annotation maps to note constrain performed[x] to 0..0 @@ -60,7 +60,7 @@ ProcedureRequested maps to ProcedureRequest: Category maps to category constrain doNotPerform to 0..0 Patient maps to subject - AnatomicalLocation.AnatomicalLocationCode maps to bodySite + AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite Encounter maps to context Reason maps to reasonCode Status maps to status @@ -78,6 +78,6 @@ ProcedureRequestedAgainst maps to ProcedureRequest: TopicCode maps to code Category maps to category Patient maps to subject - AnatomicalLocation.AnatomicalLocationCode maps to bodySite + AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite Reason maps to reasonCode // Encounter maps to context diff --git a/spec/shr_research.txt b/spec/shr_research.txt index 04dbb238..301ca085 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -10,7 +10,7 @@ Concept: TBD Description: "A clinical trial or similar research study. Reference: list of FDA data elements describing a research study: prsinfo.clinicaltrials.gov/definitions.html " 1..1 Title 1..1 Identifier -0..1 AdditionalText +0..1 CommentOrDescription 0..1 PartOf value is type Study 1..1 Status from http://hl7.org/fhir/ValueSet/research-study-status 0..* Enrollment @@ -55,7 +55,7 @@ Description: "A clinical trial or similar research study. Reference: list of FDA Description: "Arm refers to pre-specified group or subgroup of participant(s) in a clinical trial assigned to receive specific intervention(s) (or no intervention) according to a protocol." 1..1 Title 0..1 Type from StudyArmTypeVS - 0..1 AdditionalText + 0..1 CommentOrDescription EntryElement: ResearchSubject Based on: Entity diff --git a/spec/shr_research_map.txt b/spec/shr_research_map.txt index af43ce2b..87c4ae8a 100644 --- a/spec/shr_research_map.txt +++ b/spec/shr_research_map.txt @@ -20,7 +20,7 @@ Study maps to ResearchStudy: Annotation maps to note StudyArm.Title maps to arm.name StudyArm.Type maps to arm.code - StudyArm.AdditionalText maps to arm.description + StudyArm.CommentOrDescription maps to arm.description ResearchSubject maps to ResearchSubject: Patient maps to individual diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 5d1d0299..3a88dcdc 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -14,7 +14,7 @@ See https://s.details.loinc.org/LOINC/39135-9.html?sections=Comprehensive 81666-0 Wound number [Identifier] 72300-7 Wound type R 89250-5 Device or anatomic structure visible in wound - 89251-3 Condition present on admission + 89251-3 Condition present on admission 11373-8 Injury cause 88878-4 Date of condition abatement {mm/dd/yyyy} 72170-4 Photographic image @@ -96,7 +96,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t Element: WoundAnatomicalLocation Based on: AnatomicalLocation Concept: LNC#39111-0 "Body Site" - AnatomicalLocationCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.14/expansion + AnatomicalLocationOrLandmarkCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.14/expansion 1..1 Laterality 0..0 AnatomicalDirection From c6b12225e2de77fa6074b2eb17a8372b41694fae Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 7 Nov 2018 09:56:06 -0500 Subject: [PATCH 087/289] Fixed merge errors --- spec/shr_base_finding.txt | 18 ++++++++++-------- spec/shr_base_map.txt | 1 + spec/shr_intervention.txt | 15 +++++++-------- spec/shr_intervention_vs.txt | 8 +++++++- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index be4faa0b..c5fd0d89 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -48,12 +48,9 @@ Abstract Element: Finding Based on: NonIndependentFinding // A Finding has elements that allow it to be independently observed. It's a modeling compromise that allows better mapping. Description: "An assertion, determination, opinion, evaluation, result, observation, or measurement made by a person or device." 0..1 Patient -0..1 SpecificFocusOfFinding 0..1 Encounter // findings are often associated with specific encounters -0..1 FindingMethod 1..1 FindingStatus -0..1 RelevantTime -0..* NonIndependentFinding +0..1 SpecificFocusOfFinding Element: SpecificFocusOfFinding Description: "The specific observed item finding relates to. The SpecificFocusOfFinding is only required if the thing observed is different than the patient. SpecificFocusOfFinding should not be used to record anatomical location." @@ -64,7 +61,6 @@ Description: "An assertion, determination, opinion, evaluation, result, observat Description: "The FindingFocus could be a relative of the patient, a location, or a group. The FindingFocus for cancer progression would be the cancer condition. If the property is wound length, the FindingFocus would be an instance of a wound. In the case of an assertion of existence, the FindingFocus is the larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." Value: string or CodeableConcept or Identifier or ref(InformationItem) - Element: RelevantTime Concept: TBD Description: "The time or time period that the statement addresses. @@ -88,6 +84,9 @@ Description: "Represents the result of evaluations (measurements, tests, or ques Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments. For an Observation, the FindingTopicCode describes the aspect or property of the subject being observed or measured. The FindingTopicCode is the 'question code' that pairs to the 'answer' contained in the Value." //0..0 Observer +0..1 FindingMethod +0..1 RelevantTime +0..* NonIndependentFinding FindingStatus value is type code FindingStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 DeltaFlag @@ -247,13 +246,16 @@ Based on: PresenceAssertion Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." //0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson +1..1 Patient FindingTopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make binding weaker because US Core requires an extensible binding +0..0 SpecificFocusOfFinding // always the patient? +0..0 FindingMethod 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation -0..* ConditionCause +//0..* ConditionCause MK - reduce clutter 1..1 ClinicalStatus -0..1 WhenClinicallyRecognized -0..1 PresentOnAdmission +//0..1 WhenClinicallyRecognized MK - reduce clutter +//0..1 PresentOnAdmission 0..1 Severity 0..1 Criticality 0..1 StageInformation diff --git a/spec/shr_base_map.txt b/spec/shr_base_map.txt index 9e99979a..b3eb8fd8 100644 --- a/spec/shr_base_map.txt +++ b/spec/shr_base_map.txt @@ -106,6 +106,7 @@ ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinitio // _Entry.CreationTime maps to assertedDate // why doesn't this work? // Patient maps to subject // SourceOfInformation.Value maps to asserter // why doesn't this work? + Patient maps to subject Category maps to category FindingTopicCode maps to code constrain bodySite to 0..0 diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index 46d91852..d0b70aa8 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -19,10 +19,7 @@ Concept: SCT#416608005 "Drug therapy (procedure)" // SpecificFocusOfFinding value is type TreatmentRegimen 0..1 TreatmentIntent 0..1 LineOfTherapy - 0..1 RegimenIdentifier - 0..1 RegimenName - 0..1 RegimenStartDate - 0..1 RegimenStopDate + EntryElement: CourseOfTreatment Based on: ProcedurePerformed @@ -34,6 +31,7 @@ Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure 0..1 LineOfTherapy 0..* ActionPerformed + EntryElement: SurgicalTreatmentPerformed Based on: SurgicalProcedurePerformed Description: "A medication that is part of a drug treatment regimen" @@ -42,10 +40,11 @@ Concept: SCT#387713003 "Surgical procedure (procedure)" TopicCode from SurgicalProcedureVS if covered 0..1 TreatmentIntent 0..1 LineOfTherapy - 0..1 RegimenIdentifier - 0..1 RegimenName - 0..1 RegimenStartDate - 0..1 RegimenStopDate + + Element: TreatmentIntent + Concept: SCT#395077000 "Treatment intent (situation)" // TODO: Needs a new LOINC number" + Description: "The intended result from a given treatment. Examples include curative, palliative, and supportive." + Value: CodeableConcept from TreatmentIntentVS Element: LineOfTherapy Description: "The sequence of therapies administered to a patient." diff --git a/spec/shr_intervention_vs.txt b/spec/shr_intervention_vs.txt index 1fc6c789..4f54a28f 100644 --- a/spec/shr_intervention_vs.txt +++ b/spec/shr_intervention_vs.txt @@ -7,7 +7,6 @@ CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: RXN = http://www.nlm.nih.gov/research/umls/rxnorm - ValueSet: LineOfTherapyVS Description: "The sequence of therapies administered to a patient." MTH#C45792 "First-Line Therapy" // TODO: Need new LOINC and SNOMED codes @@ -15,8 +14,15 @@ MTH#C54350 "Second-Line Therapy" // TODO: Need new LOINC and SNOMED c MTH#C94628 "Third-Line Therapy" // TODO: Need new LOINC and SNOMED codes MTH#C133522 "Fourth-Line Therapy" // TODO: Need new LOINC and SNOMED codes +ValueSet: TreatmentIntentVS +Description: "The intended result from a given treatment. Examples include curative, palliative, and supportive." +SCT#373808002 "Curative - procedure intent (qualifier value)" +SCT#399707004 "Supportive - procedure intent (qualifier value)" +SCT#363676003 "Palliative - procedure intent (qualifier value)" ValueSet: RadiationModalityVS Description: "Radiation oncology AND/OR radiotherapy (procedure)" Includes codes descending from SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" + + From 44508177504cb7df1ab9eb004395abf79663cdc2 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 7 Nov 2018 11:01:05 -0500 Subject: [PATCH 088/289] Simplified finding focus, ECOG, Karnofsky --- spec/ig-mcode-config.json | 4 +-- spec/shr_base_finding.txt | 13 +++---- spec/shr_base_map.txt | 18 ++-------- spec/shr_base_vs.txt | 7 ++-- spec/shr_oncologycore.txt | 74 +++++++++++++++++++-------------------- 5 files changed, 49 insertions(+), 67 deletions(-) diff --git a/spec/ig-mcode-config.json b/spec/ig-mcode-config.json index b62f7489..76a52dad 100644 --- a/spec/ig-mcode-config.json +++ b/spec/ig-mcode-config.json @@ -14,7 +14,7 @@ "historyLink": "http://hl7.org/fhir/us/mcode/history.html", "primarySelectionStrategy": { - "strategy": "hybrid", + "strategy": "namespace", "primary": ["mcode"], "hideSupporting": true } @@ -22,7 +22,7 @@ "filterStrategy": { "filter": true, - "strategy": "hybrid", + "strategy": "namespace", "target": ["mcode"] }, "publisher": "The HL7 Cancer Interoperability Group sponsored by Clinical Interoperability Council Work Group (CIC)", diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index c5fd0d89..358875c2 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -53,12 +53,7 @@ Description: "An assertion, determination, opinion, evaluation, result, observat 0..1 SpecificFocusOfFinding Element: SpecificFocusOfFinding - Description: "The specific observed item finding relates to. The SpecificFocusOfFinding is only required if the thing observed is different than the patient. SpecificFocusOfFinding should not be used to record anatomical location." - 1..1 FindingFocus - 0..1 RelationshipToPersonOfRecord - - Element: FindingFocus - Description: "The FindingFocus could be a relative of the patient, a location, or a group. The FindingFocus for cancer progression would be the cancer condition. If the property is wound length, the FindingFocus would be an instance of a wound. In the case of an assertion of existence, the FindingFocus is the larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." + Description: "The specific observed item finding relates to, for example, a related person or condition. The SpecificFocusOfFinding is only required if the thing observed is different than the patient. It should not be an anatomical location. The focus for cancer progression would be the cancer condition. If the property is wound length, the focus would be an instance of a wound. In the case of an assertion of existence, the focus is the larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." Value: string or CodeableConcept or Identifier or ref(InformationItem) Element: RelevantTime @@ -96,8 +91,8 @@ For an Observation, the FindingTopicCode describes the aspect or property of the 0..1 Interpretation 0..1 Device 0..1 Specimen -0..* Precondition -0..* Media +//0..* Precondition MK - avoid clutter +0..* Media // needed in Wound assessment 0..1 PanelMembers Element: Observer @@ -220,7 +215,7 @@ Value: CodeableConcept from PresentAbsentVS Element: ObjectIdentifier Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." - Value: string + Value: Identifier Element: Certainty // TODO: why not move to Finding? Concept: TBD diff --git a/spec/shr_base_map.txt b/spec/shr_base_map.txt index b3eb8fd8..45f450e4 100644 --- a/spec/shr_base_map.txt +++ b/spec/shr_base_map.txt @@ -23,20 +23,13 @@ Narrative maps to Narrative: Observation maps to Observation: // TODO: observationresults is only for labs Patient maps to subject // SourceOfInformation.Value maps to performer // Why doesn't this work??? -// Annotation maps to extension -// RecordStatus maps to extension -// _Entry.CosignedBy maps to extension -// _Entry.VerifiedBy maps to extension -// _Concept maps to code FindingTopicCode maps to code FindingMethod maps to method CommentOrDescription maps to comment -// Media maps to extension Category maps to category AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite Device maps to device Specimen maps to specimen -// Precondition maps to extension ReferenceRange maps to referenceRange ReferenceRange.Range.LowerBound maps to referenceRange.low ReferenceRange.Range.UpperBound maps to referenceRange.high @@ -56,7 +49,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs ExceptionValue maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued -// FindingStatus maps to status + FindingStatus maps to status RelevantTime maps to effective[x] Encounter maps to context DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta @@ -65,19 +58,13 @@ Observation maps to Observation: // TODO: observationresults is only for labs LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: // TODO: observationresults is only for labs Patient maps to subject // SourceOfInformation.Value maps to performer // Why doesn't this work??? -// Annotation maps to extension -// RecordStatus maps to extension -// _Entry.CosignedBy maps to extension -// _Entry.VerifiedBy maps to extension FindingTopicCode maps to code FindingMethod maps to method CommentOrDescription maps to comment -// Media maps to extension Category maps to category AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite Device maps to device Specimen maps to specimen -// Precondition maps to extension ReferenceRange maps to referenceRange ReferenceRange.Range.LowerBound maps to referenceRange.low ReferenceRange.Range.UpperBound maps to referenceRange.high @@ -97,7 +84,7 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us ExceptionValue maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued -// FindingStatus maps to status + FindingStatus maps to status RelevantTime maps to effective[x] Encounter maps to context DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta @@ -108,6 +95,7 @@ ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinitio // SourceOfInformation.Value maps to asserter // why doesn't this work? Patient maps to subject Category maps to category + ObjectIdentifier maps to identifier FindingTopicCode maps to code constrain bodySite to 0..0 AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite diff --git a/spec/shr_base_vs.txt b/spec/shr_base_vs.txt index de4357b5..c7f4ded5 100644 --- a/spec/shr_base_vs.txt +++ b/spec/shr_base_vs.txt @@ -92,12 +92,13 @@ SCT#410518001 "Goal" ValueSet: DeltaFlagVS Concept: MTH#C1705241 Description: "Indicators for degree of change (delta) from the last or previous measurement." -Includes codes descending from SCT#263703002 "Changed status (qualifier value)" + Includes codes descending from SCT#263703002 "Changed status (qualifier value)" // has values decreased, decreased relative to previous, improved, increased, increased relative to previous, maintained stablized, worse // Also see LOINC #89253-9 Trend ... has values improved, deteriorated, stablized, resolved -ValueSet: FindingMethodVS -Includes codes from LNC +ValueSet: FindingMethodVS +Description: "Codes, including lab codes, that describe a method of determining an observation result." + Includes codes from LNC /* ValueSet: DeltaFlagVS diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 8b444344..9d2f8619 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -15,7 +15,7 @@ Description: "The presence of malignant neoplastic disease, in which abnormal Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" FindingTopicCode from CancerDisorderVS StageInformation.StageSummary from http://loinc.org/vs/LL240-3 // MK - also include stage group here - StageInformation.StageDetail value is type CancerStage + StageInformation.StageDetail value is type CancerStageInformation // 0..1 MorphologyBehavior from MorphologyBehaviorVS //Not carried over from BrCa because it was intended to break out behavior codes from ICD-O-3, and we are no longer using it. @@ -45,12 +45,14 @@ Concept: SCT#246453008 "Course of illness (attribute)" Value from CancerProgressionVS FindingTopicCode is SCT#246453008 "Course of illness (attribute)" -EntryElement: CancerStage +EntryElement: CancerStageInformation Based on: Observation Description: "The extent a cancer has spread in the body (source: NCI Dictionary of Cancer Terms)" Concept: SCT#258232002 "Cancer staging (tumor staging)" FindingTopicCode is SCT#258232002 "Cancer staging (tumor staging)" - 0..0 Value + 0..0 StageGroup + 0..0 DeltaFlag + 0..0 ReferenceRange // SpecificFocusOfFinding value is type CancerDisorder NonIndependentFinding includes 0..1 StageGroup // MK - Should this be the value? @@ -88,7 +90,7 @@ Description: "The classification resulting from cancer staging. Each type of //Value: CodeableConcept from http://loinc.org/vs/LL240-3 Value from http://loinc.org/vs/LL240-3 FindingTopicCode is MTH#C1302362 "Stage Grouping" -// SpecificFocusOfFinding value is type CancerStage +// SpecificFocusOfFinding value is type CancerStageInformation Element: StageSuffix Based on: NonIndependentFinding @@ -103,7 +105,8 @@ Based on: CodedNonLaboratoryObservation Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." Value from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 -// SpecificFocusOfFinding value is type CancerStage +// SpecificFocusOfFinding value is type CancerStageInformation +0..0 ReferenceRange NonIndependentFinding includes 0..1 StageSuffix includes 0..1 StageTiming // TODO: make this a fixed value to clinical. @@ -114,7 +117,8 @@ Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC Value from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" -// SpecificFocusOfFinding value is type CancerStage +// SpecificFocusOfFinding value is type CancerStageInformation +0..0 ReferenceRange NonIndependentFinding includes 0..1 StageSuffix includes 0..1 StageTiming // TODO: make this a fixed value to clinical. @@ -124,8 +128,9 @@ Based on: CodedNonLaboratoryObservation Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC Value from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 +0..0 ReferenceRange FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" -// SpecificFocusOfFinding value is type CancerStage +// SpecificFocusOfFinding value is type CancerStageInformation EntryElement: TNMPathologicPrimaryTumorClassification Based on: CodedNonLaboratoryObservation @@ -133,7 +138,8 @@ Concept: LNC#21899-0 "Primary tumor.pathology Cancer" Description: "" //TODO: pull from LOINC Value from http://loinc.org/vs/LL232-0 // normative FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" -// SpecificFocusOfFinding value is type CancerStage +0..0 ReferenceRange +// SpecificFocusOfFinding value is type CancerStageInformation NonIndependentFinding includes 0..1 StageSuffix includes 0..1 StageTiming // TODO: make this a fixed value to pathologic. @@ -144,7 +150,8 @@ Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" Description: "" //TODO: pull from LOINC Value from http://loinc.org/vs/LL3136-0 // normative FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" -// SpecificFocusOfFinding value is type CancerStage +0..0 ReferenceRange +// SpecificFocusOfFinding value is type CancerStageInformation NonIndependentFinding includes 0..1 StageSuffix includes 0..1 StageTiming // TODO: make this a fixed value to pathologic. @@ -154,8 +161,9 @@ Based on: CodedNonLaboratoryObservation Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" Description: "" //TODO: pull from LOINC Value from http://loinc.org/vs/LL3137-8 +0..0 ReferenceRange FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative -// SpecificFocusOfFinding value is type CancerStage +// SpecificFocusOfFinding value is type CancerStageInformation // A tumor is a morphologic abnormality observation about a CancerDisorder, rather than ConditionPresentAssertion. EntryElement: Tumor // NOTE: Includes TumorLocation as AnatomicalLocation because there are no site constraints. @@ -163,6 +171,7 @@ Based on: NonLaboratoryObservation Description: "An abnormal mass of tissue that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). Also called neoplasm. (source: NCI Dictionary)." Concept: SCT#395557000 "Tumor finding (finding)" FindingTopicCode is SCT#395557000 "Tumor finding (finding)" +0..0 ReferenceRange NonIndependentFinding includes 0..1 PrimaryTumorIndicator 0..0 StageInformation @@ -173,6 +182,7 @@ Based on: NonIndependentFinding Description: "Whether the tumor is the original, or first, tumor in the body, for a particular cancer." Concept: SCT#260716003 "Site of Primary Tumor (attribute)" Value: CodeableConcept from YesNoUnknownVS // TODO: Open a bug for Observation Value to support boolean data type. This is possible in the FHIR Observation.value.valueBoolean attribute. Change back to boolean after fix. +0..0 ReferenceRange FindingTopicCode is SCT#260716003 "Site of Primary Tumor (attribute)" @@ -182,6 +192,7 @@ Based on: SimpleNonLaboratoryObservation Concept: LNC#77975-1 "Earliest date of diagnosis" Description: "The earliest date of diagnosis (clinical or laboratory) of an illness or condition (Source: LOINC). This element is the same as the WhenClinicallyRecognized property in CancerDiagnosis." Value: dateTime // parent class only allows time, dateTime or TimePeriod as choices. +0..0 ReferenceRange // SpecificFocusOfFinding value is type CancerDisorder /********** Assessments **************/ @@ -189,41 +200,28 @@ Value: dateTime // parent class only allows time, dateTime or TimePeriod as ch //ECOG is a panel in LOINC with score and interpretation as two components of the panel. EntryElement: ECOGPerformanceStatus -Based on: ComponentOnlyNonLaboratoryObservation +Based on: SimpleNonLaboratoryObservation Description: "The Eastern Cooperative Oncology Group (ECOG) performance status grade or score, which indicates a patient’s level of daily functioning and physical ability. Source: LOINC" -Concept: LNC#89246-3 "ECOG Performance Status panel" - NonIndependentFinding - includes 0..1 ECOGPerformanceStatusScore - includes 0..1 ECOGPerformanceStatusInterpretation - -Element: ECOGPerformanceStatusScore -Based on: SimpleNonLaboratoryObservation -Concept: LNC#89247-1 "ECOG Performance Status score" -Description: "The Eastern Cooperative Oncology Group (ECOG) performance score, which indicates a patient’s level of daily functioning and physical ability. The ECOG grade ranges from 0-5. Source: LOINC" +Concept: LNC#89247-1 "ECOG Performance Status score" Value: Quantity with units UCUM#1 +0..0 ReferenceRange // set to 0 to 5 + Interpretation from http://loinc.org/vs/LL529-9 -Element: ECOGPerformanceStatusInterpretation -Based on: CodedNonLaboratoryObservation -Concept: LNC#89262-0 "ECOG Performance Status [Interpretation]" -Description: "The Eastern Cooperative Oncology Group (ECOG) Performance Status represents the patient's functional status and is used to determine their ability to tolerate therapies in serious illness, specifically for chemotherapy. (Source: LOINC)" - Value from http://loinc.org/vs/LL529-9 // normative answer list for LNC#89262-0, the scores are included in descriptions of answers //KPS is a panel in LOINC with score and interpretation as two components of the panel. EntryElement: KarnofskyPerformanceStatus -Based on: ComponentOnlyNonLaboratoryObservation +Based on: SimpleNonLaboratoryObservation Description: "The Karnofsky Performance Status (KPS) is a tool used to measure a patient's functional status. It can be used to compare the effectiveness of different therapies and to help assess the prognosis of certain patients, such as those with certain cancers. The KPS score ranges from 0 to 100. Higher scores are associated with better functional status, with 100 representing no symptoms or evidence of disease, and 0 representing death [PMID: 23870327] . This panel contains LOINC terms to report the KPS score [LOINC: 89243-0] and its interpretation [LOINC: 89245-5]." -Concept: LNC#89245-5 "Karnofsky Performance Status panel" - PanelMembers.Observation - includes 0..1 KarnofskyPerformanceStatusScore - includes 0..1 KarnofskyPerformanceStatusInterpretation - -Element: KarnofskyPerformanceStatusScore -Based on: SimpleNonLaboratoryObservation -Concept: LNC#89243-0 "Karnofsky Performance Status score" +Concept: LNC#89243-0 "Karnofsky Performance Status panel" Value: Quantity with units UCUM#1 +0..0 ReferenceRange // set to 0 to 5 +// ReferenceRange.Range.LowerBound.Quantity is 0. +// ReferenceRange.Range.UpperBound.Quantity is 5. +//0..0 ReferenceRange.Type +//0..0 ReferenceRange.ApplicableSubpopulation +//0..0 ReferenceRange.ApplicableAgeRange + Interpretation from http://loinc.org/vs/LL4986-7 // normative answer list + + -Element: KarnofskyPerformanceStatusInterpretation -Based on: CodedNonLaboratoryObservation -Concept: LNC#89245-5 "Karnofsky Performance Status [Interpretation]" - Value from http://loinc.org/vs/LL4986-7 // normative answer list \ No newline at end of file From aaa9c94379b621edf25f163ca0ad08ff99626143 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 7 Nov 2018 12:27:41 -0500 Subject: [PATCH 089/289] After team review --- spec/shr_base_finding.txt | 3 +- spec/shr_oncologycore.txt | 124 +++++++++++++++++++++++++---------- spec/shr_oncologycore_vs.txt | 5 ++ 3 files changed, 96 insertions(+), 36 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 358875c2..5ef35dfb 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -85,7 +85,7 @@ For an Observation, the FindingTopicCode describes the aspect or property of the FindingStatus value is type code FindingStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 DeltaFlag -1..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered +0..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered 0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? 0..1 CommentOrDescription 0..1 Interpretation @@ -171,6 +171,7 @@ Description: "An observation with components, but without a result value or pane EntryElement: LaboratoryObservation Based on: Observation Description: "A coded finding based on a specimen collected from a patient." +1..* Category 1..1 Patient 1..1 Specimen 0..0 AnatomicalLocation // AnatomicalLocation is determined indirectly from Specimen.CollectionSite diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 9d2f8619..ed89e54b 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -44,21 +44,26 @@ Description: "The course of a disease, such as cancer, as it becomes worse or Concept: SCT#246453008 "Course of illness (attribute)" Value from CancerProgressionVS FindingTopicCode is SCT#246453008 "Course of illness (attribute)" +// SpecificFocusOfFinding value is type CancerDisorder EntryElement: CancerStageInformation Based on: Observation Description: "The extent a cancer has spread in the body (source: NCI Dictionary of Cancer Terms)" Concept: SCT#258232002 "Cancer staging (tumor staging)" FindingTopicCode is SCT#258232002 "Cancer staging (tumor staging)" - 0..0 StageGroup + 0..0 Value + 0..0 ExceptionValue 0..0 DeltaFlag 0..0 ReferenceRange + 0..0 Media + 0..0 AnatomicalLocation + 0..0 Specimen + 0..0 Device + 0..1 FindingMethod from CancerStagingSystemVS // SpecificFocusOfFinding value is type CancerDisorder NonIndependentFinding includes 0..1 StageGroup // MK - Should this be the value? includes 0..1 StageTiming // retained StageTiming because if using TNM staging, the StageGroup still needs a prefix (even if we're using precoordinated categories). There are LOINC codes for clinical and pathologic stage groups in LOINC, but we back ourselves into TNM for stage group if we use them. - includes 0..1 StagingSystem - //RM: my gut is telling me to add a TNM wrapper that could contain the TNM categories below PanelMembers.Observation // MK - why aren't these components? includes 0..1 TNMClinicalPrimaryTumorClassification includes 0..1 TNMClinicalRegionalNodesClassification @@ -72,25 +77,33 @@ Based on: NonIndependentFinding Concept: SCT#260869008 "Timing of stage" Description: "Indicates when the staging was done, in terms of treatment landmarks." Value: CodeableConcept from StageTimingPrefixVS - FindingTopicCode is SCT#260869008 "Timing of stage" + FindingTopicCode is SCT#260869008 "Timing of stage" +0..0 ReferenceRange -Element: StagingSystem -Based on: NonIndependentFinding -Concept: SCT#254292007 "Tumor staging (tumor staging)" // TODO: Needs LOINC code. -Description: "A systematic method for clinicopathologic evaluation of tumors. (source: NCI Metathesaurus)" -Value: CodeableConcept from CancerStagingSystemVS - FindingTopicCode is SCT#254292007 "Tumor staging (tumor staging)" // TODO: Needs LOINC code. +Element: ClinicalStageTiming +Based on: StageTiming +Concept: SCT#260869008 "Timing of stage" +Description: "Indicates staging was done from clinical evidence." + Value is SCT#385349001 "Clinical stage (observable entity)" + +Element: PathologicStageTiming +Based on: StageTiming +Concept: SCT#260869008 "Timing of stage" +Description: "Indicates when the staging was done using pathologic evidence." + Value is SCT#405978005 "Pathologic stage (observable entity)" -EntryElement: StageGroup + + +Element: StageGroup // did not use precoordinated codes because only available for clinical and pathologic. //Based on: NonIndependentFinding -Based on: CodedNonLaboratoryObservation +Based on: NonIndependentFinding Concept: MTH#C1302362 "Stage Grouping" Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" -//Value: CodeableConcept from http://loinc.org/vs/LL240-3 - Value from http://loinc.org/vs/LL240-3 +Value: CodeableConcept from http://loinc.org/vs/LL240-3 FindingTopicCode is MTH#C1302362 "Stage Grouping" // SpecificFocusOfFinding value is type CancerStageInformation +0..0 ReferenceRange Element: StageSuffix Based on: NonIndependentFinding @@ -98,30 +111,40 @@ Concept: TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set t Description: "A suffix used in conjuction with certain cancer stage categories, usually qualifying how the category value was determined." Value: CodeableConcept from StageSuffixVS // local value set created FindingTopicCode is TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. - +0..0 ReferenceRange EntryElement: TNMClinicalPrimaryTumorClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." Value from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 -// SpecificFocusOfFinding value is type CancerStageInformation +// SpecificFocusOfFinding value is type CancerDisorder 0..0 ReferenceRange +0..0 DeltaFlag +0..0 Media +0..0 AnatomicalLocation +0..0 Device +0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 StageTiming // TODO: make this a fixed value to clinical. + includes 0..1 ClinicalStageTiming -EntryElement: TNMClinicalRegionalNodesClassification +EntryElement: TNMClinicalRegionalNodesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC Value from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" -// SpecificFocusOfFinding value is type CancerStageInformation +// SpecificFocusOfFinding value is type CancerDisorder 0..0 ReferenceRange +0..0 DeltaFlag +0..0 Media +0..0 AnatomicalLocation +0..0 Device +0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 StageTiming // TODO: make this a fixed value to clinical. + includes 0..1 ClinicalStageTiming EntryElement: TNMClinicalDistantMetastasesClassification Based on: CodedNonLaboratoryObservation @@ -130,7 +153,15 @@ Description: "" //TODO: pull from LOINC Value from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 0..0 ReferenceRange FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" -// SpecificFocusOfFinding value is type CancerStageInformation +0..0 ReferenceRange +0..0 DeltaFlag +0..0 Media +0..0 Device +0..1 FindingMethod from TNMTumorStagingSystemVS if covered +// SpecificFocusOfFinding value is type CancerDisorder + NonIndependentFinding + includes 0..1 StageSuffix + includes 0..1 ClinicalStageTiming EntryElement: TNMPathologicPrimaryTumorClassification Based on: CodedNonLaboratoryObservation @@ -139,10 +170,15 @@ Description: "" //TODO: pull from LOINC Value from http://loinc.org/vs/LL232-0 // normative FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" 0..0 ReferenceRange -// SpecificFocusOfFinding value is type CancerStageInformation +0..0 DeltaFlag +0..0 Media +0..0 AnatomicalLocation +0..0 Device +0..1 FindingMethod from TNMTumorStagingSystemVS if covered +// SpecificFocusOfFinding value is type CancerDisorder NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 StageTiming // TODO: make this a fixed value to pathologic. + includes 0..1 PathologicStageTiming EntryElement: TNMPathologicRegionalNodesClassification Based on: CodedNonLaboratoryObservation @@ -150,11 +186,16 @@ Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" Description: "" //TODO: pull from LOINC Value from http://loinc.org/vs/LL3136-0 // normative FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" +// SpecificFocusOfFinding value is type CancerDisorder 0..0 ReferenceRange -// SpecificFocusOfFinding value is type CancerStageInformation +0..0 DeltaFlag +0..0 Media +0..0 AnatomicalLocation +0..0 Device +0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 StageTiming // TODO: make this a fixed value to pathologic. + includes 0..1 PathologicStageTiming EntryElement: TNMPathologicDistantMetastasesClassification Based on: CodedNonLaboratoryObservation @@ -163,7 +204,16 @@ Description: "" //TODO: pull from LOINC Value from http://loinc.org/vs/LL3137-8 0..0 ReferenceRange FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative -// SpecificFocusOfFinding value is type CancerStageInformation +// SpecificFocusOfFinding value is type CancerDisorder +0..0 ReferenceRange +0..0 DeltaFlag +0..0 Media +0..0 AnatomicalLocation +0..0 Device +0..1 FindingMethod from TNMTumorStagingSystemVS if covered + NonIndependentFinding + includes 0..1 StageSuffix + includes 0..1 PathologicStageTiming // A tumor is a morphologic abnormality observation about a CancerDisorder, rather than ConditionPresentAssertion. EntryElement: Tumor // NOTE: Includes TumorLocation as AnatomicalLocation because there are no site constraints. @@ -185,7 +235,7 @@ Value: CodeableConcept from YesNoUnknownVS // TODO: Open a bug for O 0..0 ReferenceRange FindingTopicCode is SCT#260716003 "Site of Primary Tumor (attribute)" - +/* EntryElement: EarliestDateOfCancerDiagnosis //TODO_discussion: added, but not convinced we need a separate element for this given the WhenClinicallyRecognized property of ConditionPresentAssertion. Based on: SimpleNonLaboratoryObservation @@ -193,29 +243,33 @@ Concept: LNC#77975-1 "Earliest date of diagnosis" Description: "The earliest date of diagnosis (clinical or laboratory) of an illness or condition (Source: LOINC). This element is the same as the WhenClinicallyRecognized property in CancerDiagnosis." Value: dateTime // parent class only allows time, dateTime or TimePeriod as choices. 0..0 ReferenceRange +0..0 AnatomicalLocation // SpecificFocusOfFinding value is type CancerDisorder - +*/ /********** Assessments **************/ -//ECOG is a panel in LOINC with score and interpretation as two components of the panel. - EntryElement: ECOGPerformanceStatus Based on: SimpleNonLaboratoryObservation Description: "The Eastern Cooperative Oncology Group (ECOG) performance status grade or score, which indicates a patient’s level of daily functioning and physical ability. Source: LOINC" Concept: LNC#89247-1 "ECOG Performance Status score" Value: Quantity with units UCUM#1 -0..0 ReferenceRange // set to 0 to 5 +//0..0 ReferenceRange // set to 0 to 5 +0..0 SpecificFocusOfFinding +0..0 Media +0..0 AnatomicalLocation +0..0 Device Interpretation from http://loinc.org/vs/LL529-9 - -//KPS is a panel in LOINC with score and interpretation as two components of the panel. - EntryElement: KarnofskyPerformanceStatus Based on: SimpleNonLaboratoryObservation Description: "The Karnofsky Performance Status (KPS) is a tool used to measure a patient's functional status. It can be used to compare the effectiveness of different therapies and to help assess the prognosis of certain patients, such as those with certain cancers. The KPS score ranges from 0 to 100. Higher scores are associated with better functional status, with 100 representing no symptoms or evidence of disease, and 0 representing death [PMID: 23870327] . This panel contains LOINC terms to report the KPS score [LOINC: 89243-0] and its interpretation [LOINC: 89245-5]." Concept: LNC#89243-0 "Karnofsky Performance Status panel" Value: Quantity with units UCUM#1 -0..0 ReferenceRange // set to 0 to 5 +0..0 SpecificFocusOfFinding +0..0 Media +0..0 AnatomicalLocation +0..0 Device +//0..0 ReferenceRange // set to 0 to 5 // ReferenceRange.Range.LowerBound.Quantity is 0. // ReferenceRange.Range.UpperBound.Quantity is 5. //0..0 ReferenceRange.Type diff --git a/spec/shr_oncologycore_vs.txt b/spec/shr_oncologycore_vs.txt index b4e1b688..32bccfc8 100644 --- a/spec/shr_oncologycore_vs.txt +++ b/spec/shr_oncologycore_vs.txt @@ -35,6 +35,11 @@ ValueSet: CancerStagingSystemVS // replaces local value set in BrCa spec Description: "The system used to identify cancer/tumor stage" Includes codes descending from SCT#254292007 "Tumor staging (tumor staging)" //TODO: consider staging systems in NCI MTH and determine if there are gaps. +ValueSet: TNMTumorStagingSystemVS // TODO: Need to include version of staging system (this is not sufficient) +Description: "System used for TNM classification." +Includes codes descending from SCT#254293002 "Tumor-node-metastasis (TNM) tumor staging system (tumor staging)" + + ValueSet: StageSuffixVS Description: "Modifiers related to the staging category. Examples of modifiers include the type of procedure performed in determining the pathological node classification. The staging suffix notation is the abbreviation enclosed by parentheses. For example, CN1a(sn) where (sn) designates that the N category was identified based on a sentinel node biopsy." #sn "sentinel node biopsy" From 00a80bd80fd525c65ec9425c300a184490248a81 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 7 Nov 2018 14:58:48 -0500 Subject: [PATCH 090/289] Tumor changed to a PresenceAssertion mapped to BodyStructure --- spec/shr_base_finding.txt | 26 +++++++++++++++++++++++--- spec/shr_base_map.txt | 8 ++++++++ spec/shr_base_vs.txt | 2 +- spec/shr_intervention.txt | 4 +--- spec/shr_oncologycore.txt | 30 ++++++++++++------------------ spec/shr_oncologycore_vs.txt | 3 +++ 6 files changed, 48 insertions(+), 25 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 5ef35dfb..716028c0 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -65,7 +65,7 @@ Description: "An assertion, determination, opinion, evaluation, result, observat Element: FindingMethod Concept: TBD Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." - Value: CodeableConcept should be from FindingMethodVS + Value: CodeableConcept Element: FindingStatus Concept: TBD @@ -174,6 +174,7 @@ Description: "A coded finding based on a specimen collected from a patient." 1..* Category 1..1 Patient 1..1 Specimen + FindingMethod should be from LaboratoryMethodVS 0..0 AnatomicalLocation // AnatomicalLocation is determined indirectly from Specimen.CollectionSite Category is OBSCAT#laboratory 0..* DiagnosticService @@ -226,14 +227,16 @@ Value: CodeableConcept from PresentAbsentVS Abstract Element: PresenceAssertion Based on: ExistenceAssertion Description: "Finding that a phenomena is present." - Value is SCT#52101004 "Present (qualifier value)" + Value is SCT#52101004 "Present (qualifier value)" +0..0 ExceptionValue 0..1 Certainty from PresenceCertaintyVS Abstract Element: AbsenceAssertion Based on: ExistenceAssertion Description: "Finding that an entity, person, role, condition, or phenomenon is absent." - Value is SCT#2667000 "Absent (qualifier value)" + Value is SCT#2667000 "Absent (qualifier value)" +0..0 ExceptionValue 0..1 Certainty from AbsenceCertaintyVS @@ -347,3 +350,20 @@ Based on: ExistenceAssertion Description: "An assertion of a realtionship between two things being either present or absent. The subject of the relationship is is the Patient (or SpecificFocusOfFinding, if given) and the object of the relationship is . For relationships, FindingTopicCode describes the relationship, e.g., Father or Mother." Value: CodeableConcept from PresentAbsentVS + + +EntryElement: BodyStructurePresent +Based on: PresenceAssertion +Description: "A body structure such as wound or tumor, observed to be present in a patient." +1..1 Patient +0..1 AnatomicalLocation +1..1 Morphology +0..* Media +0..1 RelevantTime +0..0 SpecificFocusOfFinding +0..0 ReferenceRange +0..0 ExceptionValue + + Element: Morphology + Concept: SCT#116676008 "Associated morphology (attribute)" + Value: CodeableConcept \ No newline at end of file diff --git a/spec/shr_base_map.txt b/spec/shr_base_map.txt index 45f450e4..5cbeaa9b 100644 --- a/spec/shr_base_map.txt +++ b/spec/shr_base_map.txt @@ -113,3 +113,11 @@ ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinitio ConditionAbsentAssertion maps to Basic: // There is no mechanism in FHIR (not Condition, not Observation) to say "Patient does not have Condition X" +BodyStructurePresent maps to BodySite: + Patient maps to patient + ObjectIdentifier maps to identifier + AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to code + AnatomicalLocation.Laterality maps to qualifier (slice on = coding.code) + AnatomicalLocation.AnatomicalDirection maps to qualifier + AnatomicalLocation.CommentOrDescription maps to description + AnatomicalLocation.Media maps to image \ No newline at end of file diff --git a/spec/shr_base_vs.txt b/spec/shr_base_vs.txt index c7f4ded5..1c2b45fa 100644 --- a/spec/shr_base_vs.txt +++ b/spec/shr_base_vs.txt @@ -96,7 +96,7 @@ Description: "Indicators for degree of change (delta) from the last or previou // has values decreased, decreased relative to previous, improved, increased, increased relative to previous, maintained stablized, worse // Also see LOINC #89253-9 Trend ... has values improved, deteriorated, stablized, resolved -ValueSet: FindingMethodVS +ValueSet: LaboratoryMethodVS Description: "Codes, including lab codes, that describe a method of determining an observation result." Includes codes from LNC diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index d0b70aa8..c4df0758 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -22,10 +22,9 @@ Concept: SCT#416608005 "Drug therapy (procedure)" EntryElement: CourseOfTreatment -Based on: ProcedurePerformed +Based on: ProcedurePerformed //?? Description: "A medication that is part of a radiation oncology related regimen" Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" -// SpecificFocusOfFinding value is type TreatmentRegimen TopicCode from RadiationModalityVS if covered 0..1 TreatmentIntent 0..1 LineOfTherapy @@ -36,7 +35,6 @@ EntryElement: SurgicalTreatmentPerformed Based on: SurgicalProcedurePerformed Description: "A medication that is part of a drug treatment regimen" Concept: SCT#387713003 "Surgical procedure (procedure)" -// SpecificFocusOfFinding value is type TreatmentRegimen TopicCode from SurgicalProcedureVS if covered 0..1 TreatmentIntent 0..1 LineOfTherapy diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index ed89e54b..343096af 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -93,7 +93,6 @@ Description: "Indicates when the staging was done using pathologic evidence." Value is SCT#405978005 "Pathologic stage (observable entity)" - Element: StageGroup // did not use precoordinated codes because only available for clinical and pathologic. //Based on: NonIndependentFinding @@ -215,27 +214,21 @@ Description: "" //TODO: pull from LOINC includes 0..1 StageSuffix includes 0..1 PathologicStageTiming -// A tumor is a morphologic abnormality observation about a CancerDisorder, rather than ConditionPresentAssertion. -EntryElement: Tumor // NOTE: Includes TumorLocation as AnatomicalLocation because there are no site constraints. -Based on: NonLaboratoryObservation -Description: "An abnormal mass of tissue that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). Also called neoplasm. (source: NCI Dictionary)." + +EntryElement: TumorPresent +Based on: BodyStructurePresent +Description: "The presence of an abnormal mass of tissue that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). Also called neoplasm. (source: NCI Dictionary)." Concept: SCT#395557000 "Tumor finding (finding)" - FindingTopicCode is SCT#395557000 "Tumor finding (finding)" -0..0 ReferenceRange - NonIndependentFinding - includes 0..1 PrimaryTumorIndicator - 0..0 StageInformation + Morphology from TumorMorphologyVS +0..1 IsPrimaryTumor + Element: IsPrimaryTumor + Concept: TBD + Description: "Whether the tumor is the original, or first, tumor in the body, for a particular cancer." + Value: CodeableConcept from YesNoUnknownVS // could be boolean but VS allows for unknown -Element: PrimaryTumorIndicator -Based on: NonIndependentFinding -Description: "Whether the tumor is the original, or first, tumor in the body, for a particular cancer." -Concept: SCT#260716003 "Site of Primary Tumor (attribute)" -Value: CodeableConcept from YesNoUnknownVS // TODO: Open a bug for Observation Value to support boolean data type. This is possible in the FHIR Observation.value.valueBoolean attribute. Change back to boolean after fix. -0..0 ReferenceRange - FindingTopicCode is SCT#260716003 "Site of Primary Tumor (attribute)" -/* +/**** replaced by Onset of CancerDisorder EntryElement: EarliestDateOfCancerDiagnosis //TODO_discussion: added, but not convinced we need a separate element for this given the WhenClinicallyRecognized property of ConditionPresentAssertion. Based on: SimpleNonLaboratoryObservation @@ -246,6 +239,7 @@ Value: dateTime // parent class only allows time, dateTime or TimePeriod as ch 0..0 AnatomicalLocation // SpecificFocusOfFinding value is type CancerDisorder */ + /********** Assessments **************/ EntryElement: ECOGPerformanceStatus diff --git a/spec/shr_oncologycore_vs.txt b/spec/shr_oncologycore_vs.txt index 32bccfc8..3002ab0e 100644 --- a/spec/shr_oncologycore_vs.txt +++ b/spec/shr_oncologycore_vs.txt @@ -39,6 +39,9 @@ ValueSet: TNMTumorStagingSystemVS // TODO: Need to include version of stagi Description: "System used for TNM classification." Includes codes descending from SCT#254293002 "Tumor-node-metastasis (TNM) tumor staging system (tumor staging)" +ValueSet: TumorMorphologyVS +Description: "Neoplasm (morphologic abnormality)" +Includes codes descending from SCT#108369006 "Neoplasm (morphologic abnormality)" ValueSet: StageSuffixVS Description: "Modifiers related to the staging category. Examples of modifiers include the type of procedure performed in determining the pathological node classification. The staging suffix notation is the abbreviation enclosed by parentheses. For example, CN1a(sn) where (sn) designates that the N category was identified based on a sentinel node biopsy." From 6293ae0d58beecb4d125c9de60ee0cdb6de0f141 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 8 Nov 2018 07:00:47 -0500 Subject: [PATCH 091/289] Save point before branching from FHIMI2 --- spec/shr_intervention.txt | 6 +++--- spec/shr_oncologycore.txt | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index c4df0758..5b775691 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -22,8 +22,8 @@ Concept: SCT#416608005 "Drug therapy (procedure)" EntryElement: CourseOfTreatment -Based on: ProcedurePerformed //?? -Description: "A medication that is part of a radiation oncology related regimen" +Based on: ProcedurePerformed // The reasoning is that a coupe +Description: "A series of coordinated treatment actions taken with a certain treatment intention." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" TopicCode from RadiationModalityVS if covered 0..1 TreatmentIntent @@ -37,7 +37,7 @@ Description: "A medication that is part of a drug treatment regimen" Concept: SCT#387713003 "Surgical procedure (procedure)" TopicCode from SurgicalProcedureVS if covered 0..1 TreatmentIntent - 0..1 LineOfTherapy + 0..1 LineOfTherapy // Is surgery regarded as a line of therapy? Element: TreatmentIntent Concept: SCT#395077000 "Treatment intent (situation)" // TODO: Needs a new LOINC number" diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 343096af..b3bef088 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -185,7 +185,7 @@ Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" Description: "" //TODO: pull from LOINC Value from http://loinc.org/vs/LL3136-0 // normative FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" -// SpecificFocusOfFinding value is type CancerDisorder +// SpecificFocusOfFinding value is type CancerDisorder 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media @@ -203,7 +203,7 @@ Description: "" //TODO: pull from LOINC Value from http://loinc.org/vs/LL3137-8 0..0 ReferenceRange FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative -// SpecificFocusOfFinding value is type CancerDisorder +// SpecificFocusOfFinding value is type CancerDisorder 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media @@ -219,6 +219,7 @@ EntryElement: TumorPresent Based on: BodyStructurePresent Description: "The presence of an abnormal mass of tissue that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). Also called neoplasm. (source: NCI Dictionary)." Concept: SCT#395557000 "Tumor finding (finding)" + FIndingTopicCode is SCT#395557000 "Tumor finding (finding)" Morphology from TumorMorphologyVS 0..1 IsPrimaryTumor From 91f51fc277cbaff3c25976f9a6ae87e5d2e8c3f0 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 8 Nov 2018 07:59:01 -0500 Subject: [PATCH 092/289] Moved diagnostic imaging procedure into procedure --- spec/shr_core.txt | 2 +- spec/shr_imaging.txt | 20 -------------------- spec/shr_imaging_vs.txt | 8 -------- spec/shr_oncologycore.txt | 5 +++-- spec/shr_procedure.txt | 8 ++++++++ spec/shr_procedure_vs.txt | 7 ++++++- 6 files changed, 18 insertions(+), 32 deletions(-) delete mode 100644 spec/shr_imaging.txt delete mode 100644 spec/shr_imaging_vs.txt diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 77718dc7..6e6b2fc9 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -771,7 +771,7 @@ Description: "A location or structure in the body, including tissues, regions, c Element: Identifier Concept: MTH#C0600091 Description: "A unique string that identifies a specific person or thing." -1..1 Text +0..1 Text // cardinality aligns with FHIR STU3 0..1 Purpose from http://hl7.org/fhir/ValueSet/identifier-use 0..1 Type from http://hl7.org/fhir/ValueSet/identifier-type if covered 0..1 CodeSystem diff --git a/spec/shr_imaging.txt b/spec/shr_imaging.txt deleted file mode 100644 index d4794928..00000000 --- a/spec/shr_imaging.txt +++ /dev/null @@ -1,20 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: mcode -Description: "Diagnostic imaging." -Uses: shr.core, shr.base, shr.entity, shr.medication, shr.composition, shr.procedure - -CodeSystem: SCT = http://snomed.info/sct -CodeSystem: LNC = http://loinc.org -CodeSystem: MTH = http://ncimeta.nci.nih.gov -CodeSystem: UCUM = http://unitsofmeasure.org -CodeSystem: HGNC = http://www.genenames.org -CodeSystem: CAP = https://sdt.cap.org -CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category - -EntryElement: DiagnosticImagingPerformed -Based on: ProcedurePerformed -Description: "Diagnostic imaging procedure performed." -Concept: SCT#363679005 "Imaging (procedure)" -// SpecificFocusOfFinding value is type Patient - TopicCode from DiagnosticImagingVS - diff --git a/spec/shr_imaging_vs.txt b/spec/shr_imaging_vs.txt deleted file mode 100644 index 814839a6..00000000 --- a/spec/shr_imaging_vs.txt +++ /dev/null @@ -1,8 +0,0 @@ -Grammar: ValueSet 5.0 -Namespace: mcode - -CodeSystem: SCT = http://snomed.info/sct - -ValueSet: DiagnosticImagingVS -Description: "Imaging procedures." -Includes codes descending from SCT#363679005 "Imaging (procedure)" diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index b3bef088..19fa0b94 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -24,6 +24,7 @@ EntryElement: CancerHistologicType Based on: CodedNonLaboratoryObservation Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" Concept: SCT#86049000 "Malignant neoplasm, primary (morphologic abnormality)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." +// SpecificFocusOfFinding value is type CancerDisorder or TumorPresent? Value from CancerHistologicTypeVS FindingTopicCode is SCT#86049000 "Malignant neoplasm, primary (morphologic abnormality)" @@ -217,9 +218,9 @@ Description: "" //TODO: pull from LOINC EntryElement: TumorPresent Based on: BodyStructurePresent -Description: "The presence of an abnormal mass of tissue that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). Also called neoplasm. (source: NCI Dictionary)." +Description: "The presence of an abnormal mass of tissue (neoplasm) that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). (source: NCI Dictionary)." Concept: SCT#395557000 "Tumor finding (finding)" - FIndingTopicCode is SCT#395557000 "Tumor finding (finding)" + FindingTopicCode is SCT#395557000 "Tumor finding (finding)" Morphology from TumorMorphologyVS 0..1 IsPrimaryTumor diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 54ff9921..106b8837 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -181,3 +181,11 @@ Description: "Base class for actions related to the collection of a specimen." Description: "The quantity of specimen collected" Value: SimpleQuantity + +EntryElement: DiagnosticImagingPerformed +Based on: ProcedurePerformed +Description: "Diagnostic imaging procedure performed." +Concept: SCT#363679005 "Imaging (procedure)" +// SpecificFocusOfFinding value is type Patient + TopicCode from DiagnosticImagingVS + \ No newline at end of file diff --git a/spec/shr_procedure_vs.txt b/spec/shr_procedure_vs.txt index 08321020..d4711b38 100644 --- a/spec/shr_procedure_vs.txt +++ b/spec/shr_procedure_vs.txt @@ -17,4 +17,9 @@ SCT#261004008 "Diagnostic intent (qualifier value)" ValueSet: SurgicalProcedureVS Description: "Surgical procedure (procedure)" -Includes codes descending from SCT#387713003 "Surgical procedure (procedure)" \ No newline at end of file +Includes codes descending from SCT#387713003 "Surgical procedure (procedure)" + + +ValueSet: DiagnosticImagingVS +Description: "Imaging procedures." +Includes codes descending from SCT#363679005 "Imaging (procedure)" From c87a8d89167d333c168be80c82a171e232ccbbb4 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 8 Nov 2018 11:00:11 -0500 Subject: [PATCH 093/289] Implemented FindingResult --- spec/ig-mcode-config.json | 2 +- spec/shr_base_finding.txt | 32 +++++++--- spec/shr_base_map.txt | 9 ++- spec/shr_medication.txt | 11 +--- spec/shr_occupation.txt | 50 +++++++-------- spec/shr_occupation_map.txt | 4 +- spec/shr_oncologycore.txt | 43 ++++++------- spec/shr_wound.txt | 117 ++++++++++++++++++------------------ 8 files changed, 141 insertions(+), 127 deletions(-) diff --git a/spec/ig-mcode-config.json b/spec/ig-mcode-config.json index 76a52dad..9bb7b2ae 100644 --- a/spec/ig-mcode-config.json +++ b/spec/ig-mcode-config.json @@ -7,7 +7,7 @@ "implementationGuide": { "npmName": "hl7.fhir.us.mcode", - "version": "0.1.0", + "version": "0.2.0", "includeLogicalModels": true, "includeModelDoc": true, "indexContent": "LandingPageMcode.html", diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 716028c0..b88a6680 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -10,12 +10,15 @@ Description: "A finding that does not or cannot stand alone, or a component of // should we have finding protocol, finding precondition, finding question, finding data, finding interpretation? // how do we handle normal? (physical exam normal) // exclusions? (diabetes excluded) -Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time or dateTime or TimePeriod) - // exclude boolean because component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 +0..1 FindingResult 1..1 FindingTopicCode // Question, test name, or condition 0..1 ExceptionValue 0..1 ReferenceRange // included here only because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. + Element: FindingResult + Description: "The value or result of a test, evaluation, or judgment, for example, a systolic blood pressure, or if a condition or body structure is present or absent." + Value: 0..1 (CodeableConcept or Quantity or string or Range or Ratio or time or dateTime or TimePeriod) + // exclude boolean because FHIR STU3 component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 Element: FindingTopicCode Description: "A code describing what the finding concerns, such as a lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property of the Patient or SpecificFocusOfFinding being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist. The topic code is not the result of the evaluation, which is found in the value. " @@ -44,6 +47,17 @@ Value: 0..1 (Quantity or CodeableConcept or string or Range or Ratio or time o Description: "The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so." // FHIR: how exactly does one indicate a neonatal or prenatal age? Value: Range +Abstract Element: CodedNonIndependentFinding +Based on: NonIndependentFinding +Description: "A non-independent finding whose result is a concept code." + FindingResult value is type CodeableConcept +0..0 ReferenceRange + +Abstract Element: QuantitativeNonIndependentFinding +Based on: NonIndependentFinding +Description: "A non-independent finding whose result is a quantity." + FindingResult value is type Quantity + Abstract Element: Finding Based on: NonIndependentFinding // A Finding has elements that allow it to be independently observed. It's a modeling compromise that allows better mapping. Description: "An assertion, determination, opinion, evaluation, result, observation, or measurement made by a person or device." @@ -149,7 +163,7 @@ EntryElement: CodedNonLaboratoryObservation Based on: NonLaboratoryObservation Concept: TBD Description: "The result of evaluations (measurements, tests, or questions) whose answer is expressed as a code." -Value: CodeableConcept + FindingResult value is type CodeableConcept 0..0 ReferenceRange EntryElement: SimpleCodedNonLaboratoryObservation @@ -161,7 +175,7 @@ Description: "An observation whose result is a code, and also having no componen EntryElement: ComponentOnlyNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation with components, but without a result value or panel members." -0..0 Value +0..0 FindingResult 0..0 ExceptionValue 0..0 PanelMembers 0..0 ReferenceRange @@ -187,7 +201,7 @@ Description: "A coded finding based on a specimen collected from a patient." EntryElement: CodedLaboratoryObservation Based on: LaboratoryObservation Description: "A coded finding from a laboratory test." -Value: CodeableConcept + FindingResult value is type CodeableConcept 0..0 ReferenceRange EntryElement: SimpleLaboratoryObservation @@ -208,7 +222,8 @@ Abstract Element: ExistenceAssertion Based on: Finding Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place. For assertions, the FindingTopicCode represents the thing asserted to be present or absent; i.e., the type of condition, event, relationship or phenomenon that is being asserted to exist or not exist." -Value: CodeableConcept from PresentAbsentVS + FindingResult value is type CodeableConcept + FindingResult from PresentAbsentVS // Leave ExceptionValue in, to represent the case where the presence or absence of something was not evaluated 0..0 ReferenceRange 0..1 ObjectIdentifier // TODO: 0..* business identifier? @@ -227,7 +242,8 @@ Value: CodeableConcept from PresentAbsentVS Abstract Element: PresenceAssertion Based on: ExistenceAssertion Description: "Finding that a phenomena is present." - Value is SCT#52101004 "Present (qualifier value)" +// TODO: Not sure we should have to say .CodeableConcept for the constraint below to work (currently causes error) + FindingResult.CodeableConcept is SCT#52101004 "Present (qualifier value)" 0..0 ExceptionValue 0..1 Certainty from PresenceCertaintyVS @@ -235,7 +251,7 @@ Description: "Finding that a phenomena is present." Abstract Element: AbsenceAssertion Based on: ExistenceAssertion Description: "Finding that an entity, person, role, condition, or phenomenon is absent." - Value is SCT#2667000 "Absent (qualifier value)" + FindingResult.CodeableConcept is SCT#2667000 "Absent (qualifier value)" 0..0 ExceptionValue 0..1 Certainty from AbsenceCertaintyVS diff --git a/spec/shr_base_map.txt b/spec/shr_base_map.txt index 5cbeaa9b..f8236564 100644 --- a/spec/shr_base_map.txt +++ b/spec/shr_base_map.txt @@ -38,14 +38,14 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.ApplicableAgeRange maps to referenceRange.age NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code - NonIndependentFinding.Value maps to component.value[x] + NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) - Value maps to value[x] + FindingResult maps to value[x] ExceptionValue maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued @@ -73,14 +73,14 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us ReferenceRange.ApplicableAgeRange maps to referenceRange.age NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code - NonIndependentFinding.Value maps to component.value[x] + NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) - Value maps to value[x] + FindingResult maps to value[x] ExceptionValue maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued @@ -109,7 +109,6 @@ ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinitio StageInformation.StageSummary maps to stage.summary StageInformation.StageDetail maps to stage.assessment - ConditionAbsentAssertion maps to Basic: // There is no mechanism in FHIR (not Condition, not Observation) to say "Patient does not have Condition X" diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 72338cb0..c3699c0c 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -94,21 +94,16 @@ Based on: CodedNonLaboratoryObservation Concept: MTH#C2364172 Description: "Information on the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency. The SpecificFocusOfFinding must reference the medication via a code, MedicationRequest, or MedicationStatement. Modeling note: MedicationAdherence could be attached to MedicationStatement directly as an extension, but modeling as an observation avoids creating an extension and allows this observation to be made at any time." -1..1 AdherenceFrequency + FindingResult from QualitativeFrequencyVS FindingTopicCode is MTH#C2364172 1..1 SpecificFocusOfFinding // TODO: constrain type! NonIndependentFinding includes 0..* MedicationNonAdherenceReason - Element: AdherenceFrequency - Concept: TBD - Description: "The degree (frequency) that the stated treatment plan, prescription, or protocol was followed." - Value: CodeableConcept from QualitativeFrequencyVS - Element: MedicationNonAdherenceReason - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Description: "Reason that patient did not adhere to a medication regimen." - Value: CodeableConcept from MedicationNonAdherenceReasonVS + FindingResult from MedicationNonAdherenceReasonVS FindingTopicCode is TBD#TBD EntryElement: MedicationNotAdministered diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 728f66b3..6a8061ed 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -32,7 +32,7 @@ Concept: LNC#74165-2 "HistoryOfEmploymentStatus" Description: "The self-reported current and historical data about a person's economic relationship to work (e.g. having one or more jobs), including start and end dates. A person's Employment Status could change over time, for example, a person could be employed following a period of choosing to not be in the labor force. Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." -Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 + FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 FindingTopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" 0..0 NonIndependentFinding 0..0 FocalSubjectModifier @@ -43,7 +43,7 @@ Concept: LNC#87510-4 "Date of Retirement" Description: "A self-reported date that a person considers themselves to have ‘retired’. A person can be both retired and employed (an Employment Status); most often, a person would be retired from one job and employed in another job. A person also can have more than one retirement date; for example, a person could retire from military service, then later retire from a civilian job. Multiple retirement dates should be recorded using multiple FHIR resources. Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." -Value: dateTime + FindingResult value is type dateTime FindingTopicCode is LNC#87510-4 "Date of Retirement" 0..0 NonIndependentFinding 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. @@ -67,7 +67,7 @@ Description: "Related data elements about the work a person reports having perfo Knowledge of person's Usual Work can potentially assist in diagnosis, treatment and/or prevention of chronic condition(s) or conditions with a long latency. The potential for exposure to Occupational Hazard(s) related to an Occupation and/or an Industry can change over time, and a person could have been in and out of their Usual Work over time, so additional data are helpful to fully evaluate the possible impact of the person's Usual Work on their health and guide appropriate use of screening tests to detect early disease. Example: a person has worked for a total of 30 years as a 'secretary' (Occupation), but in various industries, mostly hotel construction. Her Usual Occupation is 'secretary' and her Usual Industry is 'hotel construction.' Usual Work does not include work that was unpaid or voluntary." -Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 + FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 FindingTopicCode is LNC#21843-8 NonIndependentFinding includes 1..1 UsualIndustry @@ -76,20 +76,20 @@ includes 0..1 UsualOccupationDuration RelevantTime value is type TimePeriod Element: UsualIndustry - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#21844-6 "History of Usual industry" Description: "The industry (type of business) which the subject has worked in for the longest duration while in the usual occupation. For example, a person who has spent 30 years as a secretary in various industries, but mostly in construction, would record a usual occupation of secretary and a usual industry of construction." // "A history of this observation is not retained. Actually past versions of the observation could be retained, but the panel should refer to the latest one only. //Value: CodeableConcept from IndustryVS - Value: CodeableConcept from + FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 FindingTopicCode is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration - Based on: NonIndependentFinding + Based on: QuantitativeNonIndependentFinding Concept: LNC#74163-7 "Usual occupation duration" Description: "The total time spent on an activity, inclusive of all time intervals, whether continuous or interrupted." - Value: Quantity with units UCUM#a + // FindingResult.Quantity.Units.Coding is UCUM#a FindingTopicCode is LNC#74163-7 "Usual occupation duration" EntryElement: PastOrPresentJob @@ -99,7 +99,8 @@ Description: "Related data elements for a current or previous job, as reported b A person can have more than one job at the same time and multiple jobs over time, so the data related to each job must remain in the record in perpetuity. Each job should be recorded in a separate instance of PastOrPresentJob. A person's job can be a social determinant of their health and information about a person's job can support patient care, population health, and public health. In patient care, knowledge of a person's past or present job(s) can impact recognition, diagnosis, management, and treatment of injuries and illnesses. These data also can be used for clinical decision support and to prompt discussion of preventive care measures. For example, a record of jobs that require prolonged time in the sun might prompt a health care provider to inquire if the person wears protective clothing or sunscreen while working. At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." -0..0 Value +0..0 FindingResult +0..0 ExceptionValue FindingTopicCode is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization NonIndependentFinding @@ -119,7 +120,7 @@ includes 0..1 IsCurrentJob Element: Occupation Based on: CodedSocialHistoryObservation Concept: LNC#85659-1 "Occupation CDC Census code" - Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 + FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 Element: Employer Based on: Role @@ -139,7 +140,7 @@ includes 0..1 IsCurrentJob Concept: LNC#86188-0 Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." // Value: CodeableConcept from IndustryVS - Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 + FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 FindingTopicCode is LNC#86188-0 Element: WorkClassification @@ -147,60 +148,60 @@ includes 0..1 IsCurrentJob Concept: LNC#85104-8 "Compensation and sector employment type" Description: "Type of compensation and sector for a person's job, such as 'paid work, self-employed' or 'voluntary work', as reported by the person." //Value: CodeableConcept from WorkClassificationVS - Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 + FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 FindingTopicCode is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#87707-6 Description: "A coded indicator of responsibilities for directing work and personnel management responsibilities for a person's job, as reported by the person. For US military jobs, this is pay grade." //Value: CodeableConcept from SupervisoryLevelVS - Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 + FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 FindingTopicCode is LNC#87707-6 Element: JobDuty Based on: NonIndependentFinding Concept: LNC#63761-1 Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " - Value: string + FindingResult value is type string FindingTopicCode is LNC#63761-1 Element: OccupationalHazard Based on: NonIndependentFinding Concept: LNC#87729-0 Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." - Value: string + FindingResult value is type string FindingTopicCode is LNC#87729-0 Element: WorkSchedule - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#74159-5 Description: "Typical arrangement of working hours for a person's job, as reported by the person." //Value: CodeableConcept from WorkScheduleVS - Value: CodeableConcept from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 + FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 FindingTopicCode is LNC#74159-5 Element: WeeklyWorkDays - Based on: NonIndependentFinding + Based on: QuantitativeNonIndependentFinding Concept: LNC#74160-3 Description: "The average number of days per week that a person spends performing their duties for work." - Value: Quantity with units UCUM#d + // FindingResult.Quantity.Units.Coding is UCUM#d FindingTopicCode is LNC#74160-3 0..0 ReferenceRange Element: DailyWorkHours - Based on: NonIndependentFinding + Based on: QuantitativeNonIndependentFinding Concept: LNC#87512-0 Description: "The average number of hours in a day that a person spends performing their duties for work." - Value: Quantity with units UCUM#h + // FindingResult.Quantity.Units.Coding is UCUM#h FindingTopicCode is LNC#87512-0 0..0 ReferenceRange // Last minute addition 8/17 based on Genny's comment Element: IsCurrentJob - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Description: "A flag indicating if this is the person's current job (at the time the resource was last updated)." - Value: CodeableConcept from YesNoVS + FindingResult from YesNoVS Element: SocialHistoryObservation Based on: Observation @@ -230,9 +231,8 @@ Description: "A simplified observation for social histories." Element: CodedSocialHistoryObservation Based on: SocialHistoryObservation Description: "The result of social history questions, whose answer is expressed as a code." -Value: 0..1 CodeableConcept + FindingResult value is type CodeableConcept - /* UsualWork is in the value element Element: UsualWork Based on: NonIndependentFinding diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map.txt index 730cb6c2..639f80fc 100644 --- a/spec/shr_occupation_map.txt +++ b/spec/shr_occupation_map.txt @@ -9,12 +9,12 @@ SocialHistoryObservation maps to Observation: Category maps to category NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code - NonIndependentFinding.Value maps to component.value[x] + NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange // constrain related to 0..0 - Value maps to value[x] + FindingResult maps to value[x] // ExceptionValue maps to dataAbsentReason RelevantTime maps to effective[x] // Encounter maps to context diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 19fa0b94..4eb7a02d 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -25,7 +25,7 @@ Based on: CodedNonLaboratoryObservation Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" Concept: SCT#86049000 "Malignant neoplasm, primary (morphologic abnormality)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." // SpecificFocusOfFinding value is type CancerDisorder or TumorPresent? - Value from CancerHistologicTypeVS + FindingResult from CancerHistologicTypeVS FindingTopicCode is SCT#86049000 "Malignant neoplasm, primary (morphologic abnormality)" EntryElement: CancerHistologicGrade @@ -33,7 +33,7 @@ EntryElement: CancerHistologicGrade Based on: SimpleCodedNonLaboratoryObservation Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" Concept: LNC#21858-6 "Grade Cancer" - Value from http://loinc.org/vs/LL213-0 + FindingResult from http://loinc.org/vs/LL213-0 FindingTopicCode is LNC#21858-6 "Grade Cancer" // SpecificFocusOfFinding value is type CancerDisorder // TODO: this is failing; bug reported 0..0 AnatomicalLocation @@ -43,7 +43,7 @@ EntryElement: CancerProgression Based on: CodedNonLaboratoryObservation Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" Concept: SCT#246453008 "Course of illness (attribute)" - Value from CancerProgressionVS + FindingResult from CancerProgressionVS FindingTopicCode is SCT#246453008 "Course of illness (attribute)" // SpecificFocusOfFinding value is type CancerDisorder @@ -52,7 +52,7 @@ Based on: Observation Description: "The extent a cancer has spread in the body (source: NCI Dictionary of Cancer Terms)" Concept: SCT#258232002 "Cancer staging (tumor staging)" FindingTopicCode is SCT#258232002 "Cancer staging (tumor staging)" - 0..0 Value + 0..0 FindingResult 0..0 ExceptionValue 0..0 DeltaFlag 0..0 ReferenceRange @@ -74,10 +74,10 @@ Concept: SCT#258232002 "Cancer staging (tumor staging)" includes 0..1 TNMPathologicDistantMetastasesClassification Element: StageTiming -Based on: NonIndependentFinding +Based on: CodedNonIndependentFinding Concept: SCT#260869008 "Timing of stage" Description: "Indicates when the staging was done, in terms of treatment landmarks." -Value: CodeableConcept from StageTimingPrefixVS + FindingResult from StageTimingPrefixVS FindingTopicCode is SCT#260869008 "Timing of stage" 0..0 ReferenceRange @@ -85,31 +85,30 @@ Element: ClinicalStageTiming Based on: StageTiming Concept: SCT#260869008 "Timing of stage" Description: "Indicates staging was done from clinical evidence." - Value is SCT#385349001 "Clinical stage (observable entity)" + FindingResult.CodeableConcept is SCT#385349001 "Clinical stage (observable entity)" Element: PathologicStageTiming Based on: StageTiming Concept: SCT#260869008 "Timing of stage" Description: "Indicates when the staging was done using pathologic evidence." - Value is SCT#405978005 "Pathologic stage (observable entity)" + FindingResult.CodeableConcept is SCT#405978005 "Pathologic stage (observable entity)" Element: StageGroup // did not use precoordinated codes because only available for clinical and pathologic. -//Based on: NonIndependentFinding -Based on: NonIndependentFinding +Based on: CodedNonIndependentFinding Concept: MTH#C1302362 "Stage Grouping" Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" -Value: CodeableConcept from http://loinc.org/vs/LL240-3 + FindingResult from http://loinc.org/vs/LL240-3 FindingTopicCode is MTH#C1302362 "Stage Grouping" // SpecificFocusOfFinding value is type CancerStageInformation 0..0 ReferenceRange Element: StageSuffix -Based on: NonIndependentFinding +Based on: CodedNonIndependentFinding Concept: TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. assign a local value set until we get something assigned. Description: "A suffix used in conjuction with certain cancer stage categories, usually qualifying how the category value was determined." -Value: CodeableConcept from StageSuffixVS // local value set created + FindingResult from StageSuffixVS // local value set created FindingTopicCode is TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. 0..0 ReferenceRange @@ -117,7 +116,7 @@ EntryElement: TNMClinicalPrimaryTumorClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." - Value from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 + FindingResult from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 // SpecificFocusOfFinding value is type CancerDisorder 0..0 ReferenceRange 0..0 DeltaFlag @@ -133,7 +132,7 @@ EntryElement: TNMClinicalRegionalNodesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC - Value from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 + FindingResult from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" // SpecificFocusOfFinding value is type CancerDisorder 0..0 ReferenceRange @@ -150,7 +149,7 @@ EntryElement: TNMClinicalDistantMetastasesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC - Value from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 + FindingResult from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 0..0 ReferenceRange FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" 0..0 ReferenceRange @@ -167,7 +166,7 @@ EntryElement: TNMPathologicPrimaryTumorClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21899-0 "Primary tumor.pathology Cancer" Description: "" //TODO: pull from LOINC - Value from http://loinc.org/vs/LL232-0 // normative + FindingResult from http://loinc.org/vs/LL232-0 // normative FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" 0..0 ReferenceRange 0..0 DeltaFlag @@ -184,7 +183,7 @@ EntryElement: TNMPathologicRegionalNodesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" Description: "" //TODO: pull from LOINC - Value from http://loinc.org/vs/LL3136-0 // normative + FindingResult from http://loinc.org/vs/LL3136-0 // normative FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" // SpecificFocusOfFinding value is type CancerDisorder 0..0 ReferenceRange @@ -201,7 +200,7 @@ EntryElement: TNMPathologicDistantMetastasesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" Description: "" //TODO: pull from LOINC - Value from http://loinc.org/vs/LL3137-8 + FindingResult from http://loinc.org/vs/LL3137-8 0..0 ReferenceRange FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative // SpecificFocusOfFinding value is type CancerDisorder @@ -248,7 +247,8 @@ EntryElement: ECOGPerformanceStatus Based on: SimpleNonLaboratoryObservation Description: "The Eastern Cooperative Oncology Group (ECOG) performance status grade or score, which indicates a patient’s level of daily functioning and physical ability. Source: LOINC" Concept: LNC#89247-1 "ECOG Performance Status score" -Value: Quantity with units UCUM#1 + FindingResult value is type Quantity + FindingResult.Quantity.Units.Coding is UCUM#1 //0..0 ReferenceRange // set to 0 to 5 0..0 SpecificFocusOfFinding 0..0 Media @@ -260,7 +260,8 @@ EntryElement: KarnofskyPerformanceStatus Based on: SimpleNonLaboratoryObservation Description: "The Karnofsky Performance Status (KPS) is a tool used to measure a patient's functional status. It can be used to compare the effectiveness of different therapies and to help assess the prognosis of certain patients, such as those with certain cancers. The KPS score ranges from 0 to 100. Higher scores are associated with better functional status, with 100 representing no symptoms or evidence of disease, and 0 representing death [PMID: 23870327] . This panel contains LOINC terms to report the KPS score [LOINC: 89243-0] and its interpretation [LOINC: 89245-5]." Concept: LNC#89243-0 "Karnofsky Performance Status panel" -Value: Quantity with units UCUM#1 + FindingResult value is type Quantity + FindingResult.Quantity.Units.Coding is UCUM#1 0..0 SpecificFocusOfFinding 0..0 Media 0..0 AnatomicalLocation diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 3a88dcdc..bc48fe97 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -115,10 +115,10 @@ EntryElement: WoundAssessmentPanel Based on: NonLaboratoryObservation Concept: LNC#39135-9 Description: "Group of observations regarding the properties and severity of a wound." -0..0 Value +0..0 FindingResult +0..0 ExceptionValue 1..1 WoundIdentifier Interpretation is type WoundAssessmentInterpretation -0..0 ExceptionValue 0..0 AnatomicalLocation // carried by wound assertion 0..0 Device FindingTopicCode is LNC#39135-9 @@ -143,49 +143,49 @@ includes 0..1 WoundExudateObservation // 72292-6 Wound exudate observation includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Element: WoundEpisode - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#89252-1 "Episode of Wound" Description: "Wound episode refers to a period of the wound, an incident in the course of a wound" - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.4/expansion + FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.4/expansion Element: WoundPeriwoundDescription - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#72301-5 Description: "A description of the skin around the wound (periwound). Color, induration, warmth and edema should be assessed. Redness of the surrounding skin can be indicative of unrelieved pressure. Irritation of the surrounding skin can result from exposure to feces or urine, a reaction to the dressing or tape, or inappropriate removal of dressing or tape. Redness, tenderness, warmth and swelling are classical clinical signs of infection. [Reference: Brown, P., 2009]" - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.2/expansion + FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.2/expansion //could be from http://loinc.org/vs/LL2216-1 Element: WoundVisibleInternalStructure - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#89250-5 Description: "Exposed body structures, devices, and/or foreign bodies visible by the naked eye in a wound." - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.1/expansion + FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.1/expansion // should be from http://loinc.org/vs/LL4935-4 Element: WoundPressureUlcerAssociation - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: TBD Description: "Is the wound associated with a device or pressure point?" - Value: CodeableConcept from YesNoUnknownVS + FindingResult from YesNoUnknownVS Element: WoundTunnelingPresentOrAbsent - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#72298-3 Description: "The presence or absence of wound tunneling." - Value: CodeableConcept from PresentAbsentVS + FindingResult from PresentAbsentVS // LOINC: should re-use the same Snomed codes for Present-Absent Element: WoundUnderminingPresentOrAbsent - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#72295-9 Description: "The presence or absence of wound undermining." - Value: CodeableConcept from PresentAbsentVS + FindingResult from PresentAbsentVS Element: WoundExudatePresentOrAbsent - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#89259-6 Description: "The presence or absence of wound exudate." - Value: CodeableConcept from PresentAbsentVS + FindingResult from PresentAbsentVS Element: WoundAssessmentInterpretation Based on: Interpretation @@ -194,10 +194,10 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Value: CodeableConcept from http://loinc.org/vs/LL3816-7 if covered // underpowered? 'normal' and 'other' Element: WoundTrend - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#89253-9 Description: "Whether a condition is improving, worsening, stable, or resolved." - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.5/expansion // should be from http://loinc.org/vs/LL4938-8 with values improved, deteriorated, stablized or resolved. Resolved is missing from the VS in VSAC + FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.5/expansion // should be from http://loinc.org/vs/LL4938-8 with values improved, deteriorated, stablized or resolved. Resolved is missing from the VS in VSAC // LOINC: The wound bed panel is factored so the percentages pair unambiguously with the color/appearances. It should be a set of 2-tuples (pairs). The way it is done in LOINC doesn't allow pairing @@ -214,16 +214,18 @@ includes 1..1 WoundBedAppearance includes 1..1 WoundBedAppearancePercentage Element: WoundBedAppearance - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#72371-8 Description: "Appearance of wound base (bed)." - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.6/expansion //could be from http://loinc.org/vs/LL2237-7 + FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.6/expansion //could be from http://loinc.org/vs/LL2237-7 Element: WoundBedAppearancePercentage - Based on: NonIndependentFinding + Based on: QuantitativeNonIndependentFinding Concept: LNC#72370-0 Description: "Area of wound bed appearance/Entire ​Area of wound bed." - Value: Quantity with units UCUM#% +// FindingResult.Quantity.Units.Coding is UCUM#% +// FindingResult.Quantity with units UCUM#% +// FindingResult.Value.Quantity with units... 0..0 ReferenceRange EntryElement: WoundBedColorObservation @@ -240,17 +242,17 @@ includes 1..1 WoundBedColorAreaPercentage // LOINC: Why precoordinate a general concept such as 'color' with the concept of wound bed? Element: WoundBedColor - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#39132-6 Description: "Color of Wound base (bed)." - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.7/expansion //could be from http://loinc.org/vs/LL2338-3 + FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.7/expansion //could be from http://loinc.org/vs/LL2338-3 // LOINC: Why precoordinate a general concept such as 'percentage of area' with the concept of wound bed? Element: WoundBedColorAreaPercentage - Based on: NonIndependentFinding + Based on: QuantitativeNonIndependentFinding Concept: LNC#89255-4 Description: "Wound bed area identified by color/​Area of wound bed." - Value: Quantity with units UCUM#% +// FindingResult.Quantity.Units.Coding is UCUM#% 0..0 ReferenceRange EntryElement: WoundEdgeObservation @@ -268,16 +270,16 @@ includes 0..1 WoundEdgeColor // LOINC: Why precoordinate a general concept such as 'color' with the concept of wound edge? Element: WoundEdgeDescription - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#72304-9 Description: "Edge of wound description." - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.8/expansion // could be from http://loinc.org/vs/LL2230-2 + FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.8/expansion // could be from http://loinc.org/vs/LL2230-2 Element: WoundEdgeColor - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#39133-4 Description: "Color of Wound edge." - Value: CodeableConcept could be from http://loinc.org/vs/LL2338-3 + FindingResult could be from http://loinc.org/vs/LL2338-3 EntryElement: WoundTunnelingObservation Based on: ComponentOnlyNonLaboratoryObservation @@ -295,18 +297,18 @@ includes 0..1 WoundTunnelClockDirection // LOINC: why precoordinate clock position + tunneling? Element: WoundTunnelLength - Based on: NonIndependentFinding + Based on: QuantitativeNonIndependentFinding Concept: LNC#72296-7 Description: "Length of wound tunneling." - Value: Quantity with units UCUM#cm +// FindingResult.Quantity.Units.Coding is UCUM#cm 0..0 ReferenceRange // LOINC: should require use the full clock position value set Element: WoundTunnelClockDirection - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#72297-5 Description: "Clock position of wound tunnel" - Value: CodeableConcept from ClockDirectionVS + FindingResult from ClockDirectionVS EntryElement: WoundUnderminingObservation @@ -322,18 +324,18 @@ includes 0..1 WoundUnderminingLength includes 0..1 WoundUnderminingClockDirection Element: WoundUnderminingLength - Based on: NonIndependentFinding + Based on: QuantitativeNonIndependentFinding Concept: LNC#72293-4 Description: "Length of wound undermining." - Value: Quantity with units UCUM#cm +// FindingResult.Quantity.Units.Coding is UCUM#cm 0..0 ReferenceRange // LOINC: should require use the full clock position value set Element: WoundUnderminingClockDirection - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#72294-2 Description: "Clock position of wound undermining" - Value: CodeableConcept from ClockDirectionVS + FindingResult from ClockDirectionVS EntryElement: WoundExudateObservation Based on: ComponentOnlyNonLaboratoryObservation @@ -353,35 +355,36 @@ includes 0..1 WoundExudateOdor // LOINC: Wound area should be in wound size panel, not wound exudate panel Element: WoundExudateAmount - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#39116-9 Description:"Drainage amount of wound" - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.10/expansion //could be from http://loinc.org/vs/LL2222-9 + FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.10/expansion //could be from http://loinc.org/vs/LL2222-9 Element: WoundExudateVolume - Based on: NonIndependentFinding + Based on: QuantitativeNonIndependentFinding Concept: LNC#39122-7 Description:"Appearance of exudate from wound" - Value: Quantity with units UCUM#mL +// FindingResult.Quantity.Units.Coding is UCUM#mL + 0..0 ReferenceRange Element: WoundExudateAppearance - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#72290-0 Description:"Appearance of exudate from wound" - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.11/expansion //could be from http://loinc.org/vs/LL2220-3 + FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.11/expansion //could be from http://loinc.org/vs/LL2220-3 Element: WoundExudateColor - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#72289-2 Description:"Color of exudate from wound" - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.12/expansion + FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.12/expansion // could be from http://loinc.org/vs/LL2219-5 Element: WoundExudateOdor - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Concept: LNC#72288-4 Description:"Odor of exudate from wound" - Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.13/expansion + FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.13/expansion EntryElement: WoundSizeObservation @@ -399,31 +402,31 @@ includes 0..1 WoundDepth includes 0..1 WoundArea Element: WoundLength - Based on: NonIndependentFinding + Based on: QuantitativeNonIndependentFinding Concept: LNC#39126-8 Description: "Length of the wound (longest dimension)." - Value: Quantity with units UCUM#cm +// FindingResult.Quantity.Units.Coding is UCUM#cm 0..0 ReferenceRange Element: WoundWidth - Based on: NonIndependentFinding + Based on: QuantitativeNonIndependentFinding Concept: LNC#39125-0 Description: "Width of the wound (perpendicular to longest dimension)." - Value: Quantity with units UCUM#cm +// FindingResult.Quantity.Units.Coding is UCUM#cm 0..0 ReferenceRange Element: WoundDepth - Based on: NonIndependentFinding + Based on: QuantitativeNonIndependentFinding Concept: LNC#39127-6 Description: "Depth of the wound." - Value: Quantity with units UCUM#cm +// FindingResult.Quantity.Units.Coding is UCUM#cm 0..0 ReferenceRange Element: WoundArea - Based on: NonIndependentFinding + Based on: QuantitativeNonIndependentFinding Concept: LNC#89260-4 Description: "Area of the wound." - Value: Quantity with units UCUM#cm2 +// FindingResult.Quantity.Units.Coding with units UCUM#cm2 0..0 ReferenceRange /* Old Stuff @@ -462,5 +465,5 @@ Value: Device is type SupportSurface Element: ImmersionDepth Concept: TBD Description: "Depth of penetration (sinking) into a support surface." - Value: Quantity with units UCUM#cm "cm" + FindingResult.Quantity.Units.Coding is UCUM#cm "cm" */ \ No newline at end of file From 3f5b4ec4c05c2a222e48d77f2c1f022d74e8c40d Mon Sep 17 00:00:00 2001 From: May Terry Date: Thu, 8 Nov 2018 12:47:46 -0500 Subject: [PATCH 094/289] fixed formatting error in ig-mcode-config.json --- spec/ig-mcode-config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/ig-mcode-config.json b/spec/ig-mcode-config.json index 9bb7b2ae..32cb26cb 100644 --- a/spec/ig-mcode-config.json +++ b/spec/ig-mcode-config.json @@ -14,7 +14,7 @@ "historyLink": "http://hl7.org/fhir/us/mcode/history.html", "primarySelectionStrategy": { - "strategy": "namespace", + "strategy": ["namespace"], "primary": ["mcode"], "hideSupporting": true } @@ -22,7 +22,7 @@ "filterStrategy": { "filter": true, - "strategy": "namespace", + "strategy": ["namespace"], "target": ["mcode"] }, "publisher": "The HL7 Cancer Interoperability Group sponsored by Clinical Interoperability Council Work Group (CIC)", From 872654e829dd6c407448b0f54be5087af2668ad0 Mon Sep 17 00:00:00 2001 From: May Terry Date: Thu, 8 Nov 2018 14:07:56 -0500 Subject: [PATCH 095/289] additional formatting fix to ig-mcode-config.json removed hl7.fhir.us from the npmName. This was resulting in none of elements displaying in the resulting IG. --- .DS_Store | Bin 8196 -> 8196 bytes spec/ig-mcode-config.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.DS_Store b/.DS_Store index b4911201f947272d6bf96416682bf82fb31b49ba..5a2c6b15a6c9f5054acf66eb89de482f53de5f54 100644 GIT binary patch literal 8196 zcmeHMTWl0n7(QPqbcRmp6tFGJf(r!-QiX*=Q@JhORVkNH*p`-yl--@NoiMwz?#yn1 zQmjuz5uc0#(Fi6Q4UYnfx5Q}TCHkN=UPz3_7+*2^g7L-w%$Y7-N*_$rG&(1l^PTxG z=lt{Ucjok;GRDxB*TRg|GsYykII5M@-Jx+kzs9vPPf|q)@@HmWIG(c7*>RS>z|Vl6 z0Y3wN2K)^88JH{?pfj5{X@YZKX#L*LfS-Z?Wd`{BAw(C)h=;=h-B$;7ZV5nGPGYyw zSmgu4kcSZuhXs;`8iXsMaD`W5K)91U|$92O|t8NA{H-pcSQ6u7I?{2|wzAtKQ4 z{S5dS7@q-NyO*>3SRXT(Q&PV#f4X+8E^WnPTHZ-9_Ko!7`}y;wI&DH-wtvhwftF!% zqxEc-WjaeG2kdOpw2~zIB$+i0+gZ8tYm`kXpE|8V;;l-0INom!#GQnbx7!lA{rs*Y z;q)iHai?XO#c?9J$Iu6Q)!9)i<0OoXo^zcIO(&BB-9|>U2HLEAMzh^{;zA+w)~nVJ z4z{dm3WZlS4>g4b!{O$ZrqJ5f@X(Mf)h!NhXg`!bdTj9c(22AB3F!Uey@yz}xG(nS zXjFVa%}$v~3XvNZg(X>@din7Zon45EjFi1Tnvv_H8Ih+~Dpi3k?OSWNDZT2<0zK@` ztYcUidyk&8347IQn-bKXvN9bxo$I?(mYGjy>|V7dl`vCzGvVl)O*3vB(@9osr*f8Q zc38H-r`g-%=tmr`8>i~oXInWZ>Q2^U(EP$m&D;8JohCI3dW@#FRmc}-)CCtTzGp>q z>&ECvwOTV%nXS}z7Yy4-ntIoOp*j6~6Lw0^Xhx=QAN>Xy$9TlhbFz9>?#v|8`p8VR zrn-JkAkdRf8jt1;=cw8sNv?F>{D5*mqlI=@8h6sv%aZJB7S0a@_H#`%r&F(a4oeyX zN~cXvq$WJWAM+OjO-3oEN-Rg=5SL{c~1+19L80^J3XRCSvy7QcU;66m4N zTWN~eu0fM0-V_N04)T?^Cv0bDR?kpWAA8HkD5||&w^`G8Oj1L{?r^En5LxOXYY@O# zLu92G%5)UYW2;z?d}E{lb1_zpump`*iZC`{BQ{|Rc3>wuunYUpiv*HL!9*GsvMAs&oWv7&5~uJCUch-=z)QG@ zx9|?$#e4V&U*Jnz!w9~^&$xk`BEYgy?(Z0lT_AoZyhU@n;BD@*Gk2zP@S!d3wOc1K zmA{?A`8#X&UA1+g#mnwp)v|tbkpQ>-eOGKA_f?6)^MrkFePBfnzoTuD9(f;Tn zqUuK^&Nj7T#I;@+TqF^}RLQ+n8iSQG?E;}|3^qxUS|&6rf?=6xuTB}6J10=Tx>-@w zsYG*GXj_$aGHn61TzGC&A`&rOo#q<1Mah`ahLryX#(v7Ku^)-8e}G{cDlrT7Sb$|% zfmY&Y1X0BBpv%$Sh@%S!J)R!+czOg!F^Ja zR;G_+qkD$yCrO(k;;85K{{s_$|DPn$`eFDP@H6mFWB}!{c&v?Pp6DILYwZwShv?#s z+YJkJU8r-*aYDBoCoKNMkj5c0!1Jr`R^90Y3o0C{{IQB C-;5yu literal 8196 zcmeHMU2GIZ9G`z_%Pwo%X+c`H2ObtEfd+g1;7ft)wGhgORIa5Te3ZT0wcWV4d*1F{ zX-lXFc2^hFc2^hFmOLGfbVRUqy^sl!W!fO0|5hzk^%O72;;>t>f^XT{^-Dr9{~^x zv6&|`xy0cTp(I7fpA3>uHYXrK)7Rj*zXthaa^EqC*U7Gz@HiX6AJLzar`jv zP9Q2U$O8rf2Ie!s&hCZ8C23-iR>$@<(>5~P+0+f}a-!R`b!RB%WNqE$t_w#Rn#StFqmf9{wz}}v9g(pyS*lzg+0}kJH9RtUcI=t+A|~*k3#4pL zj2C7GsJlrkflFkar=zw8BJre?N^{4;YnNu(++3^pqET=;&&bbtM&xCRQljo}Kd}7Z zp?*rUu5r|`G|$W#ZJKAe{j|(QdfJnY-H|bJNJV$jv9c)}E#*ngN@lUM(PCL~b42t` zW*p1va9qY>gjWxjMvHs>oIYB(W`>ZaU{*0-D5_^MU>@BrIn$z z>o+~pv}1ScWEm~5SiVA0`jBedGoLh#OxKX9dxO22n>1|QvMmbPf z=3Z5+RJA9YFrUtv-Y~6^q{#|eUZ$*3!!o@hozO9o!;a2I)VW1nqpp*rfH zVK&sNN~eo4QB4v9Z?036&Zkfd)Wxazpb@1}rn=l^X$iyPZp~X2wL2$5q6cM(H|~5? zQG4*lr7#q?9O|%{xvNn%CeiECDK_^Z&Gn9?4g2n@_DNDNv$W{Cp-VMUw}apJn&?K3 zq(%TCHPL!er0m_an$(jRIY3U~P8lZW$ZO4bTXCU_Ts&BhUd)Kp*sj1_?-l1u1YK4LNugo`V7+hWl2_Ka~mrKe)0oynfS`#_hXe(*l@tyJsnKrVP3IgtWNq^0MN3pG28g zhgK^O<#)l{-O+_YHO@#(ZFK2m^(wV$?ZcrEWqOl%bwh1Pp@3UL=GD!$Xe~e+8(66i zHOMG@x`f-BniYi>q0nVv-Kjh#<0hbmVikLo774XZi-omK*(bB@NXdT^?Y~NPf_zVI zpFF}(?L@r-Rb_5il!Hx08d%Ctm8UB%A-dl&xxzbLs0 zf({s1EDS(lTf8lX(Ju5vWM}O#UZ?S5iS-*7$Xzg-^&tT3(|;IZIgDMIPt?b8f!KoS XfBz7`etib-|KR=4Rm>&0D6@Y6-M3RS diff --git a/spec/ig-mcode-config.json b/spec/ig-mcode-config.json index 32cb26cb..1ef3433d 100644 --- a/spec/ig-mcode-config.json +++ b/spec/ig-mcode-config.json @@ -6,7 +6,7 @@ "entryTypeURL": "http://hl7.org/fhir/us/mcode/spec/", "implementationGuide": { - "npmName": "hl7.fhir.us.mcode", + "npmName": "mcode", "version": "0.2.0", "includeLogicalModels": true, "includeModelDoc": true, From 8380c94d6e3ba061a623c8a7f568b04c043ca2aa Mon Sep 17 00:00:00 2001 From: May Terry Date: Thu, 8 Nov 2018 15:04:44 -0500 Subject: [PATCH 096/289] fixed ClinicalNote Element Commented out the 0..0 Value since it's not an inherited attribute in Finding. --- spec/ig-mcode-config.json | 4 ++-- spec/shr_base_finding.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/ig-mcode-config.json b/spec/ig-mcode-config.json index 1ef3433d..17174a3c 100644 --- a/spec/ig-mcode-config.json +++ b/spec/ig-mcode-config.json @@ -14,7 +14,7 @@ "historyLink": "http://hl7.org/fhir/us/mcode/history.html", "primarySelectionStrategy": { - "strategy": ["namespace"], + "strategy": "namespace", "primary": ["mcode"], "hideSupporting": true } @@ -22,7 +22,7 @@ "filterStrategy": { "filter": true, - "strategy": ["namespace"], + "strategy": "namespace", "target": ["mcode"] }, "publisher": "The HL7 Cancer Interoperability Group sponsored by Clinical Interoperability Council Work Group (CIC)", diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index b88a6680..43002a81 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -356,7 +356,7 @@ EntryElement: ClinicalNote Based on: Finding Concept: MTH#C0747978 "Progress Note" Description: "An entry concerning a patient where the result is a narrative text." -0..0 Value +// 0..0 Value 0..0 ReferenceRange 1..1 Patient 1..1 CommentOrDescription // make required From a6b3b717f5e57b8e3fa40143008bdb9edc7ac9d2 Mon Sep 17 00:00:00 2001 From: May Terry Date: Thu, 8 Nov 2018 16:59:29 -0500 Subject: [PATCH 097/289] cleaned up CourseOfTreatment Changes affect discussion with @markkramerus that medication and surgical treatment types can use the generic ones provided that line of treatment and line of therapy are rolled up to CourseOfTreament. Changes reflect this decision. Also zero'd out unneeded attributes for CourseOfTreatment. --- spec/shr_intervention.txt | 54 +++++++++------------------------------ 1 file changed, 12 insertions(+), 42 deletions(-) diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index 5b775691..ef15e584 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -12,32 +12,23 @@ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category CodeSystem: RXN = http://www.nlm.nih.gov/research/umls/rxnorm -EntryElement: MedicationTreatmentPerformed -Based on: MedicationStatement // the therapy itself could be a procedure. -Description: "A medication that is part of a drug treatment regimen" -Concept: SCT#416608005 "Drug therapy (procedure)" -// SpecificFocusOfFinding value is type TreatmentRegimen - 0..1 TreatmentIntent - 0..1 LineOfTherapy - -EntryElement: CourseOfTreatment -Based on: ProcedurePerformed // The reasoning is that a coupe +EntryElement: CourseOfTreatmentPerformed +Based on: ProcedurePerformed // mlt: questionable to call CourseOfTreatment a procedure. Should be a series of activities that can consist of procedures. Description: "A series of coordinated treatment actions taken with a certain treatment intention." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - TopicCode from RadiationModalityVS if covered +// TopicCode from RadiationModalityVS if covered 0..1 TreatmentIntent 0..1 LineOfTherapy - 0..* ActionPerformed - +// 0..* ActionPerformed // mlt: removed and made more explicit. ActionPerformed is too abstract and appears mapped to DomainResource in the FHIR IG. There is no explicit reference to any of the treatment types which would have made this difficult to implement. + 0..* MedicationStatement // mlt: to cover patient-asserted medications taken at home. + 0..* MedicationAdministered // mlt: to cover clinician-administered meds in a clinical setting. + 0..* SurgicalProcedurePerformed + 0..* RadiationTreatmentPerformed + 0..0 AnatomicalLocation + 0..0 Device + 0..0 Location -EntryElement: SurgicalTreatmentPerformed -Based on: SurgicalProcedurePerformed -Description: "A medication that is part of a drug treatment regimen" -Concept: SCT#387713003 "Surgical procedure (procedure)" - TopicCode from SurgicalProcedureVS if covered - 0..1 TreatmentIntent - 0..1 LineOfTherapy // Is surgery regarded as a line of therapy? Element: TreatmentIntent Concept: SCT#395077000 "Treatment intent (situation)" // TODO: Needs a new LOINC number" @@ -46,31 +37,10 @@ Concept: SCT#387713003 "Surgical procedure (procedure)" Element: LineOfTherapy Description: "The sequence of therapies administered to a patient." - Concept: MTH#C133518 "Line of Therapy" // TODO: Need new LOINC and SNOMED codes + Concept: MTH#C133518 "Line of Therapy" // TODO: Need new LOINC and SNOMED codes Value: CodeableConcept from LineOfTherapyVS -/* - -Element: RegimenIdentifier -Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes -Description: "A unique identifier assigned to a regimen - a treatment plan that specifies the dosage, the schedule, and the duration of treatment. (source: NCI Dictionary)" -Value: string // CodeableConcept? - -Element: RegimenName -Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes -Description: "The name of the regimen - a treatment plan that specifies the dosage, the schedule, and the duration of treatment. (source: NCI Dictionary)" -Value: string - -Element: RegimenStartDate -Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes -Description: "The date that the treatment regimen began." -Value: date -Element: RegimenStopDate -Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes -Description: "The date that the treatment regimen began." -Value: date -*/ EntryElement: RadiationTreatmentPerformed Based on: ProcedurePerformed From b6ae948b53a0b22b5403fe7dc1b4e4fd01f0d938 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 9 Nov 2018 10:14:42 -0500 Subject: [PATCH 098/289] Update spec/shr_occupation.txt --- spec/shr_occupation.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 6a8061ed..9814544f 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -185,6 +185,7 @@ includes 0..1 IsCurrentJob Based on: QuantitativeNonIndependentFinding Concept: LNC#74160-3 Description: "The average number of days per week that a person spends performing their duties for work." + // FindingResult value is type Quantity // FindingResult.Quantity.Units.Coding is UCUM#d FindingTopicCode is LNC#74160-3 0..0 ReferenceRange From 9fb83a650102e0eaa4af1f5bb49686a283734c1d Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 12 Nov 2018 13:46:04 -0500 Subject: [PATCH 099/289] Update spec/shr_procedure_map.txt Fixed for Dylan H --- spec/shr_procedure_map.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/shr_procedure_map.txt b/spec/shr_procedure_map.txt index 1f0166c5..fea3a10a 100644 --- a/spec/shr_procedure_map.txt +++ b/spec/shr_procedure_map.txt @@ -15,7 +15,7 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Encounter maps to context Reason maps to reasonCode OccurrenceTimeOrPeriod maps to performed[x] -// Participation.FHIRProcedureParticipant maps to performer + Participation maps to performer Participation.Participant maps to performer.actor Participation.ParticipationType maps to performer.role Participation.OnBehalfOf maps to performer.onBehalfOf From d45b9eab573cd88e181c17421cab207a68b4032b Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 12 Nov 2018 15:44:22 -0500 Subject: [PATCH 100/289] minor corrections Eliminated Value: 0..1 in FindingResult --- spec/shr_base_finding.txt | 4 ++-- spec/shr_core.txt | 38 +++++++++++++++++----------------- spec/shr_core_map.txt | 2 +- spec/shr_entity_map.txt | 1 - spec/shr_occupation.txt | 2 +- spec/shr_oncologycore.txt | 43 ++++++++++++++++++++------------------- spec/shr_wound.txt | 3 ++- 7 files changed, 47 insertions(+), 46 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 43002a81..a358a592 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -17,11 +17,11 @@ Description: "A finding that does not or cannot stand alone, or a component of Element: FindingResult Description: "The value or result of a test, evaluation, or judgment, for example, a systolic blood pressure, or if a condition or body structure is present or absent." - Value: 0..1 (CodeableConcept or Quantity or string or Range or Ratio or time or dateTime or TimePeriod) + Value: CodeableConcept or Quantity or string or Range or Ratio or time or dateTime or TimePeriod // exclude boolean because FHIR STU3 component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 Element: FindingTopicCode - Description: "A code describing what the finding concerns, such as a lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property of the Patient or SpecificFocusOfFinding being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist. The topic code is not the result of the evaluation, which is found in the value. " + Description: "A code describing what the finding concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist. The topic code is not the result of the evaluation, which is found in the FindingResult. " Value: CodeableConcept Element: ExceptionValue diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 6e6b2fc9..ecfcbbf7 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -12,7 +12,11 @@ CodeSystem: NCI = https://evs.nci.nih.gov/ftp1/CDISC/SDTM/ CodeSystem: UCUM = http://unitsofmeasure.org -//------------ Complex Types aligned to FHIR --------------- +//------------ Types aligned to FHIR --------------- + +Element: Text +Description: "A simple string." +Value: string Element: Quantity Description: "A quantity with units, whose value may be bounded from above or below, as defined in FHIR" @@ -88,7 +92,6 @@ Description: "Coding of a concept, drawn from a controlled vocabulary. Includes Description: "A description of the purpose or origin of the code that assists in understanding the code." Value: code from CodingQualifierVS */ - Element: CodeSystem Concept: TBD Description: "A formal terminology system." @@ -269,11 +272,10 @@ Timing offers a choice of multiple OccurrenceTime (used is used to specify speci Value: positiveInt - Element: SampledData Concept: TBD Description: "Data that comes from a series of measurements taken by a device, which may have upper and lower limits. The data type also supports more than one dimension in the data." -1..1 Text +1..1 DataAsText 1..1 Origin 1..1 MillisecondsBetweenSamples 0..1 CorrectionFactor @@ -281,7 +283,7 @@ Description: "Data that comes from a series of measurements taken by a device, w 0..1 UpperLimit 1..1 Dimensions - Element: Text + Element: DataAsText Description: "A value that is a sting." Value: string @@ -302,10 +304,10 @@ Description: "Data that comes from a series of measurements taken by a device, w Description: "The lower limit of detection of the measured points. This is needed if any of the data points have the value 'L' (lower than detection limit)." Value: decimal - Element: UpperLimit - Concept: TBD + Element: UpperLimit + Concept: TBD Description: "The upper limit of detection of the measured points. This is needed if any of the data points have the value 'U' (higher than detection limit)." - Value: decimal + Value: decimal Element: Dimensions Concept: TBD @@ -412,11 +414,12 @@ Concept: TBD Description: "A qualitative (subjective) likelihood." Value: CodeableConcept from QualitativeLikelihoodVS -/*Element: Length +/* +Element: Length Concept: MTH#C1444754 Description: "The measurement or linear extent of something from end to end; the greatest dimensions of a body." Value: Quantity with Coding from UnitsOfLengthVS -*/ + Element: Depth Concept: SCT#131197000 "Depth (qualifier value)" Description: "The extent downward or inward; the perpendicular measurement from the surface downward to determine deepness." @@ -427,13 +430,6 @@ Concept: SCT#42798000 "Area (qualifier value)" Description: "The extent of a 2-dimensional surface enclosed within a boundary." Value: Quantity with units UCUM#cm2 -Element: ClockDirection -Concept: LNC#72294-2 -Description: "A direction indicated by an angle relative to 12 o'clock." -Value: CodeableConcept from ClockDirectionVS - - -/* Element: Volume Concept: MTH#C0449468 Description: "The amount of three dimensional space occupied by an object or the capacity of a space or container." @@ -762,12 +758,16 @@ Description: "A location or structure in the body, including tissues, regions, c Description: "Anatomical location or specimen further detailing directionality." Value: CodeableConcept from AnatomicalDirectionVS + Element: ClockDirection + Concept: LNC#72294-2 + Description: "A direction indicated by an angle relative to 12 o'clock." + Value: CodeableConcept from ClockDirectionVS + Element: DistanceFromLandmark Concept: TBD - Description: "" + Description: "How far the anatomical location of interest is from the given landmark" Value: Distance - Element: Identifier Concept: MTH#C0600091 Description: "A unique string that identifies a specific person or thing." diff --git a/spec/shr_core_map.txt b/spec/shr_core_map.txt index f4d6a8fc..c6480ef9 100644 --- a/spec/shr_core_map.txt +++ b/spec/shr_core_map.txt @@ -97,7 +97,7 @@ Timing maps to Timing: RecurrencePattern.CountPerInterval.MaxCount maps to repeat.frequencyMax SampledData maps to SampledData: - Text maps to data + DataAsText maps to data Origin maps to origin MillisecondsBetweenSamples maps to period CorrectionFactor maps to factor diff --git a/spec/shr_entity_map.txt b/spec/shr_entity_map.txt index 05a70222..ebfe6cbb 100644 --- a/spec/shr_entity_map.txt +++ b/spec/shr_entity_map.txt @@ -80,7 +80,6 @@ Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-locatio Location[Geoposition].Latitude maps to position.latitude Location[Geoposition].Longitude maps to position.longitude Location[Geoposition].Altitude maps to position.altitude - // Location[GeopoliticalLocation] maps to address // Can't do this since address is 0..1 and already mapped above ContactPoint maps to telecom ManagingOrganization maps to managingOrganization Type maps to type diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 9814544f..2ff3ef14 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -156,7 +156,7 @@ includes 0..1 IsCurrentJob Concept: LNC#87707-6 Description: "A coded indicator of responsibilities for directing work and personnel management responsibilities for a person's job, as reported by the person. For US military jobs, this is pay grade." //Value: CodeableConcept from SupervisoryLevelVS - FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 + FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 FindingTopicCode is LNC#87707-6 Element: JobDuty diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 4eb7a02d..81556d11 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -21,12 +21,14 @@ Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" EntryElement: CancerHistologicType // did not use precoordinated codes because only available for clinical and pathologic. -Based on: CodedNonLaboratoryObservation +Based on: SimpleCodedNonLaboratoryObservation Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" -Concept: SCT#86049000 "Malignant neoplasm, primary (morphologic abnormality)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." +Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." // SpecificFocusOfFinding value is type CancerDisorder or TumorPresent? FindingResult from CancerHistologicTypeVS - FindingTopicCode is SCT#86049000 "Malignant neoplasm, primary (morphologic abnormality)" + FindingTopicCode is SCT#371441004 "Histologic type (observable entity)" +0..0 AnatomicalLocation +0..0 Device EntryElement: CancerHistologicGrade // did not use precoordinated codes because only available for clinical and pathologic. @@ -40,12 +42,14 @@ Concept: LNC#21858-6 "Grade Cancer" 0..0 Device EntryElement: CancerProgression -Based on: CodedNonLaboratoryObservation +Based on: SimpleCodedNonLaboratoryObservation Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" Concept: SCT#246453008 "Course of illness (attribute)" FindingResult from CancerProgressionVS FindingTopicCode is SCT#246453008 "Course of illness (attribute)" -// SpecificFocusOfFinding value is type CancerDisorder +// SpecificFocusOfFinding value is type CancerDisorder +0..0 AnatomicalLocation +0..0 Device EntryElement: CancerStageInformation Based on: Observation @@ -63,9 +67,9 @@ Concept: SCT#258232002 "Cancer staging (tumor staging)" 0..1 FindingMethod from CancerStagingSystemVS // SpecificFocusOfFinding value is type CancerDisorder NonIndependentFinding - includes 0..1 StageGroup // MK - Should this be the value? + includes 0..1 StageGroup // MK - should this be the FindingResult? includes 0..1 StageTiming // retained StageTiming because if using TNM staging, the StageGroup still needs a prefix (even if we're using precoordinated categories). There are LOINC codes for clinical and pathologic stage groups in LOINC, but we back ourselves into TNM for stage group if we use them. - PanelMembers.Observation // MK - why aren't these components? + PanelMembers.Observation // MK - could these be components? includes 0..1 TNMClinicalPrimaryTumorClassification includes 0..1 TNMClinicalRegionalNodesClassification includes 0..1 TNMClinicalDistantMetastasesClassification @@ -79,19 +83,18 @@ Concept: SCT#260869008 "Timing of stage" Description: "Indicates when the staging was done, in terms of treatment landmarks." FindingResult from StageTimingPrefixVS FindingTopicCode is SCT#260869008 "Timing of stage" -0..0 ReferenceRange + + Element: ClinicalStageTiming + Based on: StageTiming + Concept: SCT#260869008 "Timing of stage" + Description: "Indicates staging was done from clinical evidence." + FindingResult.CodeableConcept is SCT#385349001 "Clinical stage (observable entity)" -Element: ClinicalStageTiming -Based on: StageTiming -Concept: SCT#260869008 "Timing of stage" -Description: "Indicates staging was done from clinical evidence." - FindingResult.CodeableConcept is SCT#385349001 "Clinical stage (observable entity)" - -Element: PathologicStageTiming -Based on: StageTiming -Concept: SCT#260869008 "Timing of stage" -Description: "Indicates when the staging was done using pathologic evidence." - FindingResult.CodeableConcept is SCT#405978005 "Pathologic stage (observable entity)" + Element: PathologicStageTiming + Based on: StageTiming + Concept: SCT#260869008 "Timing of stage" + Description: "Indicates when the staging was done using pathologic evidence." + FindingResult.CodeableConcept is SCT#405978005 "Pathologic stage (observable entity)" Element: StageGroup @@ -102,7 +105,6 @@ Description: "The classification resulting from cancer staging. Each type of FindingResult from http://loinc.org/vs/LL240-3 FindingTopicCode is MTH#C1302362 "Stage Grouping" // SpecificFocusOfFinding value is type CancerStageInformation -0..0 ReferenceRange Element: StageSuffix Based on: CodedNonIndependentFinding @@ -110,7 +112,6 @@ Concept: TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set t Description: "A suffix used in conjuction with certain cancer stage categories, usually qualifying how the category value was determined." FindingResult from StageSuffixVS // local value set created FindingTopicCode is TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. -0..0 ReferenceRange EntryElement: TNMClinicalPrimaryTumorClassification Based on: CodedNonLaboratoryObservation diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index bc48fe97..3e0fb307 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -1,6 +1,6 @@ Grammar: DataElement 5.0 Namespace: sw -Description: "SHR implementation of the HL7 Pressure Ulcer Prevention Domain Analysis Model (May, 2011)." +Description: "SHR implementation wound assessment." Uses: shr.core, shr.base, shr.entity, shr.encounter, shr.condition CodeSystem: UCUM = http://unitsofmeasure.org @@ -99,6 +99,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t AnatomicalLocationOrLandmarkCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.14/expansion 1..1 Laterality 0..0 AnatomicalDirection + 0..0 ClockDirection EntryElement: WoundAbsenceAssertion From 0181bcf3c6a6dcfea1626d03ac496cae98098a5c Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 13 Nov 2018 14:46:12 -0500 Subject: [PATCH 101/289] Cleaning up loose ends from unmapped fields Also a bit of renaming --- spec/shr_base_action.txt | 8 +------- spec/shr_base_finding.txt | 10 +++++++--- spec/shr_base_vs.txt | 4 ++-- spec/shr_core.txt | 8 ++++---- spec/shr_core_map.txt | 8 ++++---- spec/shr_intervention.txt | 6 +++--- spec/shr_medication.txt | 16 +++++++++++----- spec/shr_medication_map.txt | 7 +++++++ spec/shr_oncologycore.txt | 12 ++++++------ spec/shr_procedure.txt | 19 ++++++++++++------- spec/shr_procedure_map.txt | 8 ++++---- 11 files changed, 61 insertions(+), 45 deletions(-) diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index e8775c93..dc4c4a3c 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -8,17 +8,11 @@ Uses: shr.core, shr.entity, shr.encounter Abstract Element: ActionStatement Based on: InformationItem Description: "Abstract class representing any type of action." -1..1 TopicCode 0..1 Category // Might not need this 1..1 Patient // constrain from 0..1 to 1..1 0..1 Encounter // actions often take place during an encounter 0..* Reason - Element: TopicCode - Concept: TBD - Description: "A code representing the (not) requested or (not) performed action that is the topic of the statement." - Value: CodeableConcept - Element: Reason Concept: MTH#C0566251 Description: "The justification for an action or non-action, etc." @@ -31,7 +25,7 @@ Description: "Abstract class representing performance of any type of action." 0..* Participation 1..1 Status should be from http://hl7.org/fhir/ValueSet/event-status 0..1 Method -0..* RelatedRequest +0..1 RelatedRequest //0..1 EnactsPlan 0..1 ref(Facility) 0..1 Outcome // e.g., AdverseEvent diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index a358a592..f5c69bcc 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -185,10 +185,10 @@ Description: "An observation with components, but without a result value or pane EntryElement: LaboratoryObservation Based on: Observation Description: "A coded finding based on a specimen collected from a patient." + FindingTopicCode from LaboratoryCodeVS if covered 1..* Category 1..1 Patient 1..1 Specimen - FindingMethod should be from LaboratoryMethodVS 0..0 AnatomicalLocation // AnatomicalLocation is determined indirectly from Specimen.CollectionSite Category is OBSCAT#laboratory 0..* DiagnosticService @@ -222,6 +222,7 @@ Abstract Element: ExistenceAssertion Based on: Finding Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place. For assertions, the FindingTopicCode represents the thing asserted to be present or absent; i.e., the type of condition, event, relationship or phenomenon that is being asserted to exist or not exist." + FindingTopicCode is type ConditionOrDiagnosisCode FindingResult value is type CodeableConcept FindingResult from PresentAbsentVS // Leave ExceptionValue in, to represent the case where the presence or absence of something was not evaluated @@ -230,6 +231,11 @@ For assertions, the FindingTopicCode represents the thing asserted to be present 0..1 Certainty FindingStatus value is type CodeableConcept + Element: ConditionOrDiagnosisCode + Based on: FindingTopicCode + Description: "A specific code for the condition being determined to be present or absent." + Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make the binding weaker because US Core requires an extensible binding + Element: ObjectIdentifier Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." Value: Identifier @@ -262,7 +268,6 @@ Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." //0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson 1..1 Patient - FindingTopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make binding weaker because US Core requires an extensible binding 0..0 SpecificFocusOfFinding // always the patient? 0..0 FindingMethod 1..* Category from ConditionCategoryVS @@ -348,7 +353,6 @@ EntryElement: ConditionAbsentAssertion Based on: AbsenceAssertion Concept: MTH#C0277541 "no disease present" Description: "A finding that a condition is or was not present in the subject at a certain time or time period, not necessarily the time the information is gathered." - FindingTopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation diff --git a/spec/shr_base_vs.txt b/spec/shr_base_vs.txt index 1c2b45fa..4fd0bac8 100644 --- a/spec/shr_base_vs.txt +++ b/spec/shr_base_vs.txt @@ -96,8 +96,8 @@ Description: "Indicators for degree of change (delta) from the last or previou // has values decreased, decreased relative to previous, improved, increased, increased relative to previous, maintained stablized, worse // Also see LOINC #89253-9 Trend ... has values improved, deteriorated, stablized, resolved -ValueSet: LaboratoryMethodVS -Description: "Codes, including lab codes, that describe a method of determining an observation result." +ValueSet: LaboratoryCodeVS +Description: "Laboratory codes drawn from LOINC." Includes codes from LNC /* diff --git a/spec/shr_core.txt b/spec/shr_core.txt index ecfcbbf7..3bb1803e 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -12,7 +12,7 @@ CodeSystem: NCI = https://evs.nci.nih.gov/ftp1/CDISC/SDTM/ CodeSystem: UCUM = http://unitsofmeasure.org -//------------ Types aligned to FHIR --------------- +//------------ Data Types aligned to FHIR --------------- Element: Text Description: "A simple string." @@ -20,11 +20,11 @@ Value: string Element: Quantity Description: "A quantity with units, whose value may be bounded from above or below, as defined in FHIR" -0..1 DecimalValue +0..1 Number 0..1 Comparator 0..1 Units - Element: DecimalValue + Element: Number Description: "A decimal value." Value: decimal @@ -414,7 +414,7 @@ Concept: TBD Description: "A qualitative (subjective) likelihood." Value: CodeableConcept from QualitativeLikelihoodVS -/* +/* NOT suitable data types Element: Length Concept: MTH#C1444754 Description: "The measurement or linear extent of something from end to end; the greatest dimensions of a body." diff --git a/spec/shr_core_map.txt b/spec/shr_core_map.txt index c6480ef9..c6b7a601 100644 --- a/spec/shr_core_map.txt +++ b/spec/shr_core_map.txt @@ -15,7 +15,7 @@ CodeableConcept maps to CodeableConcept: DisplayText maps to text Quantity maps to Quantity: - DecimalValue maps to value + Number maps to value Units.Coding.Code maps to code Units.Coding.CodeSystem maps to system Units.Coding.DisplayText maps to unit @@ -83,10 +83,10 @@ Ratio maps to Ratio: Timing maps to Timing: OccurrenceTime maps to event TimingCode maps to code - EventDuration.DurationRange.LowerBound.SimpleQuantity.DecimalValue maps to repeat.duration - EventDuration.DurationRange.UpperBound.SimpleQuantity.DecimalValue maps to repeat.durationMax + EventDuration.DurationRange.LowerBound.SimpleQuantity.Number maps to repeat.duration + EventDuration.DurationRange.UpperBound.SimpleQuantity.Number maps to repeat.durationMax EventDuration.DurationRange.LowerBound.SimpleQuantity.Units.Coding.Code maps to repeat.durationUnit - RecurrencePattern.RecurrenceInterval.Duration.DecimalValue maps to repeat.period + RecurrencePattern.RecurrenceInterval.Duration.Number maps to repeat.period RecurrencePattern.RecurrenceInterval.Duration.Units.Coding.Code maps to repeat.periodUnit constrain repeat.periodMax to 0..0 RecurrencePattern.DayOfWeek maps to repeat.dayOfWeek diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index ef15e584..811400fb 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -14,10 +14,10 @@ CodeSystem: RXN = http://www.nlm.nih.gov/research/umls/rxnorm EntryElement: CourseOfTreatmentPerformed -Based on: ProcedurePerformed // mlt: questionable to call CourseOfTreatment a procedure. Should be a series of activities that can consist of procedures. +Based on: ProcedurePerformed // mlt: questionable to call CourseOfTreatment a procedure. It is modeled as a series of activities including medications administered and procedures. Description: "A series of coordinated treatment actions taken with a certain treatment intention." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" -// TopicCode from RadiationModalityVS if covered +// ProcedureCode from ???? if covered 0..1 TreatmentIntent 0..1 LineOfTherapy // 0..* ActionPerformed // mlt: removed and made more explicit. ActionPerformed is too abstract and appears mapped to DomainResource in the FHIR IG. There is no explicit reference to any of the treatment types which would have made this difficult to implement. @@ -46,7 +46,7 @@ EntryElement: RadiationTreatmentPerformed Based on: ProcedurePerformed Description: "A radiation oncology procedure. If the treatment is part of a course of treatment, the PartOf attribute should indicate the CourseOfTreatment." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - TopicCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" + ProcedureCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" 0..1 RadiationModality 0..1 RadiationDosePerFraction 0..1 RadiationFractionsDelivered diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index c3699c0c..12b0ec84 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -68,8 +68,7 @@ EntryElement: MedicationStatement Based on: ActionPerformed Concept: SCT#416608005 "Drug therapy (procedure)" // TODO: investigate whether we need a new code or use a drug concept. Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." -// SourceOfInformation value is type AnyPersonOrOrganization - TopicCode is SCT#416608005 "Drug therapy (procedure)" +// SourceOfInformation value is type AnyPersonOrOrganization 1..1 Medication 0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category @@ -86,7 +85,15 @@ Description: "A record of the use of a medication. If the medication is given as 0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category Status from http://hl7.org/fhir/ValueSet/medication-admin-status -0..0 Method // because of Dosage.Method +0..0 Method // because of Dosage.Method + Participation.Participant is type FHIRMedicationAdministrationParticipant +0..0 Participation.ParticipationType + RelatedRequest value is type ref(MedicationRequested) + + Element: FHIRMedicationAdministrationParticipant + Based on: Participant + Description: "Constraints participants to classes that are accepted by FHIR as actors in procedures in STU 3." + Value: ref(Practitioner) or ref(Patient) or ref(RelatedPerson) or ref(Device) EntryElement: MedicationAdherence @@ -172,8 +179,7 @@ Description: "Indicates that a medication product has NOT been dispensed for a n EntryElement: MedicationChange Based on: ActionPerformed Concept: MTH#C0554834 -Description: "Description of a modification or change of a medication or dosage." - TopicCode from MedicationChangeTypeVS //"Whether the change is a dose change, switch to a new medication, or discontinuation." +Description: "Description of a modification or change of a medication or dosage, whether the change is a dose change, switch to a new medication, or discontinuation." 0..* MedicationBeforeChange //might be more than one 0..* MedicationAfterChange Reason from MedicationChangeReasonVS // why was the medication changed? diff --git a/spec/shr_medication_map.txt b/spec/shr_medication_map.txt index 9a731677..b393e1b1 100644 --- a/spec/shr_medication_map.txt +++ b/spec/shr_medication_map.txt @@ -28,6 +28,9 @@ MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c MedicationAdministered maps to MedicationAdministration: // SourceOfInformation.Value maps to informationSource + Patient maps to subject + Encounter maps to context + RelatedRequest maps to prescription constrain notGiven to 0..0 constrain reasonNotGiven to 0..0 Dosage maps to dosage @@ -36,6 +39,10 @@ MedicationAdministered maps to MedicationAdministration: Reason maps to reasonCode OccurrenceTimeOrPeriod maps to effective[x] Status maps to status + Participation maps to performer + Participation.Participant maps to performer.actor +// Participation.ParticipationType maps to performer.role (no role in med administration!) + Participation.OnBehalfOf maps to performer.onBehalfOf MedicationNotAdministered maps to MedicationAdministration: // SourceOfInformation.Value maps to informationSource diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 81556d11..4379cb35 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -267,12 +267,12 @@ Concept: LNC#89243-0 "Karnofsky Performance Status panel" 0..0 Media 0..0 AnatomicalLocation 0..0 Device -//0..0 ReferenceRange // set to 0 to 5 -// ReferenceRange.Range.LowerBound.Quantity is 0. -// ReferenceRange.Range.UpperBound.Quantity is 5. -//0..0 ReferenceRange.Type -//0..0 ReferenceRange.ApplicableSubpopulation -//0..0 ReferenceRange.ApplicableAgeRange +// ReferenceRange.Range.LowerBound.Quantity.Number is 0.0 +// ReferenceRange.Range.LowerBound.Quantity.Units is UCUM#1 +// ReferenceRange.Range.UpperBound.Quantity.Number is 5.0 +// ReferenceRange.Range.UpperBound.Quantity.Units is UCUM#1 +0..0 ReferenceRange.ApplicableSubpopulation +0..0 ReferenceRange.ApplicableAgeRange Interpretation from http://loinc.org/vs/LL4986-7 // normative answer list diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 106b8837..00d9040e 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -9,7 +9,7 @@ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category EntryElement: ProcedurePerformed Based on: ActionPerformed Description: "A procedure that has been performed." -1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* AnatomicalLocation 0..1 PartOf value is type ref(ProcedurePerformed) 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -28,6 +28,11 @@ Description: "A procedure that has been performed." RelatedRequest value is type ref(ProcedureRequested) 0..* OutputFinding // in CIMI, this is part of ProcedureTopic, but the definition hinges on performance, so it belongs here, not there. + Element: ProcedureCode + Concept: TBD + Description: "A code representing the procedure (not) requested or (not) performed." + Value: CodeableConcept + Element: InputFinding Description: "Patient findings expected for the performance of the specified procedure. For instance, an x-ray of a fracture prior to a surgical procedure for a bone fracture." Value: ref(Observation) @@ -49,7 +54,7 @@ Description: "A procedure that has been performed." EntryElement: ProcedureNotPerformed Based on: ActionNotPerformed 0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason -1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* AnatomicalLocation //0..1 PartOf value is type ref(ProcedurePerformed) ??? 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -61,7 +66,7 @@ EntryElement: ProcedureRequested Based on: ActionRequested PriorityRank must be from http://hl7.org/fhir/ValueSet/request-priority // required Status must be from http://hl7.org/fhir/ValueSet/request-status -1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* AnatomicalLocation 0..1 PartOf value is type ref(ProcedurePerformed) 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -76,7 +81,7 @@ Based on: ActionRequested EntryElement: ProcedureRequestedAgainst Based on: ActionRequestedAgainst -1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* AnatomicalLocation @@ -99,7 +104,7 @@ Element: LaboratoryProcedurePerformed Based on: ProcedurePerformed Concept: MTH#C0456984 Description: "A procedure performed on a collected specimen such as a blood panel or a biopsy." -1..1 TopicCode from http://hl7.org/fhir/ValueSet/observation-codes +1..1 ProcedureCode from http://hl7.org/fhir/ValueSet/observation-codes Category is OBSCAT#laboratory 0..1 ref(Specimen) //0..1 ref(Device) // constraint from 0..* @@ -109,7 +114,7 @@ Element: SurgicalProcedurePerformed Based on: ProcedurePerformed Concept: TBD Description: "A surgical action, independent of action context." - TopicCode from SurgicalProcedureVS + ProcedureCode from SurgicalProcedureVS 0..* DirectSite 0..* DirectSiteCode 0..* IndirectSite @@ -187,5 +192,5 @@ Based on: ProcedurePerformed Description: "Diagnostic imaging procedure performed." Concept: SCT#363679005 "Imaging (procedure)" // SpecificFocusOfFinding value is type Patient - TopicCode from DiagnosticImagingVS + ProcedureCode from DiagnosticImagingVS \ No newline at end of file diff --git a/spec/shr_procedure_map.txt b/spec/shr_procedure_map.txt index fea3a10a..d5c68730 100644 --- a/spec/shr_procedure_map.txt +++ b/spec/shr_procedure_map.txt @@ -4,7 +4,7 @@ Target: FHIR_STU_3 ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: - TopicCode maps to code + ProcedureCode maps to code Patient maps to subject Category maps to category constrain notDone to 0..0 @@ -29,7 +29,7 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: - TopicCode maps to code + ProcedureCode maps to code Patient maps to subject Category maps to category // TODO the following is causing a crash @@ -56,7 +56,7 @@ SurgicalProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefiniti ProcedureRequested maps to ProcedureRequest: // _Entry.CreationTime maps to authoredOn // _Entry.SignedBy.Value.EntityOrRole maps to requester - TopicCode maps to code + ProcedureCode maps to code Category maps to category constrain doNotPerform to 0..0 Patient maps to subject @@ -75,7 +75,7 @@ ProcedureRequestedAgainst maps to ProcedureRequest: fix intent to http://hl7.org/fhir/request-intent#proposal _Entry.CreationTime maps to authoredOn _Entry.SignedBy.Value.EntityOrRole maps to requester - TopicCode maps to code + ProcedureCode maps to code Category maps to category Patient maps to subject AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite From 4f269c08ca36c20138816394bb958baf35ba8619 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 13 Nov 2018 15:56:52 -0500 Subject: [PATCH 102/289] simplified Units references --- spec/shr_core.txt | 14 +++++++------- spec/shr_occupation.txt | 6 +++--- spec/shr_oncologycore.txt | 4 ++-- spec/shr_wound.txt | 22 ++++++++++------------ 4 files changed, 22 insertions(+), 24 deletions(-) diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 3bb1803e..c25e01d7 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -45,31 +45,31 @@ Description: "A quantity where the comparator is not used, as defined in FHIR" Element: IntegerQuantity Based on: Quantity Description: "A Quantity that is an integer." - Units.Coding is UCUM#1 + Units is UCUM#1 Element: Age Based on: Quantity Concept: MTH#C0001779 Description: "How long someone has been alive, or something has existed." - Units with Coding from http://hl7.org/fhir/ValueSet/units-of-time + Units from http://hl7.org/fhir/ValueSet/units-of-time Element: Distance Based on: Quantity Concept: MTH#C0012751 Description: "The measure of space separating two objects or points." - Units with Coding from UnitsOfLengthVS + Units from UnitsOfLengthVS Element: Duration Based on: SimpleQuantity Concept: MTH#C0449238 Description: "The length of time that something continues." - Units with Coding from TimeUnitOfMeasureVS + Units from TimeUnitOfMeasureVS Element: Money Based on: Quantity Concept: TBD Description: "Representation of an amount of currency or monetary value." - Units with Coding from CurrencyVS + Units from CurrencyVS Element: Coding Concept: MTH#C0805701 @@ -407,7 +407,7 @@ Element: Percentage Based on: SimpleQuantity Concept: MTH#C0439165 Description: "A percentage value where 100.0 represents 100%." - Units.Coding is UCUM#% + Units is UCUM#% Element: QualitativeLikelihood Concept: TBD @@ -487,7 +487,7 @@ Based on: Ratio Concept: MTH#C0376249 Description: "How many occurrences of an event per unit of time." Numerator.Quantity with units UCUM#1 - Denominator.Quantity.Units with Coding from http://hl7.org/fhir/ValueSet/units-of-time + Denominator.Quantity.Units from http://hl7.org/fhir/ValueSet/units-of-time Element: SemiquantFrequency Concept: TBD diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 2ff3ef14..63d89b7f 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -89,7 +89,7 @@ includes 0..1 UsualOccupationDuration Based on: QuantitativeNonIndependentFinding Concept: LNC#74163-7 "Usual occupation duration" Description: "The total time spent on an activity, inclusive of all time intervals, whether continuous or interrupted." - // FindingResult.Quantity.Units.Coding is UCUM#a + // FindingResult.Quantity.Units is UCUM#a FindingTopicCode is LNC#74163-7 "Usual occupation duration" EntryElement: PastOrPresentJob @@ -186,7 +186,7 @@ includes 0..1 IsCurrentJob Concept: LNC#74160-3 Description: "The average number of days per week that a person spends performing their duties for work." // FindingResult value is type Quantity - // FindingResult.Quantity.Units.Coding is UCUM#d + // FindingResult.Quantity.Units is UCUM#d FindingTopicCode is LNC#74160-3 0..0 ReferenceRange @@ -194,7 +194,7 @@ includes 0..1 IsCurrentJob Based on: QuantitativeNonIndependentFinding Concept: LNC#87512-0 Description: "The average number of hours in a day that a person spends performing their duties for work." - // FindingResult.Quantity.Units.Coding is UCUM#h + // FindingResult.Quantity.Units is UCUM#h FindingTopicCode is LNC#87512-0 0..0 ReferenceRange diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 4379cb35..862b573c 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -249,7 +249,7 @@ Based on: SimpleNonLaboratoryObservation Description: "The Eastern Cooperative Oncology Group (ECOG) performance status grade or score, which indicates a patient’s level of daily functioning and physical ability. Source: LOINC" Concept: LNC#89247-1 "ECOG Performance Status score" FindingResult value is type Quantity - FindingResult.Quantity.Units.Coding is UCUM#1 +// FindingResult.Quantity.Units is UCUM#1 //0..0 ReferenceRange // set to 0 to 5 0..0 SpecificFocusOfFinding 0..0 Media @@ -262,7 +262,7 @@ Based on: SimpleNonLaboratoryObservation Description: "The Karnofsky Performance Status (KPS) is a tool used to measure a patient's functional status. It can be used to compare the effectiveness of different therapies and to help assess the prognosis of certain patients, such as those with certain cancers. The KPS score ranges from 0 to 100. Higher scores are associated with better functional status, with 100 representing no symptoms or evidence of disease, and 0 representing death [PMID: 23870327] . This panel contains LOINC terms to report the KPS score [LOINC: 89243-0] and its interpretation [LOINC: 89245-5]." Concept: LNC#89243-0 "Karnofsky Performance Status panel" FindingResult value is type Quantity - FindingResult.Quantity.Units.Coding is UCUM#1 +// FindingResult.Quantity.Units is UCUM#1 0..0 SpecificFocusOfFinding 0..0 Media 0..0 AnatomicalLocation diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 3e0fb307..4a9e550f 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -224,9 +224,7 @@ includes 1..1 WoundBedAppearancePercentage Based on: QuantitativeNonIndependentFinding Concept: LNC#72370-0 Description: "Area of wound bed appearance/Entire ​Area of wound bed." -// FindingResult.Quantity.Units.Coding is UCUM#% -// FindingResult.Quantity with units UCUM#% -// FindingResult.Value.Quantity with units... + FindingResult.Quantity.Units is UCUM#% 0..0 ReferenceRange EntryElement: WoundBedColorObservation @@ -253,7 +251,7 @@ includes 1..1 WoundBedColorAreaPercentage Based on: QuantitativeNonIndependentFinding Concept: LNC#89255-4 Description: "Wound bed area identified by color/​Area of wound bed." -// FindingResult.Quantity.Units.Coding is UCUM#% +// FindingResult.Quantity.Units is UCUM#% 0..0 ReferenceRange EntryElement: WoundEdgeObservation @@ -301,7 +299,7 @@ includes 0..1 WoundTunnelClockDirection Based on: QuantitativeNonIndependentFinding Concept: LNC#72296-7 Description: "Length of wound tunneling." -// FindingResult.Quantity.Units.Coding is UCUM#cm +// FindingResult.Quantity.Units is UCUM#cm 0..0 ReferenceRange // LOINC: should require use the full clock position value set @@ -328,7 +326,7 @@ includes 0..1 WoundUnderminingClockDirection Based on: QuantitativeNonIndependentFinding Concept: LNC#72293-4 Description: "Length of wound undermining." -// FindingResult.Quantity.Units.Coding is UCUM#cm +// FindingResult.Quantity.Units is UCUM#cm 0..0 ReferenceRange // LOINC: should require use the full clock position value set @@ -365,7 +363,7 @@ includes 0..1 WoundExudateOdor Based on: QuantitativeNonIndependentFinding Concept: LNC#39122-7 Description:"Appearance of exudate from wound" -// FindingResult.Quantity.Units.Coding is UCUM#mL +// FindingResult.Quantity.Units is UCUM#mL 0..0 ReferenceRange Element: WoundExudateAppearance @@ -406,28 +404,28 @@ includes 0..1 WoundArea Based on: QuantitativeNonIndependentFinding Concept: LNC#39126-8 Description: "Length of the wound (longest dimension)." -// FindingResult.Quantity.Units.Coding is UCUM#cm +// FindingResult.Quantity.Units is UCUM#cm 0..0 ReferenceRange Element: WoundWidth Based on: QuantitativeNonIndependentFinding Concept: LNC#39125-0 Description: "Width of the wound (perpendicular to longest dimension)." -// FindingResult.Quantity.Units.Coding is UCUM#cm +// FindingResult.Quantity.Units is UCUM#cm 0..0 ReferenceRange Element: WoundDepth Based on: QuantitativeNonIndependentFinding Concept: LNC#39127-6 Description: "Depth of the wound." -// FindingResult.Quantity.Units.Coding is UCUM#cm +// FindingResult.Quantity.Units is UCUM#cm 0..0 ReferenceRange Element: WoundArea Based on: QuantitativeNonIndependentFinding Concept: LNC#89260-4 Description: "Area of the wound." -// FindingResult.Quantity.Units.Coding with units UCUM#cm2 +// FindingResult.Quantity.Units with units UCUM#cm2 0..0 ReferenceRange /* Old Stuff @@ -466,5 +464,5 @@ Value: Device is type SupportSurface Element: ImmersionDepth Concept: TBD Description: "Depth of penetration (sinking) into a support surface." - FindingResult.Quantity.Units.Coding is UCUM#cm "cm" + FindingResult.Quantity.Units is UCUM#cm "cm" */ \ No newline at end of file From 605f02eabf945c80e8d49273ca84ca847cbb2c40 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 14 Nov 2018 14:09:17 -0500 Subject: [PATCH 103/289] Fixed up anatomical location --- spec/shr_base_finding.txt | 6 +++--- spec/shr_base_map.txt | 20 +++++++++++--------- spec/shr_core.txt | 21 +++++++++++++++------ spec/shr_core_map.txt | 6 +++--- spec/shr_entity.txt | 2 +- spec/shr_intervention.txt | 2 +- spec/shr_medication.txt | 2 +- spec/shr_medication_map.txt | 2 +- spec/shr_oncology.txt | 6 +++--- spec/shr_oncologycore.txt | 24 ++++++++++++------------ spec/shr_oncologycore_vs.txt | 12 ++++++------ spec/shr_procedure.txt | 2 +- spec/shr_procedure_map.txt | 8 ++++---- spec/shr_wound.txt | 9 +++++---- 14 files changed, 67 insertions(+), 55 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index f5c69bcc..edd31ead 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -100,7 +100,7 @@ For an Observation, the FindingTopicCode describes the aspect or property of the FindingStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 DeltaFlag 0..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered -0..1 AnatomicalLocation // TODO: Change from element to code to align with FHIR?? +0..1 AnatomicalLocation 0..1 CommentOrDescription 0..1 Interpretation 0..1 Device @@ -189,7 +189,7 @@ Description: "A coded finding based on a specimen collected from a patient." 1..* Category 1..1 Patient 1..1 Specimen -0..0 AnatomicalLocation // AnatomicalLocation is determined indirectly from Specimen.CollectionSite +0..0 AnatomicalLocation // Location is determined indirectly from Specimen.CollectionSite Category is OBSCAT#laboratory 0..* DiagnosticService @@ -376,7 +376,7 @@ EntryElement: BodyStructurePresent Based on: PresenceAssertion Description: "A body structure such as wound or tumor, observed to be present in a patient." 1..1 Patient -0..1 AnatomicalLocation +0..1 AnatomicalLocationStructured 1..1 Morphology 0..* Media 0..1 RelevantTime diff --git a/spec/shr_base_map.txt b/spec/shr_base_map.txt index f8236564..78c24530 100644 --- a/spec/shr_base_map.txt +++ b/spec/shr_base_map.txt @@ -27,7 +27,8 @@ Observation maps to Observation: // TODO: observationresults is only for labs FindingMethod maps to method CommentOrDescription maps to comment Category maps to category - AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite + AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Device maps to device Specimen maps to specimen ReferenceRange maps to referenceRange @@ -62,7 +63,8 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us FindingMethod maps to method CommentOrDescription maps to comment Category maps to category - AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite + AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Device maps to device Specimen maps to specimen ReferenceRange maps to referenceRange @@ -97,8 +99,8 @@ ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinitio Category maps to category ObjectIdentifier maps to identifier FindingTopicCode maps to code - constrain bodySite to 0..0 - AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite + AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Encounter maps to context ClinicalStatus maps to clinicalStatus FindingStatus maps to verificationStatus @@ -115,8 +117,8 @@ ConditionAbsentAssertion maps to Basic: BodyStructurePresent maps to BodySite: Patient maps to patient ObjectIdentifier maps to identifier - AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to code - AnatomicalLocation.Laterality maps to qualifier (slice on = coding.code) - AnatomicalLocation.AnatomicalDirection maps to qualifier - AnatomicalLocation.CommentOrDescription maps to description - AnatomicalLocation.Media maps to image \ No newline at end of file + AnatomicalLocationStructured.AnatomicalLocationOrLandmarkCode maps to code + AnatomicalLocationStructured.Laterality maps to qualifier (slice on = coding.code) + AnatomicalLocationStructured.AnatomicalDirection maps to qualifier + AnatomicalLocationStructured.CommentOrDescription maps to description + AnatomicalLocationStructured.Media maps to image \ No newline at end of file diff --git a/spec/shr_core.txt b/spec/shr_core.txt index c25e01d7..3de32e73 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -275,7 +275,7 @@ Timing offers a choice of multiple OccurrenceTime (used is used to specify speci Element: SampledData Concept: TBD Description: "Data that comes from a series of measurements taken by a device, which may have upper and lower limits. The data type also supports more than one dimension in the data." -1..1 DataAsText +1..1 DataAsString 1..1 Origin 1..1 MillisecondsBetweenSamples 0..1 CorrectionFactor @@ -283,8 +283,8 @@ Description: "Data that comes from a series of measurements taken by a device, w 0..1 UpperLimit 1..1 Dimensions - Element: DataAsText - Description: "A value that is a sting." + Element: DataAsString + Description: "Data represented as a text sting." Value: string Element: Origin @@ -732,9 +732,18 @@ Description: "The way a substance enters an organism after contact, particularly Value: CodeableConcept from http://hl7.org/fhir/ValueSet/route-codes Element: AnatomicalLocation -Concept: LNC#72369-2 // Body site identification panel -// Perhaps SCT#758637006 "Anatomical location (property) (qualifier value)" +Concept: SCT#758637006 "Anatomical location (property) (qualifier value)" Description: "A location or structure in the body, including tissues, regions, cavities, and spaces; for example, right elbow, or left ventricle of the heart." +Value: AnatomicalLocationPrecoordinated or AnatomicalLocationStructured + +Element: AnatomicalLocationPrecoordinated +Concept: TBD +Description: "A single code representing a body site, without the need for further elaboration (such as laterality)." +Value: CodeableConcept should be from AnatomicalLocationVS + +Element: AnatomicalLocationStructured +Concept: LNC#72369-2 // Body site identification panel +Description: "A body site represented as a relative location, code and laterality, or other post-coordinated form." 1..1 AnatomicalLocationOrLandmarkCode 0..1 Laterality 0..1 DistanceFromLandmark @@ -745,7 +754,7 @@ Description: "A location or structure in the body, including tissues, regions, c Element: AnatomicalLocationOrLandmarkCode Concept: TBD - Description: "Code for the anatomical location or landmark, with or without laterality." + Description: "Code for the anatomical location or landmark, without laterality, direction, or other modifiers needed to completely specify the body site." Value: CodeableConcept should be from AnatomicalLocationVS Element: Laterality diff --git a/spec/shr_core_map.txt b/spec/shr_core_map.txt index c6b7a601..c80f7ed3 100644 --- a/spec/shr_core_map.txt +++ b/spec/shr_core_map.txt @@ -97,7 +97,7 @@ Timing maps to Timing: RecurrencePattern.CountPerInterval.MaxCount maps to repeat.frequencyMax SampledData maps to SampledData: - DataAsText maps to data + DataAsString maps to data Origin maps to origin MillisecondsBetweenSamples maps to period CorrectionFactor maps to factor @@ -115,8 +115,8 @@ Media maps to Attachment: Title maps to title CreationTime maps to creation - // Note that AnatomicalLocation does not have a patient, whereas FHIR BodySite (BodyStructure in r4) does. From FHIR 3.5 documentation: "The BodyStructure resource is not ... intended for describing the type of anatomical location but rather a specific body site on a specific patient." -AnatomicalLocation maps to BodySite: + // Note that AnatomicalLocationStructured does not have a patient, whereas FHIR BodySite (BodyStructure in r4) does. From FHIR 3.5 documentation: "The BodyStructure resource is not ... intended for describing the type of anatomical location but rather a specific body site on a specific patient." +AnatomicalLocationStructured maps to BodySite: AnatomicalLocationOrLandmarkCode maps to code Laterality maps to qualifier (slice on = coding.code) AnatomicalDirection maps to qualifier diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 09502c19..a77b8562 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: shr.entity Description: "The namespace containing definitions for basic classes." -Uses: shr.core, shr.base, shr.medication +Uses: shr.core, shr.base, shr.medication, shr.procedure Abstract Element: EntityOrRole Based on: InformationItem diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index 811400fb..fe4cccd9 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -25,7 +25,7 @@ Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure 0..* MedicationAdministered // mlt: to cover clinician-administered meds in a clinical setting. 0..* SurgicalProcedurePerformed 0..* RadiationTreatmentPerformed - 0..0 AnatomicalLocation + 0..* AnatomicalLocation // anatomical location is given in the individual actions 0..0 Device 0..0 Location diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 12b0ec84..bead96ab 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -56,7 +56,7 @@ Description: "The dosage of the medication. The data structure is flexible and c Element: DosageBodySite Concept: MTH#C0229986 Description: "The anatomic site at which medical intervention is applied." - Value: AnatomicalLocation + Value: AnatomicalLocationPrecoordinated Element: MaximumDosePerTimePeriod Concept: TBD diff --git a/spec/shr_medication_map.txt b/spec/shr_medication_map.txt index b393e1b1..a4c62558 100644 --- a/spec/shr_medication_map.txt +++ b/spec/shr_medication_map.txt @@ -10,7 +10,7 @@ Dosage maps to Dosage: AdditionalDosageInstruction maps to additionalInstruction RouteIntoBody maps to route DosageMethod maps to method - DosageBodySite.AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to site + DosageBodySite.AnatomicalLocationPrecoordinated maps to site MaximumDosePerTimePeriod maps to maxDosePerPeriod MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index ad039a0c..35cfe301 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -13,7 +13,7 @@ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category /************* LEGACY BEGIN ************ EntryElement: BreastSite -Based on: AnatomicalLocation +Based on: AnatomicalLocationStructured Description: "A body site specific to the breast structure." Value: CodeableConcept from BreastSiteVS 0..1 ClockDirection @@ -45,7 +45,7 @@ Description: "Diagnosis of cancer originating in the tissues of the breast, and FindingTopicCode from BreastCancerTypeVS StageInformation.StageDetail value is type BreastCancerStage 0..1 FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding - AnatomicalLocation is type BreastSite + AnatomicalLocationStructured is type BreastSite 0..1 MorphologyBehavior from MorphologyBehaviorVS Element: MorphologyBehavior @@ -501,7 +501,7 @@ Value: CodeableConcept from PositiveNegativeVS 0..0 Precondition 0..0 ReferenceRange 0..0 DeltaFlag -0..0 AnatomicalLocation +0..0 AnatomicalLocationd NonIndependentFinding includes 0..1 Refseq diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 862b573c..6e5e6488 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -27,7 +27,7 @@ Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LO // SpecificFocusOfFinding value is type CancerDisorder or TumorPresent? FindingResult from CancerHistologicTypeVS FindingTopicCode is SCT#371441004 "Histologic type (observable entity)" -0..0 AnatomicalLocation +0..0 AnatomicalLocation 0..0 Device EntryElement: CancerHistologicGrade @@ -38,7 +38,7 @@ Concept: LNC#21858-6 "Grade Cancer" FindingResult from http://loinc.org/vs/LL213-0 FindingTopicCode is LNC#21858-6 "Grade Cancer" // SpecificFocusOfFinding value is type CancerDisorder // TODO: this is failing; bug reported -0..0 AnatomicalLocation +0..0 AnatomicalLocation 0..0 Device EntryElement: CancerProgression @@ -48,7 +48,7 @@ Concept: SCT#246453008 "Course of illness (attribute)" FindingResult from CancerProgressionVS FindingTopicCode is SCT#246453008 "Course of illness (attribute)" // SpecificFocusOfFinding value is type CancerDisorder -0..0 AnatomicalLocation +0..0 AnatomicalLocation 0..0 Device EntryElement: CancerStageInformation @@ -61,7 +61,7 @@ Concept: SCT#258232002 "Cancer staging (tumor staging)" 0..0 DeltaFlag 0..0 ReferenceRange 0..0 Media - 0..0 AnatomicalLocation + 0..0 AnatomicalLocation 0..0 Specimen 0..0 Device 0..1 FindingMethod from CancerStagingSystemVS @@ -122,7 +122,7 @@ Description: "Detailed site-specific codes for the clinical tumor (T) as defi 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media -0..0 AnatomicalLocation +0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding @@ -139,7 +139,7 @@ Description: "" //TODO: pull from LOINC 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media -0..0 AnatomicalLocation +0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding @@ -172,7 +172,7 @@ Description: "" //TODO: pull from LOINC 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media -0..0 AnatomicalLocation +0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered // SpecificFocusOfFinding value is type CancerDisorder @@ -190,7 +190,7 @@ Description: "" //TODO: pull from LOINC 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media -0..0 AnatomicalLocation +0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding @@ -208,7 +208,7 @@ Description: "" //TODO: pull from LOINC 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media -0..0 AnatomicalLocation +0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding @@ -238,7 +238,7 @@ Concept: LNC#77975-1 "Earliest date of diagnosis" Description: "The earliest date of diagnosis (clinical or laboratory) of an illness or condition (Source: LOINC). This element is the same as the WhenClinicallyRecognized property in CancerDiagnosis." Value: dateTime // parent class only allows time, dateTime or TimePeriod as choices. 0..0 ReferenceRange -0..0 AnatomicalLocation +0..0 AnatomicalLocation // SpecificFocusOfFinding value is type CancerDisorder */ @@ -253,7 +253,7 @@ Concept: LNC#89247-1 "ECOG Performance Status score" //0..0 ReferenceRange // set to 0 to 5 0..0 SpecificFocusOfFinding 0..0 Media -0..0 AnatomicalLocation +0..0 AnatomicalLocation 0..0 Device Interpretation from http://loinc.org/vs/LL529-9 @@ -265,7 +265,7 @@ Concept: LNC#89243-0 "Karnofsky Performance Status panel" // FindingResult.Quantity.Units is UCUM#1 0..0 SpecificFocusOfFinding 0..0 Media -0..0 AnatomicalLocation +0..0 AnatomicalLocation 0..0 Device // ReferenceRange.Range.LowerBound.Quantity.Number is 0.0 // ReferenceRange.Range.LowerBound.Quantity.Units is UCUM#1 diff --git a/spec/shr_oncologycore_vs.txt b/spec/shr_oncologycore_vs.txt index 3002ab0e..7369d0e5 100644 --- a/spec/shr_oncologycore_vs.txt +++ b/spec/shr_oncologycore_vs.txt @@ -13,11 +13,11 @@ Includes codes descending from SCT#108369006 "Neoplasm (morphologic abnormality) ValueSet: CancerProgressionVS Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" -MTH#C0677874 "Complete response or remission; no measurable or observable evidence of cancer." -MTH#C0015250 "Complete resection/excision of cancerous tumor" -MTH#C1272745 "Improving, responding to treatment" -MTH#C0205360 "Stable, neither improving nor worsening" -MTH#C1546960 "Worsening, disease progressing" +MTH#C0677874 "Complete response or remission; no measurable or observable evidence of cancer." // SCT#103338009 In full remission (qualifier value) +MTH#C0015250 "Complete resection/excision of cancerous tumor" // ?? SCT#79095000 Complete excision of organ (procedure) +MTH#C1272745 "Improving, responding to treatment" // SCT#385633008 Improving (qualifier value) +MTH#C0205360 "Stable, neither improving nor worsening" // SCT#58158008 Stable (qualifier value) +MTH#C1546960 "Worsening, disease progressing" // SCT#230993007 Worsening (qualifier value) MTH#C3858734 "Insufficient evidence" ValueSet: StageTimingPrefixVS @@ -346,7 +346,7 @@ Description: "Antibodies relevant to HER2 receptor (IHC Test)." ValueSet: Ki67AntibodyVS -Description: "Antibodies relevant to Ki-67 Text." +Description: "Antibodies relevant to Ki-67 test." #MIB1 "MIB1 - CAP#31125" #SP6 "SP6 - CAP#31126" #MM1 "MM1 - CAP#32169" diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 00d9040e..c775dc69 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -180,7 +180,7 @@ Element: SpecimenCollectionPerformed Based on: ProcedurePerformed Description: "Base class for actions related to the collection of a specimen." 0..* AmountOrSize -0..1 AnatomicalLocation // FHIR limits Specimen.collection.bodySite to 0..1 +0..1 AnatomicalLocation Element: AmountOrSize Description: "The quantity of specimen collected" diff --git a/spec/shr_procedure_map.txt b/spec/shr_procedure_map.txt index d5c68730..6a803101 100644 --- a/spec/shr_procedure_map.txt +++ b/spec/shr_procedure_map.txt @@ -9,7 +9,7 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Category maps to category constrain notDone to 0..0 constrain notDoneReason to 0..0 - AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite + AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite PartOf maps to partOf Annotation maps to note Encounter maps to context @@ -35,7 +35,7 @@ ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us // TODO the following is causing a crash // fix notDone to true Reason maps to notDoneReason - AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite + AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite // PartOf maps to partOf Annotation maps to note constrain performed[x] to 0..0 @@ -60,7 +60,7 @@ ProcedureRequested maps to ProcedureRequest: Category maps to category constrain doNotPerform to 0..0 Patient maps to subject - AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite + AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite Encounter maps to context Reason maps to reasonCode Status maps to status @@ -78,6 +78,6 @@ ProcedureRequestedAgainst maps to ProcedureRequest: ProcedureCode maps to code Category maps to category Patient maps to subject - AnatomicalLocation.AnatomicalLocationOrLandmarkCode maps to bodySite + AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite Reason maps to reasonCode // Encounter maps to context diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 4a9e550f..85928ab8 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -75,7 +75,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t 1..1 FindingTopicCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered 0..1 ObjectIdentifier is type WoundIdentifier 0..1 ConditionCause is type WoundTypeEtiology -1..1 AnatomicalLocation is type WoundAnatomicalLocation +1..1 AnatomicalLocationStructured is type WoundAnatomicalLocation 0..0 Severity // not sure if zeroing it out is wise, but severity is not part of LOINC panel 0..0 Criticality 0..0 Certainty @@ -94,7 +94,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.3/expansion // should be from http://loinc.org/vs/LL4936-2 Element: WoundAnatomicalLocation - Based on: AnatomicalLocation + Based on: AnatomicalLocationStructured Concept: LNC#39111-0 "Body Site" AnatomicalLocationOrLandmarkCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.14/expansion 1..1 Laterality @@ -108,7 +108,7 @@ Description: "Documents the absence of a wound at a given body site. No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicalLocation." 1..1 FindingTopicCode is SCT#416462003 "Wound (disorder)" 1..1 Category is OBSCAT#exam -1..1 AnatomicalLocation is type WoundAnatomicalLocation +1..1 AnatomicalLocationStructured is type WoundAnatomicalLocation //--------------- Wound Assessment ------------------------- @@ -224,7 +224,7 @@ includes 1..1 WoundBedAppearancePercentage Based on: QuantitativeNonIndependentFinding Concept: LNC#72370-0 Description: "Area of wound bed appearance/Entire ​Area of wound bed." - FindingResult.Quantity.Units is UCUM#% +// FindingResult.Quantity.Units is UCUM#% 0..0 ReferenceRange EntryElement: WoundBedColorObservation @@ -251,6 +251,7 @@ includes 1..1 WoundBedColorAreaPercentage Based on: QuantitativeNonIndependentFinding Concept: LNC#89255-4 Description: "Wound bed area identified by color/​Area of wound bed." +// TODO: waiting on bug fix // FindingResult.Quantity.Units is UCUM#% 0..0 ReferenceRange From 2494615d7a591e1fb2ee256e4537e83e0f3b6719 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 14 Nov 2018 14:58:05 -0500 Subject: [PATCH 104/289] Established parking lot. Also updated AnatomicalLocation (now a choice) --- .../cimi_adverse.txt | 0 .../cimi_adverse_map.txt | 0 .../cimi_adverse_vs.txt | 0 .../cimi_allergy.txt | 0 .../cimi_allergy_map.txt | 0 .../cimi_allergy_vs.txt | 0 parking_lot/shr_behavior.txt | 289 ++++++++++++++++++ parking_lot/shr_behavior_map.txt | 14 + parking_lot/shr_behavior_vs.txt | 101 ++++++ parking_lot/shr_careplan.txt | 102 +++++++ parking_lot/shr_careplan_map.txt | 41 +++ parking_lot/shr_careplan_vs.txt | 20 ++ parking_lot/shr_environment.txt | 276 +++++++++++++++++ parking_lot/shr_environment_map.txt | 4 + parking_lot/shr_environment_vs.txt | 106 +++++++ parking_lot/shr_familyhistory.txt | 18 ++ parking_lot/shr_familyhistory_map.txt | 3 + .../shr_immunization.txt | 0 .../shr_immunization_map.txt | 0 .../shr_immunization_vs.txt | 0 parking_lot/shr_lifehistory.txt | 37 +++ parking_lot/shr_lifehistory_map.txt | 3 + parking_lot/shr_lifehistory_vs.txt | 82 +++++ parking_lot/shr_sexualhealth.txt | 222 ++++++++++++++ parking_lot/shr_sexualhealth_map.txt | 3 + parking_lot/shr_sexualhealth_vs.txt | 135 ++++++++ parking_lot/shr_vital.txt | 127 ++++++++ parking_lot/shr_vital_map.txt | 43 +++ parking_lot/shr_vital_vs.txt | 125 ++++++++ 29 files changed, 1751 insertions(+) rename cimi_adverse.txt => parking_lot/cimi_adverse.txt (100%) rename cimi_adverse_map.txt => parking_lot/cimi_adverse_map.txt (100%) rename cimi_adverse_vs.txt => parking_lot/cimi_adverse_vs.txt (100%) rename cimi_allergy.txt => parking_lot/cimi_allergy.txt (100%) rename cimi_allergy_map.txt => parking_lot/cimi_allergy_map.txt (100%) rename cimi_allergy_vs.txt => parking_lot/cimi_allergy_vs.txt (100%) create mode 100644 parking_lot/shr_behavior.txt create mode 100644 parking_lot/shr_behavior_map.txt create mode 100644 parking_lot/shr_behavior_vs.txt create mode 100644 parking_lot/shr_careplan.txt create mode 100644 parking_lot/shr_careplan_map.txt create mode 100644 parking_lot/shr_careplan_vs.txt create mode 100644 parking_lot/shr_environment.txt create mode 100644 parking_lot/shr_environment_map.txt create mode 100644 parking_lot/shr_environment_vs.txt create mode 100644 parking_lot/shr_familyhistory.txt create mode 100644 parking_lot/shr_familyhistory_map.txt rename shr_immunization.txt => parking_lot/shr_immunization.txt (100%) rename shr_immunization_map.txt => parking_lot/shr_immunization_map.txt (100%) rename shr_immunization_vs.txt => parking_lot/shr_immunization_vs.txt (100%) create mode 100644 parking_lot/shr_lifehistory.txt create mode 100644 parking_lot/shr_lifehistory_map.txt create mode 100644 parking_lot/shr_lifehistory_vs.txt create mode 100644 parking_lot/shr_sexualhealth.txt create mode 100644 parking_lot/shr_sexualhealth_map.txt create mode 100644 parking_lot/shr_sexualhealth_vs.txt create mode 100644 parking_lot/shr_vital.txt create mode 100644 parking_lot/shr_vital_map.txt create mode 100644 parking_lot/shr_vital_vs.txt diff --git a/cimi_adverse.txt b/parking_lot/cimi_adverse.txt similarity index 100% rename from cimi_adverse.txt rename to parking_lot/cimi_adverse.txt diff --git a/cimi_adverse_map.txt b/parking_lot/cimi_adverse_map.txt similarity index 100% rename from cimi_adverse_map.txt rename to parking_lot/cimi_adverse_map.txt diff --git a/cimi_adverse_vs.txt b/parking_lot/cimi_adverse_vs.txt similarity index 100% rename from cimi_adverse_vs.txt rename to parking_lot/cimi_adverse_vs.txt diff --git a/cimi_allergy.txt b/parking_lot/cimi_allergy.txt similarity index 100% rename from cimi_allergy.txt rename to parking_lot/cimi_allergy.txt diff --git a/cimi_allergy_map.txt b/parking_lot/cimi_allergy_map.txt similarity index 100% rename from cimi_allergy_map.txt rename to parking_lot/cimi_allergy_map.txt diff --git a/cimi_allergy_vs.txt b/parking_lot/cimi_allergy_vs.txt similarity index 100% rename from cimi_allergy_vs.txt rename to parking_lot/cimi_allergy_vs.txt diff --git a/parking_lot/shr_behavior.txt b/parking_lot/shr_behavior.txt new file mode 100644 index 00000000..43eeb6e0 --- /dev/null +++ b/parking_lot/shr_behavior.txt @@ -0,0 +1,289 @@ +Grammar: DataElement 5.0 +Namespace: shr.behavior +Description: "The SHR Behavior domain contains data definitions related to how the person of record acts, feels, or responds to situations." +Uses: shr.core, shr.base, cimi.core, cimi.context, cimi.topic, cimi.statement, cimi.entity, cimi.element, cimi.encounter, shr.condition + + +CodeSystem: LNC = http://loinc.org +CodeSystem: SCT = http://snomed.info/sct +CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: UCUM = http://unitsofmeasure.org + + +Element: BehavioralTopic +Concept: MTH#C0004927 +Based on: AssertionTopic +Description: "Topic for observable responses, actions, or activities of the subject, independent of context. Can be used to assert or deny behaviors." + TopicCode should be from BehaviorFindingVS + Category is LNC#54511-1 "Behavior" + + +EntryElement: BehaviorAbsent +Based on: ClinicalStatement +Concept: TBD +Description: "A statement about a response, action, or activity not demonstrated by the subject." + StatementTopic is type BehaviorTopic + StatementContext is type AbsenceContext + +EntryElement: BehaviorPresent +Based on: ClinicalStatement +Concept: MTH#C0004927 +Description: "A statement about observable responses, actions, or activities of the subject." + StatementTopic is type BehaviorTopic + StatementContext is type PresenceContext + + +EntryElement: SubstanceUsePresent +Based on: ConditionPresent // MedicationUse +Concept: MTH#C024251 +Description: "Assertion concerning the past or current use of a substance (alcohol, recreational drugs, illegal drugs, or abuse of prescription medication) that could negatively impact the subject's health." + TopicCode should be from SubstanceAbuseVS +Status + CodeableConcept from SubstanceOfAbuseVS 312417001 +0..1 FrequencyOfUse +0..1 ExposureRoute +0..1 ExposureMethod +0..* ExposureAmount + + Element: FrequencyOfUse + Based on: EvaluationComponent + Concept: MTH#C0556346 + Description: "A description of the frequency of substance use." + Value: CodeableConcept could be from SemiquantitativeFrequencyVS + + + + +EntryElement: IntravenousDrugUse +Based on: SubstanceUsePresent +Concept: MTH#C0242566 +Description: "Records whether the subject injects recreational drugs." +1..1 ExposureRoute is MTH#C1522726 "Intravenous route" +1..1 ExposureMethod is MTH#C0021494 "Intravenous Injection" + + +EntryElement: NicotineUse +Based on: SubstanceUse +Concept: LNC#11367-0 +Description: "The subject's current or past use of nicotine." + Value is MTH#C2363943 "Nicotine" +//1..1 EvaluationComponent.ExposureRoute from TBD "NicotineRouteVS" +//1..1 EvaluationComponent.ExposureMethod from TBD "NicotineExposureMethodVS" e.g. first hand, second hand, smoked, vaped, chewed + + +// It is not clear how to handle ONC smoking status except as a simple observation. It should really be aligned with SubstanceUsed with the details recorded in attributes." +EntryElement: ONCSmokingStatus +Based on: BehaviorPresent +Concept: LNC#72166-2 +Description: "Records the extent of the subject's use of tobacco." +Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-observation-ccdasmokingstatus + TopicCode is LNC#72166-2 +1..1 Subject // cardinality constraint + +// How can we indicate that a subject used to be an alcoholic, but is now sober? +EntryElement: AlcoholUse +Based on: SubstanceUse +Concept: MTH#C0001948 +Description: "The subject's current or past use of alcohol." + Value is SCT#398624005 "alcohol" + EvaluationMethod from AlcoholUseScreeningToolVS + PanelMembers.EvaluationTopic +includes 0..1 AlcoholBingeFrequency + + Element: AlcoholBingeFrequency + Based on: QuestionAnswerRecorded + Concept: MTH#C0556346 + Description: "How often have you had 6 or more Units if female, or 8 or more if male, on a single occasion in the last year?." + Value: CodeableConcept from SemiquantitativeFrequencyVS + + +EntryElement: SubstanceAbuseTreatment +Concept: TBD +Based on: ProcedurePerformed +Description: "The treatment program used to address a substance abuse problem." + TopicCode from SubstanceAbuseTreatmentTypeVS + +//-------------------------- + +EntryElement: ReligionInformation +Concept: +Based on: ComponentOnlyNonLaboratoryObservation + ObservationTopic.EvaluationComponent +includes 0..* ReligiousAffiliation +includes 0..1 DegreeOfReligiousObservance +includes 0..* ReligiousRestriction +includes 0..1 ReligiousCongregation + + Element: ReligiousAffiliation + Based on: CodedEvaluationComponent + Concept: SCT#160538000 + Description: "The affiliation of the person with a recognized religious group." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/v3-ReligiousAffiliation + + Element: DegreeOfReligiousObservance + Based on: CodedEvaluationComponent + Concept: SCT#160553008 + Description: "The extent to which the religious practice is actively followed." + Value: CodeableConcept from ReligiousObservanceLevelVS + + Element: ReligiousRestriction + Concept: TBD + Based on: CodedEvaluationComponent + Description: "Any restriction on that derives from religion and may impact medical treatment, other than dietary (handled elsewhere)." + Value: CodeableConcept from ReligiousRestrictionVS + + Element: ReligiousCongregation + Concept: TBD + Based on: EvaluationComponent + Description: "A group of place of religious practice." + Value: string + +//------------------------ + +EntryElement: Nutrition +Based on: Observation +Concept: +Description: "Quality of nutrition." +Value: CodeableConcept from PerformanceGradingScaleVS + ObservationTopic.EvaluationComponent +includes 0..* DietFollowed +includes 0..1 HasSufficientFood +includes 0..1 DietNutritionConcern + + +EntryElement: DietFollowed +Concept: TBD +Based on: QuestionAnswerRecorded +Description: "A type of nutritional plan followed by the subject." +Value: CodeableConcept from DietFollowedVS if covered + Category is LNC#54511-1 "Behavior" + +EntryElement: HasSufficientFood +Based on: QuestionAnswerRecorded +Concept: TBD +Description: "Frequency that the person of record unable to obtain food to stay hunger." +Value: CodeableConcept from QualitativeFrequencyVS + Category is LNC#54511-1 "Behavior" + +EntryElement: DietNutritionConcern +Based on: QuestionAnswerRecorded +Concept: TBD +Description: "An anxiety or worry about the diet or nutritional intake of the subject." +Value: CodeableConcept from DietNutritionConcernVS + Category is LNC#54511-1 "Behavior" + +EntryElement: SleepQuality +Based on: Observation +Concept: LNC#28323-4 +Description: "Quality of sleep." +Value: CodeableConcept from PerformanceGradingScaleVS + ObservationTopic.EvaluationComponent +includes 0..* SleepQualityCause +includes 0..1 TroubleFallingAsleep +includes 0..1 TroubleStayingAsleep +includes 0..1 WakeFeelingRested +includes 0..1 HoursSleepPerNight + + EntryElement: SleepQualityCause + Based on: CodedEvaluationComponent + Concept: TBD + Description: "Reason for poor sleep quality." + Value: CodeableConcept from SleepQualityCauseVS + + EntryElement: TroubleFallingAsleep + Based on: CodedEvaluationComponent + Concept: TBD + Description: "How often the subject has trouble falling asleep." + Value: CodeableConcept from QualitativeFrequencyVS + + + EntryElement: TroubleStayingAsleep + Based on: CodedEvaluationComponent + Concept: TBD + Description: "How often the subject has trouble staying asleep." + Value: CodeableConcept from QualitativeFrequencyVS + + EntryElement: WakeFeelingRested + Based on: CodedEvaluationComponent + Concept: TBD + Description: "How often the subject feels rested when they wake up." + Value: CodeableConcept from QualitativeFrequencyVS + + EntryElement: HoursSleepPerNight + Based on: EvaluationComponent + Concept: LNC#65968-0 + Description: "Typical hours spent sleeping per night." + Value: Quantity with units UCUM#hr + + + + +EntryElement: PhysicalActivityPanel +Based on: Observation +Concept: TBD +Description: "Questions related to physical activity." +0..0 Value + Category is LNC#54511-1 "Behavior" + PanelMembers.EvaluationTopic +includes 0..1 PhysicalActivityLevel +includes 0..1 ExerciseHoursPerWeek +includes 0..* PhysicalActivityLimitation + + +EntryElement: PhysicalActivityLevel +Based on: QuestionAnswerRecorded +Concept: LNC#28323-4 +Description: "The amount of exercise or other physical activity compared to others of the same age. See BMC Medical Research Methodology 2012 12:20 1471-2288." +Value: CodeableConcept from QualitativeValueScaleVS + Category is LNC#54511-1 "Behavior" + +EntryElement: ExerciseHoursPerWeek +Based on: QuestionAnswerRecorded +Concept: TBD +Description: "Hours of moderate or vigorous activity per week." +Value: IntegerQuantity // TODO: potentially change to ratio with Units hours per one week + Category is LNC#54511-1 "Behavior" + +EntryElement: PhysicalActivityLimitation +Concept: TBD +Based on: QuestionAnswerRecorded +Description: "Anything that limits physical activity, including health factors, logistical, monetary, or social restrictions." +Value: CodeableConcept from PhysicalActivityLimitationVS + Category is LNC#54511-1 "Behavior" + + +EntryElement: ViolentRiskToOthers +Concept: TBD +Based on: BehaviorPresent +Description: "Risk or danger posed by the focal subject to others." +Value: CodeableConcept from QualitativeValueScaleVS + +EntryElement: ViolentRiskToSelf +Concept: TBD +Based on: BehaviorPresent +Description: "Risk or danger posed by the focal subject to his or herself." +Value: CodeableConcept from QualitativeValueScaleVS + +/* +EntryElement: Mood +Concept: TBD +Description: "" +Value: CodeableConcept + + + + Element: ReasonForBehavior + Based on: EvaluationComponent + Concept: TBD + Description: "Why the behavior has taken or is taking place." + Value: CodeableConcept + + Element: ReadinessToChange + Based on: EvaluationComponent + Concept: TBD + Description: "How motivated the subject is to change the behavior, if the behavior is ongoing, and change would be beneficial." + Value: CodeableConcept from QualitativeLikelihoodVS + + + +*/ \ No newline at end of file diff --git a/parking_lot/shr_behavior_map.txt b/parking_lot/shr_behavior_map.txt new file mode 100644 index 00000000..99accdb8 --- /dev/null +++ b/parking_lot/shr_behavior_map.txt @@ -0,0 +1,14 @@ +Grammar: Map 5.1 +Namespace: shr.behavior +Target: FHIR_STU_3 + + +ONCSmokingStatus maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus: + + +Religion maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: + Value maps to http://hl7.org/fhir/StructureDefinition/patient-religion + +ReligiousCongregation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: + Value maps to http://hl7.org/fhir/StructureDefinition/patient-congregation + diff --git a/parking_lot/shr_behavior_vs.txt b/parking_lot/shr_behavior_vs.txt new file mode 100644 index 00000000..9b0338e2 --- /dev/null +++ b/parking_lot/shr_behavior_vs.txt @@ -0,0 +1,101 @@ +Grammar: ValueSet 5.0 +Namespace: shr.behavior + +ValueSet: BehaviorFindingVS +Includes codes descending from SCT#844005 "Behavior finding (finding)" + + +ValueSet: ReligiousObservanceLevelVS +Includes codes descending from SCT#365579004 "Finding of religious observance level (finding)" + +ValueSet: ReligiousRestrictionVS +Description: "Includes religious restrictions that could impact care, other than dietary restrictions (handled elsewhere)." +#same_sex "Must have a medical provider of the same sex as the subject" +#no_transfusion "Cannot receive blood products" +#no_treatment "Cannot receive medical treatment" + +ValueSet: SubstanceOfAbuseVS +Includes codes descending from SCT#312417001 "substance of abuse" + + +ValueSet: SubstanceAbuseTreatmentTypeVS +#day_treatment "Day Treatment Services" +#inpatient "Inpatient/Hospital" +#inpatient_detox "Hospital Inpatient Detoxification Services" +#ambulatory "Outpatient services" +#ambulatory_detox "Ambulatory Detoxification Services" +#outreach "Outreach Services" +#intensive_outpatient "Intensive Outpatient Services" +#methadone_treatment "Methadone Treatment Services" +#residental_rehab "Residential/Rehabilitation Services" +#after_care "After Care Services" +#recovery_support "Recovery Support Services" + +ValueSet: AlcoholUseScreeningToolVS +#audit "AUDIT" +#audit_c "AUDIT-C" +#crafft "CRAFFT" + +ValueSet: DietFollowedVS +#vegetarian "Vegetarian diet" +#paleo "Paleo diet" +#kosher "Kosher diet" +#halal "Halal diet" +#gluten_free "Gluten free diet" +#low_salt "Low salt diet" +// TO DO: complete this value set + +ValueSet: DietNutritionConcernVS +#sugar "Too much sugar" +#snacks "Frequent snacking" +#caffeine "Too much caffeine" +#cholesterol "Too much cholesterol" +#overeating "Eating too much" +#undereating "Eating too little" +#unhealthy_diet "Eating an unhealthy diet" +#chewing "Problem chewing" +#swallowing "Problem swallowing" +#high_appetite "Increased appetite" +#low_appetite "Decreased appetite" +#taste "Problem with food taste" +#constipation "Constipation" +#diarrhea "Diarrhea" +#abdominal_pain "Abdominal pain" +#gas "Flatulence" +#binging "Binge eating" +#purging "Purging" + +ValueSet: SleepQualityCauseVS +#sleep_location "Where you sleep (e.g. noisy or uncomfortable environment)" +#shift "Shift work" +#partner_snoring "Partner snoring" +#partner "Disturbed by partner snoring or moving" +#no_time "Not enough time to sleep enough" +#breathing "Trouble breathing, snoring, waking up gasping for breath" +#worries "Thoughts and worries, anxiety" +#nightmares "Disturbing dreams" +#restless_legs "Restless legs" +#pain "Pain" +#not_sleepy "Not sleepy at the appropriate time" + +ValueSet: PhysicalActivityLimitationVS +#conditions "Medical Problems or Conditions" +#disability "Disability" +#frail "Frailty" +#pain "Pain or injury" +#unaffordable "Too expensive" +#no_time "Not enough time" +#lack_knowledge "Not sure how" +#unmotivated "Low motivation" +#no_partner "Does not have partner" +#no_place "No place to exercise" +#worried "Worried about starting exercise program" +#embarrassed "Too self-conscious" + + + + + + + + diff --git a/parking_lot/shr_careplan.txt b/parking_lot/shr_careplan.txt new file mode 100644 index 00000000..da0dd84b --- /dev/null +++ b/parking_lot/shr_careplan.txt @@ -0,0 +1,102 @@ +Grammar: DataElement 5.0 +Namespace: shr.careplan + +Uses: shr.core, shr.base, shr.finding, shr.action, shr.entity, shr.condition + +EntryElement: CareTeam +Based on: Entity // very similar to organization (could be info item) +Concept: TBD +Description: "Planned participants in the coordination and delivery of care for a patient or group." +0..* Participant +//0..* Participant.ParticipationType from HealthcareRoleVS /* or CodeableConcept from http://hl7.org/fhir/ValueSet/c80-practice-codes + + + +EntryElement: Goal // Target (Future) Health State +Based on: Entity +Concept: MTH#C0018017 +Description: "A broad statement about what should be accomplished for or by a patient or other subject. It represents the intended long-term outcome toward which an individual or a group aspires, and toward which, effort is directed, in the form of activities." +1..1 Subject +0..1 Title +1..1 Details +0..* Reason // Entities do not have reasons, they just ARE. This can't be correct. +0..* Category from http://hl7.org/fhir/ValueSet/goal-category if covered +0..1 ExpectedPerformanceTime +0..1 OccurrenceTimeOrPeriod +1..1 Status from http://hl7.org/fhir/ValueSet/goal-status +0..* Annotation +0..* PlannedActivities +0..* ActualActivities +0..* Goal // subgoals, which may be objectives + +Element: PlannedActivities +Concept: TBD +Description: "Activites planned for this goal" +Value: ref(ActionTopic) // restict to Actions with planned context + +Element: ActualActivities +Concept: TBD +Description: "Activites carried out for this goal" +Value: ref(ActionTopic) // restict to Actions with performed context + + +Element: Objective +Based on: Goal +Concept: TBD +Description: "Describes the of an expected or desired achievement that is well-defined, specific, measurable, and derived from one or more goals. +The context is inherited from the context of the parent goal, i.e., if the goal is #proposed, then the objective is also #proposed" +0..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered +1..1 ResultTargeted +0..* ResultAchieved +0..* RelatedFinding + + Element: ResultTargeted + Concept: TBD + Description: "The desired value or status to be achieved." + Value: CodeableConcept or Range or Quantity + + Element: ResultAchieved + Concept: TBD + Description: "The actual value or status achieved." + Value: CodeableConcept or Range or Quantity + + +EntryElement: CarePlan +Concept: MTH#C0178916 +Description: "Describes how one or more practitioners intend to deliver care for a particular patient, group or community for a period of time, possibly limited to care for a specific condition or set of conditions." +0..1 Title +0..1 Details +1..1 Status from http://hl7.org/fhir/ValueSet/care-plan-status +0..* Category from http://hl7.org/fhir/ValueSet/care-plan-category if covered +0..* Goal + + + +/* + +EntryElement: GoalPursuitTopic +Based on: ActionTopic +Concept: MTH#C0018017 +Description: "Attaches an action context with respect to a goal: proposed, performed, not performed, etc." +1..1 HealthGoal + + In FHIR, these are represented in a status attribute. + +EntryElement: GoalPursuitPerformed +Based on: GoalPursuitTopic +1..1 PerformedContext + +EntryElement: GoalPursuitNotPerformed +Based on: GoalPursuitTopic +1..1 NotPerformedContext + +EntryElement: GoalPursuitRequested +Based on: GoalPursuitTopic +1..1 RequestedContext + + +EntryElement: GoalProposedAgainst +Based on: GoalPursuitTopic +1..1 RequestedAgainstContext + +*/ \ No newline at end of file diff --git a/parking_lot/shr_careplan_map.txt b/parking_lot/shr_careplan_map.txt new file mode 100644 index 00000000..1cac91b1 --- /dev/null +++ b/parking_lot/shr_careplan_map.txt @@ -0,0 +1,41 @@ +Grammar: Map 5.1 +Namespace: shr.careplan +Target: FHIR_STU_3 + +/* + +CareTeam maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam: + Participant.Entity maps to participant.member + Participant.ParticipationType maps to participant.role + Participant.ParticipationPeriod maps to participant.period + +Goal maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal: +// Includes attributes inherited from ActionContext and Entry + PersonOfRecord maps to subject + _Entry.Informant maps to expressedBy + Status maps to status + Category maps to category + //Reason[Content] maps to addresses + //ExpectedPerformanceTime[TimePeriod].TimePeriodEnd[date] maps to target.due[x].date + OccurrenceTimeOrPeriod[date] maps to start[x].date + //OccurrenceTimeOrPeriod[TimePeriod].TimePeriodStart[date] maps to start[x].date + Annotation maps to note + + + +Objective maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal: + ResultTargeted[Quantity] maps to target.detail[x].Quantity + ResultTargeted[Range] maps to target.detail[x].Range + ResultTargeted[CodeableConcept] maps to target.detail[x].CodeableConcept + ResultAchieved[CodeableConcept] maps to outcomeCode + // TODO FHIR should align its outcome types to target.detail types (you can the target as a quantity, but outcome can only be a Codeable Concept) + RelatedFinding maps to outcomeReference +*/ +/* +CarePlan maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan: + // constrain intent to #plan -- it's a care PLAN, for Pete's sake + constrain replaces to 0..0 + constrain basedOn to 0..0 + constrain partOf to 0..0 // There's no need for nested care plans. The patient can have several plans for different purposes, just like several medications, but they don't have to be grouped under a master care plan + constrain supportingInfo to 0..0 +*/ \ No newline at end of file diff --git a/parking_lot/shr_careplan_vs.txt b/parking_lot/shr_careplan_vs.txt new file mode 100644 index 00000000..c8d48bc1 --- /dev/null +++ b/parking_lot/shr_careplan_vs.txt @@ -0,0 +1,20 @@ +Grammar: ValueSet 5.0 +Namespace: shr.careplan + +/*NOT USED: +ValueSet: ActionStatusVS +Description: "Value indicating whether an activity is currently being acted upon, represents future intentions or is now a historical record. From HL7 V3 Reference Information Model." +#proposed_against "An intervention to avoid, something NOT to do." +#proposed "Suggested or possible intervention, not necessarily accepted by patient or provider." +#rejected "A course of action that has been rejected." +#accepted "Accepted and pending, scheduled, or waiting to start" +#active "In process, being acted on" +#cancelled "Stopped before execution begins" +#suspended "Stopped temporarily, suspended." +#aborted "Stopped after execution began" +#completed "Finished" +#nullified "Overridden or otherwise not executable, e.g., entered in error" +#obsolete "Old plan, no longer relevant" +#unknown "Status is unknown" +*/ + diff --git a/parking_lot/shr_environment.txt b/parking_lot/shr_environment.txt new file mode 100644 index 00000000..e526f682 --- /dev/null +++ b/parking_lot/shr_environment.txt @@ -0,0 +1,276 @@ +Grammar: DataElement 5.0 +Namespace: shr.environment +Description: "The SHR Environment domain contains definitions related to surroundings experienced by the person of record, including both the physical and sociological environments." +Uses: shr.core, shr.base, shr.finding, shr.action, shr.entity, shr.allergy, shr.medication, shr.procedure + +CodeSystem: CURRENCY = urn:iso:std:iso:4217 + +//------------ Household Information -------------------------- + +EntryElement: FinancialSituationPanel +Concept: LNC#83335-0 +Based on: QuestionAnswerRecorded +Description: "Measures of the ability of the subject to obtain and pay for the necessities of life." +0..0 Value + TopicCode is LNC#83335-0 + PanelMembers.EvaluationTopic +includes 0..1 AnnualIncome +includes 0..* IncomeSource +includes 0..1 IncomeStability +includes 0..1 CanAffordFood +includes 0..1 CanAffordHousing +includes 0..1 CanAffordClothing +includes 0..1 CanAffordUtilities +includes 0..1 CanAffordTransportation +includes 0..1 CanAffordMedication +includes 0..1 CanAffordDentalCare +includes 0..1 CanAffordChildCare +includes 0..* NonCashBenefit + + EntryElement: AnnualIncome + Concept: MTH#C0557163 + Based on: QuestionAnswerRecorded + Description: "The amount of earnings made by a family unit in one year, estimated or self-reported." + Value: Quantity with units CURRENCY#USD + TopicCode is MTH#C0557163 + + EntryElement: IncomeSource + Concept: MTH#C0557162 + Based on: QuestionAnswerRecorded + Description: "Where the household income comes from." + Value: CodeableConcept from IncomeSourceVS + TopicCode is MTH#C0557162 + + EntryElement: IncomeStability + Concept: MTH#C1820459 + Based on: QuestionAnswerRecorded + Description: "Whether the subject regards his or her source of income as dependable." + Value: CodeableConcept from ResourceStabilityVS + TopicCode is MTH#C1820459 + + EntryElement: CanAffordFood + Concept: TBD + Based on: QuestionAnswerRecorded + Description: "How often can the subject afford food?" + Value: CodeableConcept from QualitativeFrequencyVS + TopicCode is TBD#TBD + + EntryElement: CanAffordHousing + Concept: TBD + Based on: QuestionAnswerRecorded + Description: "How often can the subject afford housing?" + Value: CodeableConcept from QualitativeFrequencyVS + TopicCode is TBD#TBD + + EntryElement: CanAffordClothing + Concept: TBD + Based on: QuestionAnswerRecorded + Description: "How often can the subject afford clothing?" + Value: CodeableConcept from QualitativeFrequencyVS + TopicCode is TBD#TBD + + EntryElement: CanAffordUtilities + Concept: TBD + Based on: QuestionAnswerRecorded + Description: "How often can the subject afford utilities?" + Value: CodeableConcept from QualitativeFrequencyVS + TopicCode is TBD#TBD + + EntryElement: CanAffordTransportation + Concept: TBD + Based on: QuestionAnswerRecorded + Description: "How often can the subject afford transportation?" + Value: CodeableConcept from QualitativeFrequencyVS + TopicCode is TBD#TBD + + EntryElement: CanAffordMedication + Concept: TBD + Based on: QuestionAnswerRecorded + Description: "How often can the subject afford medications?" + Value: CodeableConcept from QualitativeFrequencyVS + TopicCode is TBD#TBD + + EntryElement: CanAffordDentalCare + Concept: TBD + Based on: QuestionAnswerRecorded + Description: "How often can the subject afford dental care?" + Value: CodeableConcept from QualitativeFrequencyVS + TopicCode is TBD#TBD + + EntryElement: CanAffordChildCare + Concept: TBD + Based on: QuestionAnswerRecorded + Description: "How often can the subject afford child care?" + Value: CodeableConcept from QualitativeFrequencyVS + TopicCode is TBD#TBD + + EntryElement: NonCashBenefit + Concept: TBD + Based on: QuestionAnswerRecorded + Description: "Government benefits received by the focal subject, other than cash benefits." + Value: CodeableConcept from NonCashBenefitVS + TopicCode is TBD#TBD + +EntryElement: HouseholdSituationPanel +Concept: TBD +Based on: QuestionAnswerRecorded +Description: "Information about the makeup of the household of the subject." +0..0 Value + TopicCode is TBD#TBD + PanelMembers.EvaluationTopic +includes 0..1 HouseholdSize +includes 0..* Coinhabitant +includes 0..1 NumberOfDependents + + EntryElement: HouseholdSize + Concept: MTH#C0000768 + Based on: QuestionAnswerRecorded + Description: "The number of people living together with mutual financial dependency. Besides the subject, the household size may include spouse or partner, dependent children including adopted and foster children, dependent parents, dependent siblings and other relatives, but not roommates, ex-spouses, non-dependent children, and unborn children. If the subject lives alone, the household size is 1." + Value: Quantity with units UCUM#1 // should be positiveInt but FHIR Observations don't support integers + TopicCode is MTH#C0000768 + + + EntryElement: Coinhabitant + Based on: QuestionAnswerRecorded + Concept: TBD + Description: "A person living with the subject." + Value: CodeableConcept from CoinhabitantVS + TopicCode is TBD#TBD + + EntryElement: NumberOfDependents + Concept: MTH#C0557509 + Based on: QuestionAnswerRecorded + Description: "The number of dependents supported by the subject." + Value: Quantity with units UCUM#1 + TopicCode is MTH#C0557509 + + + +//------------- Exposures --------------------- + +EntryElement: ExposureToAgentTopic +Based on: EvaluationTopic // might extend ConditionTopic, but we need EvaluationComponents +Concept: MTH#C0332157 +Description: "Base class (independent of context) for documenting exposure to various agents (substance, disease vector, blood products, farm animals or pets, recreational drugs, sexual transmitted diseases, foods, toxins, pathogens, noise, radiation, pollutants, or prenatal exposures to teratogens, etc). Can be used to deny such exposures via context." +Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/substance-code + TopicCode is MTH#C0332157 + + +EntryElement: ExposureToAgent +Based on: EvaluationTopic // might extend ConditionTopic, but we need EvaluationComponents +Concept: MTH#C0332157 +Description: "Exposure to various agents (substance, disease vector, blood products, farm animals or pets, recreational drugs, sexual transmitted diseases, foods, toxins, pathogens, noise, radiation, pollutants, or prenatal exposures to teratogens, etc). Can be used to deny such exposures via context." +1..1 PresenceContext + EvaluationComponent +includes 0..* ExposureSourceOrVector +includes 0..* ExposureAmount +includes 0..* ExposureReason +includes 0..* ExposureMethod +includes 0..* ExposureRoute + + Element: ExposureSourceOrVector + Based on: EvaluationComponent + Concept: MTH#C0012656 + Description: "Where the substance originated. Vectors include animals (e.g., tick, mosquito, cats, livestock) capable of transmitting an infectious agent among vertebrates. Sources could include food, contaminated drinking water, air, radon gas in the home, etc." + Value: CodeableConcept from TBD "ExposureSourceOrVectorVS" + + Element: ExposureAmount + Based on: EvaluationComponent + Concept: TBD + Description: "The amount of substance used or exposed to in a given period of time (e.g., 10 cigarettes per day). Can also be used to record total lifetime exposure (e.g., 80 REMS/lifetime)." + Value: Ratio + + Element: ExposureMethod + Based on: EvaluationComponent + Concept: TBD + Description: "How the exposure occurred, e.g. cutaneous contact, injection, ingestion, sexual contact, inhalation." + Value: CodeableConcept from TBD "ExposureMethodVS" + + Element: ExposureReason + Based on: EvaluationComponent + Concept: TBD + Description: "Why the exposure occurred." + Value: CodeableConcept from ExposureReasonVS + + // This is redundant with RouteIntoBody, but that isn't an EvaluationComponent + Element: ExposureRoute + Based on: EvaluationComponent + Concept: MTH#C0013153 + Description: "The way a substance enters an organism after contact, particularly, the route of drug administration." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/route-codes + + + + + +EntryElement: AnimalExposure +Concept: MTH#C0238646 +Based on: ExposureToAgent +Description: "The type of animals or pets the subject is exposed to." +Value: CodeableConcept from CommonAnimalVS if covered + TopicCode is MTH#C0238646 + + + +EntryElement: SocialEnvironment +Based on: QuestionAnswerRecorded +Concept: TBD +Description: "Factors affecting the health of the subject in their daily living environment." +0..0 Value + TopicCode is TBD#TBD + PanelMembers.EvaluationTopic +includes 0..1 TransportationAvailability +includes 0..1 HousingSecurity +includes 0..1 PhysicalSafety +includes 0..1 EmotionalSafety +includes 0..1 DomesticViolence +includes 0..* HomeEnvironmentRisk + + EntryElement: TransportationAvailability + Based on: QuestionAnswerRecorded + Concept: TBD + Description: "Whether the subject has reliable transportation to bring him or her to medical appointments and to get medications." + Value: CodeableConcept from QualitativeFrequencyVS + TopicCode is TBD#TBD + + EntryElement: HousingSecurity + Based on: QuestionAnswerRecorded + Concept: TBD + Description: "Whether the subject is at-risk of losing their housing or in a stable housing situation." + Value: CodeableConcept from ResourceStabilityVS + TopicCode is TBD#TBD + + EntryElement: PhysicalSafety + Based on: QuestionAnswerRecorded + Concept: TBD + Description: "How often the subject feels physically safe in the subject's home environment." + Value: CodeableConcept from QualitativeFrequencyVS + TopicCode is TBD#TBD + + EntryElement: EmotionalSafety + Based on: QuestionAnswerRecorded + Concept: TBD + Description: "Whether the subject feels physically safe in the subject's home environment." + Value: CodeableConcept from QualitativeFrequencyVS + TopicCode is TBD#TBD + + EntryElement: DomesticViolence + Based on: QuestionAnswerRecorded + Concept: MTH#C0206073 + Description: "Whether the subject experiences domestic violence." + Value: CodeableConcept from QualitativeFrequencyVS + TopicCode is TBD#TBD + + EntryElement: HomeEnvironmentRisk + Based on: QuestionAnswerRecorded + Concept: TBD + Description: "A risk experienced in the home environment." + Value: CodeableConcept from HomeEnvironmentRiskVS + TopicCode is TBD#TBD + + +/* +EntryElement: Depression +EntryElement: Anxiety +EntryElement: JusticeInvolvement +*/ \ No newline at end of file diff --git a/parking_lot/shr_environment_map.txt b/parking_lot/shr_environment_map.txt new file mode 100644 index 00000000..8ba43bf4 --- /dev/null +++ b/parking_lot/shr_environment_map.txt @@ -0,0 +1,4 @@ +Grammar: Map 5.1 +Namespace: shr.environment +Target: FHIR_STU_3 + diff --git a/parking_lot/shr_environment_vs.txt b/parking_lot/shr_environment_vs.txt new file mode 100644 index 00000000..365c531b --- /dev/null +++ b/parking_lot/shr_environment_vs.txt @@ -0,0 +1,106 @@ +Grammar: ValueSet 5.0 +Namespace: shr.environment + +ValueSet: ExposureReasonVS +Description: "The reason that an exposure occurred." +#voluntary "The subject voluntarily subjects him or herself to the exposure, for example, smoking or using a drug recreationally." +#addiction "The subject is addicted to the substance." +#self_prescribed "The subject takes a non-prescription substance to address health issues or for prevention, e.g. herbal remedy for depression." +#occupational "Exposure in a workplace setting." +#home "Exposure in home setting." +#passive "The exposure occurred or occurs involuntarily, e.g., exposure to second-hand smoke." +#accidental "The exposure as a result of an accident." + + +ValueSet: ResourceStabilityVS +#stable "Not at risk or minimal risk of losing the resource (or a significant portion of the resource)" +#at_risk "Some risk of losing the resource (or a significant portion of the resource)" +#imminent_risk "Imminent risk of loss of the resource (or a significant portion of the resource)" +#recent_loss "Recent loss of the resource (or a significant portion of the resource)" + +ValueSet: IncomeSourceVS +#earned "Earned Income (i.e., employment income)" +#unemployment "Unemployment Insurance" +#ssi "Supplemental Security Income (SSI)" +#ssdi "Social Security Disability Income (SSDI)" +#disability_va "Veteran’s disability payment" +#disability_private "Private disability insurance" +#disability_workers "Worker’s compensation" +#tanf "Temporary Assistance for Needy Families (TANF) or similar local program" +#ga "General Assistance (GA) or similar local program" +#ss "Retirement income from Social Security" +#savings "Savings" +#pension_va "Veteran’s pension" +#child_support "Child support" +#alimony "Alimony or other spousal support" + +ValueSet: NonCashBenefitVS +#snap "Supplemental Nutrition Assistance Program (SNAP) (Previously known as Food Stamps)" +#medicaid "MEDICAID health insurance program or local equivalent" +#schip "State Children’s Health Insurance Program or local equivalent" +#wic "Special Supplemental Nutrition Program for Women, Infants, and Children (WIC)" +#vams "Veteran’s Administration (VA) Medical Services" +#tanf "Temporary Assistance for Needy Families (TANF) or similar local program" +#tanf_transport "Temporary Assistance for Needy Families (TANF) transportation services" +#tanf_other "Temporary Assistance for Needy Families (TANF) other services" +#section8 "Section 8, public housing, or other ongoing rental assistance" +#temp_rental "Temporary Rental Assistance" + +ValueSet: CommonAnimalVS +#dog "dog" +#cat "cat" +#bird "bird" +#fish "fish" +#reptile "reptile" +#rodent "rodent" +#primate "monkey or ape" +#livestock "livestock" +#chicken "chicken" + +ValueSet: CoinhabitantVS +#partner "Spouse or partner" +#parents_birth "Birth parents" +#parents_adoptive "Adoptive parents" +#foster "Foster family" +#child "Child or children" +#relatives "other relatives" +#non_relatives "non-relatives" + +ValueSet: HomeEnvironmentRiskVS +#guns "Guns in household" +#more_guns "Guns in neighborhood" +#smoke_detectors "No Smoke Detectors" +#radiation "Radon or other radiation source" +#swimming_pool "Swimming Pool" +#lead "Lead in soil, paint or water" +#well "Well water" +#mold "Mold" +#noise "Excessive noise" +#no_connection "No internet" +#no_electricity "Unreliable electricity supply" +#air_quality "Poor air quality" +#water_quality "Poor drinking water quality" +#crime "Neighborhood crime" +#traffic "Neighborhood traffic" +#unwalkable "Neighborhood unwalkable" +#insects "Insect infestation" +#rodents "Rodent infestation" +#asbestos "Asbestos" +#disrepair "Home in disrepair" +#clutter "Clutter or hoarding" +#fire_hazard "No fire escape or other fire hazard" +#stairs "Steps hard to navigate" +#bathroom "Bathroom facilities hard to utilize, e.g., on another floor or lacking accomodations" +#crowding "Overcrowded" +#isolated "Too far away from things" +#transportation "Hard to access transportation resources" +#radiation "Radiation" +#asbestos "Asbestos" +#pesticides "Pesticides" +#motorcycle "Ride motorcycle" +#contact_sports "Play contact sports" +#seat_belt "Does not wear seat belts" +#sun_exposure "Spends excessive time in the sun" +#tanning "Uses tanning bed" + + diff --git a/parking_lot/shr_familyhistory.txt b/parking_lot/shr_familyhistory.txt new file mode 100644 index 00000000..a93df998 --- /dev/null +++ b/parking_lot/shr_familyhistory.txt @@ -0,0 +1,18 @@ +Grammar: DataElement 5.0 +Namespace: shr.familyhistory +Description: "The SHR Family History domain contains definitions related to the life, health, and genetics of persons related to the person of record." +Uses: shr.core, shr.base, shr.finding, shr.action, shr.entity, shr.condition + +/* +EntryElement: FamilyMemberCondition +Based on: Condition +Description: "A condition of a person related to the person of record." + Subject value is type ref(RelatedPerson) // can't use Subject because FHIR (and US Core) only allow the subject to be a patient or group + + +EntryElement: FamilyMemberConditionAbsent +Based on: ConditionAbsent +Description: "A condition of a person related to the person of record." + Subject value is type ref(RelatedPerson) +*/ + diff --git a/parking_lot/shr_familyhistory_map.txt b/parking_lot/shr_familyhistory_map.txt new file mode 100644 index 00000000..ddf5c273 --- /dev/null +++ b/parking_lot/shr_familyhistory_map.txt @@ -0,0 +1,3 @@ +Grammar: Map 5.0 +Namespace: shr.familyhistory +Target: FHIR_STU_3 diff --git a/shr_immunization.txt b/parking_lot/shr_immunization.txt similarity index 100% rename from shr_immunization.txt rename to parking_lot/shr_immunization.txt diff --git a/shr_immunization_map.txt b/parking_lot/shr_immunization_map.txt similarity index 100% rename from shr_immunization_map.txt rename to parking_lot/shr_immunization_map.txt diff --git a/shr_immunization_vs.txt b/parking_lot/shr_immunization_vs.txt similarity index 100% rename from shr_immunization_vs.txt rename to parking_lot/shr_immunization_vs.txt diff --git a/parking_lot/shr_lifehistory.txt b/parking_lot/shr_lifehistory.txt new file mode 100644 index 00000000..f224ccb3 --- /dev/null +++ b/parking_lot/shr_lifehistory.txt @@ -0,0 +1,37 @@ +Grammar: DataElement 5.0 +Namespace: shr.lifehistory +Description: "The SHR Lifehistory domain contains definitions related to the course of events in the life of the person of record that might impact health, health risks, or future treatment." +Uses: shr.core, shr.base, shr.finding, shr.action, shr.entity, shr.environment, shr.condition + +CodeSystem: UCUM = http://unitsofmeasure.org + +EntryElement: PrenatalExposure +Based on: ExposureToAgent // brings the temporal context into the picture +Concept: MTH#C0871747 +Description: "Fetal contact with a dangerous substance via the mother." +Value: CodeableConcept from TeratogenVS + TopicCode is MTH#C0871747 +0..1 GestationalTemporalContext + +EntryElement: CongenitalAbnormality +Concept: MTH#C0000768 +Based on: Condition +Description: "Any abnormality, genetic, anatomical, biochemical, evident at birth or during the neonatal period. Includes malformations, deformations, and chromosomal abnormalities." +Value: CodeableConcept from CongenitalAbnormalitiesVS + +EntryElement: EducationalAttainment +Concept: MTH#C0013658 +Based on: QuestionAnswerRecorded +Description: "Educational attainment or level of education of individuals." +Value: CodeableConcept from EducationalAttainmentVS + TopicCode is LNC#63504-5 + + +EntryElement: Travel +Concept: MTH#C0040802 +Based on: QuestionAnswerRecorded +Description: "Trip to a foreign country or an area, particularly when a health risk is involved." +Value: string // TODO - this generates a warning (it should not) - bug reported - I want to have the value be a Location, but that won't map to FHIR + TopicCode is MTH#C0040802 + + diff --git a/parking_lot/shr_lifehistory_map.txt b/parking_lot/shr_lifehistory_map.txt new file mode 100644 index 00000000..4fcd1352 --- /dev/null +++ b/parking_lot/shr_lifehistory_map.txt @@ -0,0 +1,3 @@ +Grammar: Map 5.1 +Namespace: shr.lifehistory +Target: FHIR_STU_3 diff --git a/parking_lot/shr_lifehistory_vs.txt b/parking_lot/shr_lifehistory_vs.txt new file mode 100644 index 00000000..ed8db794 --- /dev/null +++ b/parking_lot/shr_lifehistory_vs.txt @@ -0,0 +1,82 @@ +Grammar: ValueSet 5.0 +Namespace: shr.lifehistory + +ValueSet: EducationalAttainmentVS +#no_formal "No schooling completed, or ages 0-4" +#elementary "Elementary (grades 1-8)" +#high_school_some "High school (grades 9-12, no degree)" +#high_school_grad "High school graduate (or equivalent)" +#college "Some college (1-4 years, no degree)" +#assoc "Associate’s degree (including vocational, occupational or academic degrees)" +#bachelor "Bachelor’s degree (BA, BS, AB, etc)" +#master "Master’s degree (MA, MS, MENG, MSW, etc)" +#prof "Professional school degree (MD, DDC, JD, etc)" +#doc "Doctorate degree (PhD, EdD, etc)" + +ValueSet: TeratogenVS +//DISEASES +#chlamydia "Chlamydia" +#pneumonia "Pneumonia" +#gonorrhea "Gonorrhea" +#rubella "Rubella (German Measles)" +#herpes "Herpes" +#scarlet "Scarlet Fever" +#hiv "HIV" +#syphilis "Syphilis" +#mumps "Mumps" +#toxoplasmosis "Toxoplasmosis" +#tuberculosis "Tuberculosis" +#influenza "Influenza" +//DRUGS +#accutane "Accutane" +#hexachlorophene "Hexachlorophene" +#alcohol "Alcohol" +#iodides "Iodides" +#amphetamines "Amphetamines" +#lithium "Lithium" +#antibiotics "Antibiotics" +#lsd "LSD" +#anti-cancer "Anti-cancer drugs" +#opiates "Opiates" +#anticoagulant "Anticoagulant drugs" +#quinine "Quinine" +#aspirin "Aspirin" +#sedatives "Sedatives" +#barbiturates "Barbiturates" +#smallpox "Smallpox vaccination" +#caffeine "Caffeine" +#thalidomide "Thalidomide" +#nicotine "Nicotine" +#tranquilizers "Tranquilizers" +#cocaine "Cocaine" +#vitamins "Vitamins in excess" +#des "Diethylstilbestrol (DES)" +#marijuana "Marijuana " +//ENVIRONMENTAL FACTORS +#cadmium "Cadmium" +#mercury "Mercury" +#cat "Cat feces" +#nickel "Nickel" +#fumes "Fumes from paints, solvents, glues, dry-cleaning fluids" +#pesticides "Pesticides" +#insecticides "Insecticides" +#herbicides "Herbicides" +#manganese "Manganese" +#radiation "Radiation (X-rays, Video Display Terminals)" +#hair "Hair dyes" +#polychlorinated "Polychlorinated Biphenyls (PCBs)" +#lead "Lead" +//NONINFECTIOUS MATERNAL CONDITIONS +#alcoholism "Alcoholism" +#chemical "Chemical dependency" +#phenylketonuria "Phenylketonuria" +#rh "Rh + factor" +#anemia "Anemia" +#stress "Stress" +#diabetes "Diabetes Mellitus" + +ValueSet: CongenitalAbnormalitiesVS +Includes codes descending from SCT#66091009 "Congenital Disease" // ICD10 Q00-Q99 + + + diff --git a/parking_lot/shr_sexualhealth.txt b/parking_lot/shr_sexualhealth.txt new file mode 100644 index 00000000..56f6ecee --- /dev/null +++ b/parking_lot/shr_sexualhealth.txt @@ -0,0 +1,222 @@ +Grammar: DataElement 5.0 +Namespace: shr.sexualhealth +Description: "The SHR Sex domain contains definitions related to the sexual health and behavior of the person of record." +Uses: shr.core, shr.base, shr.finding, shr.action, shr.entity, shr.medication + +CodeSystem: LNC = http://loinc.org +CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: UCUM = http://unitsofmeasure.org +// + +EntryElement: PregnancyIntention +Concept: TBD +Based on: QuestionAnswerRecorded +Description: "Whether the subject or his/her partner has a plan or desire to either become pregnant or have a child in the next year/near future." +Value: CodeableConcept from YesNoUnknownVS + TopicCode is LNC#64631-5 + +EntryElement: SexualIdentity +Concept: TBD +Based on: QuestionAnswerRecorded +Description: "Information on gender identity and sexual orientation." + TopicCode is TBD#TBD + PanelMembers.EvaluationTopic +includes 0..1 GenderIdentity +includes 0..1 SexualOrientation + + EntryElement: GenderIdentity + Concept: MTH#C0017249 + Based on: QuestionAnswerRecorded + Description: "Subjective personal perception of one's own gender, which can be male, female, a blend of both, or neither." + Value: CodeableConcept from GenderIdentityVS + TopicCode is MTH#C0017249 + + EntryElement: SexualOrientation + Concept: MTH#C0205949 + Based on: QuestionAnswerRecorded + Description: "An inherent and enduring emotional, romantic or sexual attraction to other people." + Value: CodeableConcept from SexualOrientationVS + TopicCode is MTH#C0205949 + + +EntryElement: SexualBehavior +Concept: MTH#C1314687 +Based on: QuestionAnswerRecorded +Description: "Experience with sexual intercourse." +0..0 Value + TopicCode is MTH#C1314687 + PanelMembers.EvaluationTopic +includes 1..* SexualActivity +includes 0..1 NumberOfSexualPartnersPastYear +includes 0..* IntercourseDifficulty + + EntryElement: SexualActivity + Concept: MTH#C0241028 + Based on: QuestionAnswerRecorded + Description: "Characterization of the sexual activity of the subject." + Value: CodeableConcept from SexualActivityVS + 1..1 TopicCode is TBD#TBD + + EntryElement: NumberOfSexualPartnersPastYear + Concept: MTH#C0556468 + Based on: QuestionAnswerRecorded + Description: "Number of sexual partners in past year." + Value: Quantity with units UCUM#1 // can use > or < modifiers + + EntryElement: IntercourseDifficulty + Concept: TBD + Based on: QuestionAnswerRecorded + Description: "Condition affecting sexual intercourse." + Value: CodeableConcept from IntercourseDifficultyVS + + +EntryElement: ContraceptivesUsed +Concept: TBD +Description: "How frequently the subject and partner uses contraceptives, and if so, what contraceptive methods used." +Based on: QuestionAnswerRecorded +Value: CodeableConcept from QualitativeFrequencyVS + PanelMembers.EvaluationTopic +includes 0..* ContraceptiveMethodUsed + +EntryElement: ContraceptiveMethodUsed +Based on: QuestionAnswerRecorded +Concept: MTH#C0700589 +Description: "A method contraception used (or not) by the subject." +Value: CodeableConcept from ContraceptiveMethodVS + TopicCode is MTH#C0700589 + EvaluationComponent +includes 0..1 ContraceptiveMethodFrequency +includes 0..* ContraceptiveMethodReason +includes 0..* ContraceptiveNotUsedReason + + Element: ContraceptiveMethodFrequency + Based on: EvaluationComponent + Concept: TBD + Description: "How often the contraceptive method is used by the subject." + Value: CodeableConcept from QualitativeFrequencyVS + + Element: ContraceptiveMethodReason + Based on: EvaluationComponent + Concept: TBD + Description: "Reason for using a particular contraceptive." + Value: CodeableConcept from ContraceptiveMethodReasonVS + + Element: ContraceptiveNotUsedReason + Concept: TBD + Based on: EvaluationComponent + Description: "If not using a method of contraception, why." + Value: CodeableConcept from ContraceptiveNotUsedReasonVS + + +Abstract Element: ContraceptiveTopic +Based on: MedicationTopic +Concept: TBD +Description: "A contraceptive for a patient, independent of context of being recommended, used, or not used." +Value: CodeableConcept from ContraceptiveMethodVS + + +EntryElement: ContraceptiveMethodRequested +Based on: ContraceptiveTopic +Concept: TBD +Description: "The contraceptive method(s) proposed, recommended or prescribed by a provider, after counseling and assessment." +1..1 RequestedContext + RequestedContext.Reason from ContraceptiveMethodReasonVS +/*1..1 Dispensed // Not sure about this + + Element: Dispensed + Concept: TBD + Description: "Whether an item, such as a medication or device, was given to a subject." + Value: CodeableConcept from YesNoUnknownVS +*/ +EntryElement: ContraceptiveMethodRequestedAgainst +Concept: TBD +Based on: ContraceptiveTopic +Description: "The contraceptive method(s) recommended or prescribed by a provider, after counseling and assessment." +Value: CodeableConcept from ContraceptiveMethodVS +1..1 RequestedAgainstContext + RequestedAgainstContext.Reason from ContraceptiveNotUsedReasonVS + + +EntryElement: PregnancyHistory +Concept: MTH#C0032967 +Based on: QuestionAnswerRecorded +Description: "Information about current and past pregnancies." +0..0 Value + TopicCode is LNC#10163-4 + PanelMembers.EvaluationTopic +includes 0..1 CurrentPregnancyStatus +includes 0..1 NumberOfPreviousPregnancies +includes 0..1 NumberOfLivingChildren + + EntryElement: CurrentPregnancyStatus + Concept: MTH#C0552579 + Based on: QuestionAnswerRecorded + Description: "Whether or not the subject is currently pregnant." + Value: CodeableConcept from YesNoUnknownVS + TopicCode is LNC#82810-3 + + EntryElement: NumberOfPreviousPregnancies + Concept: MTH#C0422807 + Based on: QuestionAnswerRecorded + Description: "Number of previous pregnancies." + TopicCode is LNC#75201-4 + + EntryElement: NumberOfLivingChildren + Concept: MTH#C2229975 + Based on: QuestionAnswerRecorded + Description: "Number of living children." + TopicCode is LNC#11638-4 + + +EntryElement: HIVScreeningTestPerformed +Based on: LaboratoryProcedurePerformed +Concept: TBD +Description: "The performance of a HIV Screening Test. Results will be in an accompanying observation." +1..1 TopicCode from HIVScreeningTestCodeVS // potentially useful value set is LNC#75622-1 "HIV 1 and 2 tests - Meaningful Use set" + +EntryElement: HIVSupplementalTestPerformed +Based on: LaboratoryProcedurePerformed +Concept: TBD +Description: "The performance of supplement HIV test, following up an initial screening. Results are in the form of an observation." +1..1 TopicCode from HIVSupplementalTestCodeVS + +EntryElement: HIVScreeningTestRequested +Based on: LaboratoryProcedureRequested +Concept: TBD +Description: "A request for a rapid HIV screening test." +1..1 TopicCode from HIVScreeningTestCodeVS + +EntryElement: HIVSupplementalTestRequested +Based on: LaboratoryProcedureRequested +Concept: TBD +Description: "A request for a confirmatory or additional test for HIV infection." +1..1 TopicCode from HIVSupplementalTestCodeVS + + +/* + +Postmenopausal Status: +□ Prior bilateral oophorectomy +□ Age ≥ 60 years +□ Age < 60 years and no menses for ≥ 1 year with FSH and estradiol levels within postmenopause range + + + + +EntryElement: PreviousPregnancyDetails +Concept: TBD +Description: "The details of a previous pregnancy." +1..1 PregnancyOrdinal +1..1 PregnancyOutcome +DeliveryDate +GestationalAge +DurationOfLabor +BirthWeight +GenderOfBaby +TypeOfDelivery +AnesthesiaType +PlaceOfDelivery +DurationOfBreastFeeding +Complications CodeableConcept from CommonPregnancyComplicationVS +Comorbidities +*/ \ No newline at end of file diff --git a/parking_lot/shr_sexualhealth_map.txt b/parking_lot/shr_sexualhealth_map.txt new file mode 100644 index 00000000..1578c115 --- /dev/null +++ b/parking_lot/shr_sexualhealth_map.txt @@ -0,0 +1,3 @@ +Grammar: Map 5.1 +Namespace: shr.sex +Target: FHIR_STU_3 diff --git a/parking_lot/shr_sexualhealth_vs.txt b/parking_lot/shr_sexualhealth_vs.txt new file mode 100644 index 00000000..6b8bb39a --- /dev/null +++ b/parking_lot/shr_sexualhealth_vs.txt @@ -0,0 +1,135 @@ +Grammar: ValueSet 5.0 +Namespace: shr.sexualhealth + +CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: LNC = http://loinc.org +CodeSystem: SCT = http://snomed.info/sct + +ValueSet: GenderIdentityVS +#male_gender "Identifies as male, exclusively, usually, or primarily" +#female_gender "Identifies as female, exclusively, usually, or primarily " +#agender "Does not identify with any gender" +#bigender "Identifies with both male and female genders, either simultaneously, or changing fluidly over time" +#unsure_gender "Uncertain or searching for gender identity" +#trans_female "Male (at birth) who identifies as a female" +#trans_male "Female (at birth) who identifies as a male" + + +ValueSet: SexualOrientationVS +Includes codes descending from SCT#365956009 + + +ValueSet: CommonPregnancyComplicationVS +MTH#C0011570 "Mental depression" +MTH#C0221074 "Postpartum depression" +MTH#C0032914 "Pre-eclampsia (hypertension occuring during pregnancy)" +MTH#C0149871 "Deep Vein Thrombosis" +MTH#C0002871 "Anemia" +MTH#C0240713 "Perineal Tearing" +MTH#C0079924 "Oligohydramnios" +MTH#C0085207 "Gestational Diabetes" +MTH#C0032987 "Ectopic Pregnancy" +MTH#C0151526 "Preterm Birth" +MTH#C0000786 "Miscarriage (spontaneous abortion)" +MTH#C0032046 "Placenta Previa" +MTH#C2937358 "Cerebral hemorrhage" +MTH#C0020450 "Hyperemesis gravidarum" + +ValueSet: ContraceptiveMethodVS +#no_contraceptive "Not using contraceptive" +#implant "Implanted long-term contraceptive" +#iud "Intrauterine device or system" +#sterilized_female "Female sterilization, e.g., tubal ligation" +#sterilized_male "Male sterilization, e.g., vasectomy" +#injectable "Injectable contraceptive" +#lam "Lactational amenorrhea method" +#oral "Oral contraceptive" +#patch "Contraceptive patch" +#ring "Vaginal ring" +#condom_male "Male condom" +#condom_female "Female condom" +#fam "Fertility awareness method aka natural family planning aka rhythm method" +#withdrawal "Withdrawal method aka coitus interruptus" +#spermicide "Use of spermicide." +#sponge "Contraceptive sponge" +#partner "Rely on partner to provide." +#emergency "Emergency contraceptive, the 'morning after' pill." + +ValueSet: ContraceptiveMethodReasonVS +#control "Gives subject control the use of contraceptive." +#safer_sex "Method of contraceptive provides safer sex." +#convenient "Easy to use." +#long_term "Provides long term protection." +#available "Easily available, affordable." + +ValueSet: ContraceptiveNotUsedReasonVS +#abstinent "Abstains from sexual intercourse." +#new "Newly sexually active, has not yet sought birth control." +#seeking "Seeking to become pregnant or accepting of the prospect of pregnancy." +#sterility "Either partner is sterile (other than being sterilized for contraceptive purposes, which counts as a method of contraception)." +#same_sex "Partner of same sex." +#pregnant "Partner is pregnant." +#not_at_risk "Not at risk of unintended pregnancy, for example, post-menopausal." +#decline "Declines to use any method of birth control." +#unavailable "Difficulty obtaining contraceptive, for reasons of cost or access." +#inconvenient "Using contraceptive is inconvenient." + +ValueSet: SexualActivityVS +MTH#C0425726 "Never been sexually active" +MTH#C0425725 "Currently not sexually active" +MTH#C0036899 "Sexually abstinent" +MTH#C4272228 "Sexually active, heterosexual activity" +MTH#C2046970 "Sexually active, homosexual activity" +MTH#C2135319 "Sexually active in mutually monogamous relationship" +MTH#C2135645 "Sexually active with prostitutes" +MTH#C2220418 "Sexually active as a prostitute" +MTH#C2229925 "Sexually active with lack of responsibility" +MTH#C2220257 "Sexually active with frequent new partners" +MTH#C2220419 "Sexually active with persons at risk for HIV-related disease" +MTH#C2229924 "Sexually active and practicing safe(r) sex" +MTH#C2133544 "Sexually active and trying to become pregnant" + +ValueSet: IntercourseDifficultyVS +MTH#C1384606 "Dyspareunia (difficult or painful intercourse)" +MTH#C2219920 "Lack of sensation felt during sexual intercourse" +MTH#C0011124 "Decreased libido" +MTH#C2220018 "Aversion to sexual intercourse" +MTH#C0425739 "Vaginal dryness on intercourse" +MTH#C0156406 "Postcoital bleeding" +MTH#C0278103 "Fear of intercourse" +MTH#C0425732 "Sexual intercourse difficult" +MTH#C0455842 "Problem getting an erection" +MTH#C0858253 "Inability to maintain erection" +MTH#C0033038 "Premature ejaculation" +MTH#C0425761 "Failure of orgasm" + +ValueSet: HIVScreeningTestCodeVS +//TBD + +ValueSet: HIVScreeningTestResultVS // from FPAR2 ACOG, combines LL3021-4, LL2017-3, LL1996-9, LL2038-9 +LNC#LA6576-8 "Positive (HIV positive, undifferentiated)" +LNC#LA6577-6 "Negative (HIV negative)" +LNC#LA11884-6 "Indeterminant" +LNC#LA15841-2 "Invalid" +//Undetectable, Negative +//Detectable, Negative +//Repeatedly reactive + +ValueSet: HIVSupplementalTestCodeVS +//TBD + +ValueSet: HIVSupplementalTestResultVS +LNC#LA15256-3 "Nonreactive" +LNC#LA15255-5 "Reactive" +LNC#LA18330-3 "HIV-1 reactive (positive)" +LNC#LA18331-1 "HIV-2 reactive (positive)" +LNC#LA18332-9 "HIV reactive (undifferentiated)" +// Ag and Ab tests +LNC#LA21479-3 "HIV1 p24 Antigen (+) and HIV 1+2 Antibody (-)" +LNC#LA21480-1 "HIV1 p24 Antigen (-) and HIV 1+2 Antibody (+)" +LNC#LA21481-9 "HIV1 p24 Antigen (+) and HIV 1+2 Antibody (+)" +LNC#LA21482-7 "HIV1 p24 Antigen (-) and HIV 1+2 Antibody (-)" +LNC#LA11884-6 "Indeterminant" +LNC#LA15841-2 "Invalid" + + diff --git a/parking_lot/shr_vital.txt b/parking_lot/shr_vital.txt new file mode 100644 index 00000000..874c87d7 --- /dev/null +++ b/parking_lot/shr_vital.txt @@ -0,0 +1,127 @@ +Grammar: DataElement 5.0 +Namespace: shr.vital +Description: "The SHR Vital domain contains definitions for basic physiological measurements categorized as vital signs." +Uses: shr.core, shr.base, shr.finding, shr.action, shr.entity, shr.procedure + +CodeSystem: LNC = http://loinc.org +CodeSystem: UCUM = http://unitsofmeasure.org +CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category + +//------------------ Vital Sign --------------------------- + +Element: VitalSign +Based on: EvaluationResultRecorded +Concept: LNC#8716-3 "Vital Sign" +Value: 0..1 Quantity // TODO: this generates a warning because no units are specified + Quantity.Units from http://hl7.org/fhir/ValueSet/ucum-vitals-common + TopicCode from http://hl7.org/fhir/ValueSet/observation-vitalsignresult if covered +1..1 Subject +1..* Category includes OBSCAT#vital-signs + + +//------------------- Specific Vital Sign Tests ----------------------------- + +EntryElement: RespiratoryRate +Based on: VitalSign +Concept: LNC#9279-1 +Description: "The rate of breathing (inhalation and exhalation) measured within in a unit time, expressed as breaths per minute." +Value: Quantity with units UCUM#/min "/min" + TopicCode is LNC#9279-1 + Precondition from RespiratoryRateQualifierVS +0..1 EvaluationMethod from RespiratoryRateMethodVS + +EntryElement: HeartRate +Based on: VitalSign +Concept: LNC#8867-4 +Description: "The number of times the heart ventricles contract per unit of time, usually per minute." +Value: Quantity with units UCUM#/min "/min" + TopicCode is LNC#8867-4 + Precondition from HeartRateQualifierVS +0..1 EvaluationMethod from HeartRateMethodVS + +EntryElement: OxygenSaturation +Based on: VitalSign +Concept: LNC#59408-5 +Description: "Oxygen saturation in Arterial blood by Pulse oximetry." +Value: Quantity with units UCUM#% "%" + TopicCode is LNC#59408-5 +0..1 BodySite from OxygenSaturationBodySiteVS + +EntryElement: BodyTemperature +Based on: VitalSign +Concept: LNC#8310-5 +Description: "The measure of the level of heat in a human or animal." +Value: Quantity with units UCUM#Cel "C" + TopicCode is LNC#8310-5 + BodySite from BodyTemperatureBodySiteVS + Precondition from BodyTemperatureQualifierVS + +EntryElement: BodyHeight +Based on: VitalSign +Concept: LNC#8302-2 +Description: "The distance from the sole to the crown of the head." +Value: Quantity with units UCUM#cm "cm" + TopicCode is LNC#8302-2 + Precondition from BodyHeightQualifierVS + +EntryElement: BodyLength +Based on: BodyHeight +Concept: LNC#8306-3 +Description: "The distance from the sole of the foot to the crown of the head, lying down (typically 0-2 years)." +Value: Quantity with units UCUM#cm "cm" + TopicCode is LNC#8306-3 + +EntryElement: BodyWeight +Based on: VitalSign +Concept: LNC#29463-7 +Description: "The mass or quantity of heaviness of an individual. Does not include estimates of fetal bodyweight." +Value: Quantity with units UCUM#kg "kg" + TopicCode is LNC#29463-7 + Precondition from BodyWeightQualifierVS + +EntryElement: HeadCircumference +Based on: VitalSign +Concept: LNC#8287-5 +Description: "Circumference of the head (typically 0-2 years)." +Value: Quantity with units UCUM#cm "cm" + TopicCode is LNC#8287-5 + +EntryElement: BodyMassIndex +Based on: VitalSign +Concept: LNC#39156-5 +Description: "A general indicator of the body fat an individual is carrying based upon the ratio of weight to height." +Value: Quantity with units UCUM#kg/m2 "kg/m2" + + +EntryElement: BloodPressure // EvaluationResultRecorded with components +Based on: VitalSign +Concept: LNC#55284-4 +Description: "The force of circulating blood on the walls of the arteries." +0..0 Value + BodySite from BloodPressureBodySiteVS + EvaluationMethod from BloodPressureMethodVS + Precondition from BloodPressureQualifierVS + TopicCode is LNC#55284-4 +0..1 HeadTiltAngle + EvaluationComponent +includes 0..1 SystolicPressure +includes 0..1 DiastolicPressure + + + Element: SystolicPressure + Concept: LNC#8480-6 + Based on: EvaluationComponent + Description: "The blood pressure during the contraction of the left ventricle of the heart, when blood pressure is at its highest." + Value: Quantity with units UCUM#mm[Hg] "mmHg" + + Element: DiastolicPressure + Concept: LNC#8462-4 + Based on: EvaluationComponent + Description: "The blood pressure after the contraction of the heart while the chambers of the heart refill with blood, when the pressure is lowest." + Value: Quantity with units UCUM#mm[Hg] "mmHg" + + Element: HeadTiltAngle // This qualifier is only used during a tilt table test. + Concept: LNC#8360-0 + Description: "The angle at which the head is tilted relative to a level position while physiologic tests are taken." + Value: Quantity with units UCUM#deg "deg" diff --git a/parking_lot/shr_vital_map.txt b/parking_lot/shr_vital_map.txt new file mode 100644 index 00000000..96aa913b --- /dev/null +++ b/parking_lot/shr_vital_map.txt @@ -0,0 +1,43 @@ +Grammar: Map 5.1 +Namespace: shr.vital +Target: FHIR_STU_3 + +/* TODO: something goes wrong here in 5.3.1... + +ERROR_CODE:13034 (module=shr-fhir-export, shrId=shr.vital.VitalSign, target=http://hl7.org/fhir/StructureDefinition/vitalsigns, mappingRule="fix related.type to #has-member\r") + +[16:22:51.117Z] ERROR shr: Invalid or unsupported target path. ERROR_CODE:13006 (module=shr-fhir-export, shrId=shr.vital.VitalSign, target=http://hl7.org/fhir/StructureDefinition/vitalsigns) + + mappingRule: EvaluationComponent.CodeableConcept maps to component.value[x] +[16:22:51.125Z] ERROR shr: Invalid or unsupported target path. ERROR_CODE:13006 (module=shr-fhir-export, shrId=shr.vital.VitalSign, target=http://hl7.org/fhir/StructureDefinition/vitalsigns) + + +VitalSign maps to http://hl7.org/fhir/StructureDefinition/vitalsigns: + +RespiratoryRate maps to http://hl7.org/fhir/StructureDefinition/resprate: + +HeartRate maps to http://hl7.org/fhir/StructureDefinition/heartrate: + +OxygenSaturation maps to http://hl7.org/fhir/StructureDefinition/oxygensat: + +BodyTemperature maps to http://hl7.org/fhir/StructureDefinition/bodytemp: + +BodyHeight maps to http://hl7.org/fhir/StructureDefinition/bodyheight: + +BodyLength maps to http://hl7.org/fhir/StructureDefinition/bodylength: + +BodyWeight maps to http://hl7.org/fhir/StructureDefinition/bodyweight: + +HeadCircumference maps to http://hl7.org/fhir/StructureDefinition/headcircum: + +BodyMassIndex maps to http://hl7.org/fhir/StructureDefinition/bmi: + + +BloodPressure maps to http://hl7.org/fhir/StructureDefinition/bp: +//SystolicPressure maps to component (slice # = 1) +//SystolicPressure.TopicCode maps to component.code +//SystolicPressure.Quantity maps to component.value[x] +//DiastolicPressure maps to component (slice # = 2) +//DiastolicPressure.TopicCode maps to component.code +//DiastolicPressure.Quantity maps to component.value[x] +*/ \ No newline at end of file diff --git a/parking_lot/shr_vital_vs.txt b/parking_lot/shr_vital_vs.txt new file mode 100644 index 00000000..0dd1577a --- /dev/null +++ b/parking_lot/shr_vital_vs.txt @@ -0,0 +1,125 @@ +Grammar: ValueSet 5.0 +Namespace: shr.vital + +CodeSystem: LNC = http://loinc.org +CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: NCI = https://ncit.nci.nih.gov/ncitbrowser/ConceptReport.jsp?dictionary=NCI_Thesaurus + +ValueSet: RespiratoryRateQualifierVS +Concept: TBD +Description: "Details of a respiratory rate measurement." +#rest "resting or pre-exercise" +#post_exercise "post exercise" +#max_voluntary "maximum voluntary ventilation" +#post_bronchoscopy "post bronchoscopy" +#post_cardioversion "post cardioversion" +#post_sedation "post conscious sedation" +#post_therapy "post inhalation therapy" +#pre_bronchoscopy "pre bronchoscopy" +#pre_cardioversion "pre cardioversion" +#pre_sedation "pre conscious sedation" +#pre_therapy "pre inhalation therapy" +#vent_spont "on ventilator, spontaneous" +#vent "on ventilator, mechanical and spontaneous" +#vent_mech "on ventilator, mechanical" + +ValueSet: RespiratoryRateMethodVS +Concept: TBD +Description: "Methods of measuring respiratory rate." +#acoustic "Acoustic measurement" +#airway_flow "Airway flow measurement" +#co2 "Carbon dioxide measurement" +#imped "Transthoracic impedance" +#spiro "Spirometry" +#capillary "Capillary blood" + +ValueSet: HeartRateQualifierVS +Concept: TBD +Description: "Details of a heart rate measurement." +#rest "resting or pre-exercise" +#post_exercise "post exercise" +#apgar_1 "1 minute Apgar heart rate" +#apgar_5 "5 minute Apgar heart rate" +#apgar_10 "10 minute Apgar heart rate" + +ValueSet: HeartRateMethodVS +Concept: LNC#8886-4 +Description: "Method of measuring heart rate." +#pulseox "Pulse oximetry" +#pedometer "Pedometer" +#auscul "Auscultation" +#palp "Palpation" +#invasive "Invasive (e.g. intra arterial)" +#us_doppler "US Doppler" +#ecg "Electrocardiogram" + +ValueSet: OxygenSaturationBodySiteVS +MTH#C0729895 "Fingertip" +MTH#C0229315 "Ear lobe" +MTH#C0016504 "Foot" +MTH#C081709 "Chest" +MTH#0016540 "Forehead" + +ValueSet: BodyTemperatureQualifierVS +#max_illness "Maximum temperature during an illness" + +ValueSet: BodyTemperatureBodySiteVS +MTH#C0004454 "Axilla (underarm)" +MTH#C0226896 "Oral cavity" +MTH#C0521421 "Ear" +MTH#C0041445 "Tympanic membrane" +MTH#C0039482 "Temporal artery (forehead)" +MTH#C0034896 "Rectal" +MTH#C0005682 "Urinary bladder" +MTH#C0027423 "Nasal" +MTH#C0027442 "Nasopharynx" +MTH#C0016129 "Finger" +MTH#C0040357 "Toe" + +ValueSet: BodyHeightQualifierVS +LNC#8301-4 "Body height estimated" +LNC#3137-7 "Body height measured" +// LNC#3138-5 "Body height stated" Not needed; this is handled by Informant field in Entry +LNC#8306-3 "Body height lying" +LNC#8305-5 "Body height post partum" +LNC#8307-1 "Body height preoperative" +LNC#8308-9 "Body height standing" +#shoes_on "Body height wearing shoes" + +ValueSet: BodyWeightQualifierVS +#meas "Measured" +#est "Estimated" +#ideal "Ideal" +#clothed "with clothes" +#unclothed "without clothes" +#pre_dialysis "pre dialysis" +#post_dialysis "post dialysis" +#preop "pre operative" +#postop "pre pregnancy" +#antepartum "ante partum" +#delivery "mother at delivery" +#postpartum "post partum" +#birth "birth weight" +#dry "dry" + +ValueSet: BloodPressureMethodVS +Concept: MTH#C0489446 +Description: "The method used to measure blood pressure." +#cuff_manual "Cuff method, manual" +#cuff_auto "Cuff method, automatic" +#intravascular "Intravascular method" +#continuous "Continuous non-invasive monitoring" + +ValueSet: BloodPressureQualifierVS +Description: "Code further describing the blood pressure measurement." +#pre_transfusion "pre transfusion" +#post_transfusion "post transfusion" +#pre_phlebotomy "pre phlebotomy" +#post_phlebotomy "post phlebotomy" +#expiration "during expiration" +#inspiration "during inspiration" +MTH#C0242880 "During tilt table test" + +ValueSet: BloodPressureBodySiteVS +MTH#C0446516 "Arm" +MTH#C1140621 "Leg" \ No newline at end of file From 2a237db5fc705ee676a4f3f94d6354e4f2621e62 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 14 Nov 2018 19:47:49 -0500 Subject: [PATCH 105/289] Restoring some Breast Cancer based on MCODE --- spec/shr_base_finding.txt | 6 +- spec/shr_occupation.txt | 6 +- spec/shr_oncology.txt | 279 +++++++++++++++++------------------ spec/shr_oncologycore.txt | 26 ++-- spec/shr_oncologycore_vs.txt | 4 +- spec/shr_procedure.txt | 4 +- spec/shr_wound.txt | 2 +- 7 files changed, 158 insertions(+), 169 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index edd31ead..5ed7f2a8 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -131,11 +131,13 @@ For an Observation, the FindingTopicCode describes the aspect or property of the Examples are the measurements that compose a complete blood count (CBC), or the elements of a pathology report. Each member is an independent evaluation, but the grouping reflects a composite lab order, shared specimen, or a single report author. Typically the Category and Reason are not given for individual findings that are part of the panel, but rather given at the level of the panel itself." 0..* ref(Observation) +/* commented out but it might need to come back, so please save Element: Precondition Concept: TBD Description: "A description of the conditions or context of an observation, for example, under sedation, fasting or post-exercise. Body position and body site are also qualifiers, but handled separately. A qualifier cannot modify the measurement type; for example, a fasting blood sugar is still a blood sugar. " Value: CodeableConcept or ref(Observation) - +*/ + Element: DeltaFlag Concept: MTH#C1705241 Description: "Indicator of significant change (delta) from the last or previous measurement." @@ -269,7 +271,7 @@ Description: "A condition that is or may be present in a subject. 'Condition' is //0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson 1..1 Patient 0..0 SpecificFocusOfFinding // always the patient? -0..0 FindingMethod +0..1 FindingMethod 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation //0..* ConditionCause MK - reduce clutter diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 63d89b7f..4ce5ed3f 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -185,8 +185,8 @@ includes 0..1 IsCurrentJob Based on: QuantitativeNonIndependentFinding Concept: LNC#74160-3 Description: "The average number of days per week that a person spends performing their duties for work." - // FindingResult value is type Quantity - // FindingResult.Quantity.Units is UCUM#d +// TODO: bug preventing this +// FindingResult.Quantity.Units is UCUM#d FindingTopicCode is LNC#74160-3 0..0 ReferenceRange @@ -212,7 +212,7 @@ Description: "A simplified observation for social histories." //0..0 SourceOfInformation 0..0 FindingMethod 0..0 AnatomicalLocation -0..0 Precondition +//0..0 Precondition 0..0 ReferenceRange 0..0 PanelMembers 0..0 Device diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index 35cfe301..a5d4e8ea 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: oncology Description: "SHR implementation of ASCO requirements." -Uses: shr.core, shr.base, shr.entity +Uses: shr.core, shr.base, shr.entity, mcode CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org @@ -11,24 +11,20 @@ CodeSystem: HGNC = http://www.genenames.org CodeSystem: CAP = https://sdt.cap.org CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category -/************* LEGACY BEGIN ************ + EntryElement: BreastSite Based on: AnatomicalLocationStructured Description: "A body site specific to the breast structure." -Value: CodeableConcept from BreastSiteVS -0..1 ClockDirection -0..1 DistanceFromBreastSiteToNipple + AnatomicalLocationOrLandmarkCode from BreastSiteVS +1..1 Laterality 0..0 AnatomicalDirection - - Element: DistanceFromBreastSiteToNipple - Description: "Distance between the feature of interest (e.g., the tumor) and the nipple." - Value: Quantity with units UCUM#cm + DistanceFromLandmark.Distance.Units is UCUM#cm EntryElement: BreastSpecimen Based on: Specimen Description: "Specimen resulting from biopsy or excision of breast and surrounding tissue." Type from BreastSpecimenTypeVS - CollectionSite value is type BreastSite + CollectionSite.AnatomicalLocation.AnatomicalLocationStructured is type BreastSite CollectionMethod from BreastSpecimenCollectionMethodVS SourceSpecimen value is type ref(BreastSpecimen) 0..1 ColdIschemiaTime @@ -38,14 +34,15 @@ Description: "Specimen resulting from biopsy or excision of breast and surroundi Description: "The time period between the chilling of a tissue or tissue sample and the time it is warmed." Value: TimePeriod -EntryElement: BreastCancerPresent -Based on: ConditionPresentAssertion + +EntryElement: BreastCancerDisorderPresent +Based on: CancerDisorderPresent Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." FindingTopicCode from BreastCancerTypeVS - StageInformation.StageDetail value is type BreastCancerStage + StageInformation.StageDetail value is type BreastCancerStageInformation 0..1 FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding - AnatomicalLocationStructured is type BreastSite + AnatomicalLocation.AnatomicalLocationStructured is type BreastSite 0..1 MorphologyBehavior from MorphologyBehaviorVS Element: MorphologyBehavior @@ -54,58 +51,102 @@ Description: "Diagnosis of cancer originating in the tissues of the breast, and Value: CodeableConcept - -EntryElement: BreastCancerStage -Based on: Observation +EntryElement: BreastCancerStageInformation +Based on: CancerStageInformation Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. -Description: "The stage of a breast cancer. Different staging systems use different staging groups, so there are currently no terminology bindings associated with this class." -Value: CodeableConcept should be from http://loinc.org/LL240-3 +Description: "The stage of a breast cancer." FindingTopicCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" -0..1 StageTimingPrefix - NonIndependentFinding -includes 0..1 BreastCancerPrimaryTumorClassification -includes 0..1 BreastCancerRegionalNodesClassification -includes 0..1 BreastCancerDistantMetastasesClassification +// SpecificFocusOfFinding value is type BreastCancerDisorderPresent PanelMembers.Observation includes 0..1 HER2ReceptorStatus -includes 0..1 EstrogenReceptorStatus -includes 0..1 ProgesteroneReceptorStatus -includes 0..1 DCISNuclearGrade -includes 0..1 BreastCancerHistologicGrade -0..0 Device -0..0 Specimen -0..0 Precondition -0..0 ReferenceRange +//includes 0..1 EstrogenReceptorStatus +//includes 0..1 ProgesteroneReceptorStatus +//includes 0..1 DCISNuclearGrade +//includes 0..1 BreastCancerHistologicGrade - Element: StageTimingPrefix - Concept: SCT#260869008 "Timing of stage" - Description: "Indicates when the staging was done, in terms of treatment landmarks." - Value: CodeableConcept from StageTimingPrefixVS - - Element: BreastCancerPrimaryTumorClassification - Concept: SCT#78873005 "T category" - Based on: NonIndependentFinding - Description: "The size and extent of the primary tumor, based on criteria defined by the staging system being used." - Value: CodeableConcept - 0..1 StageSuffix - Element: BreastCancerRegionalNodesClassification - Concept: SCT#277206009 "N category" //RMB: was LNC#59525-6, which is specific to AJCC 7th edition - Based on: NonIndependentFinding - Description: "The presence of metastases in regional lymph nodes, based on criteria defined by the staging system being used." - Value: CodeableConcept - 0..1 StageSuffix - Element: StageSuffix - Concept: TBD - Description: "A suffix used in conjuction with certain breast cancer stages, based on criteria defined by the staging system being used." - Value: CodeableConcept +EntryElement: HER2ReceptorStatus +Based on: CodedLaboratoryObservation +Concept: LNC#48676-1 "HER2 [Interpretation] in Tissue" +Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." + FindingResult from PositiveNegativeEquivocalVS + FindingTopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" + DiagnosticService is #pathology + Specimen is type BreastSpecimen +//0..0 Precondition +0..0 FindingMethod +0..0 NonIndependentFinding + PanelMembers.Observation +includes 0..* HER2byIHC +includes 0..* HER2byFISH - Element: BreastCancerDistantMetastasesClassification - Concept: SCT#277208005 "M category (observable entity)" //RMB: was LNC#59522-3, which is specific to AJCC 7th edition - Based on: NonIndependentFinding - Description: "The presence of distant metastases, based on criteria defined by the staging system being used." - Value: CodeableConcept +EntryElement: HER2byIHC +// MK 7/14/2018 separated null value from non-null values. +Based on: CodedLaboratoryObservation +Concept: LNC#85319-2 +Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (IHC). " + FindingResult from HER2byIHCScoreVS + ExceptionValue from HER2byIHCScoreNullVS + Interpretation from PositiveNegativeEquivocalVS + FindingTopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" +0..0 FindingMethod // pre-coordinated in the FindingTopicCode + DiagnosticService is #pathology +//0..0 Precondition + Specimen is type BreastSpecimen + NonIndependentFinding +includes 0..1 CompleteMembraneStainingPercent +0..0 PanelMembers + + Element: CompleteMembraneStainingPercent + Based on: QuantitativeNonIndependentFinding + Concept: LNC#85328-3 "Cells.HER2 uniform intense membrane staining/100 cells" + Description: "Percentage of cells with uniform intense complete membrane staining." +// Awaiting bug fix +// FindingResult.Quantity.Units is UCUM#% + 0..0 ReferenceRange +// 0..0 Interpretation + +EntryElement: HER2byFISH +Based on: LaboratoryObservation +Concept: LNC#85318-4 // Corrected 5/12/2018 by MK +Description: "HER2 receptor status as determined by single-probe or dual-probe Fluorescence In Situ Hybridization (FISH)." +0..0 FindingResult +0..0 ExceptionValue + FindingTopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" + FindingMethod from HER2FISHMethodVS // single or double probe + Interpretation from PositiveNegativeEquivocalVS + DiagnosticService is #pathology +//0..0 Precondition + Specimen is type BreastSpecimen + NonIndependentFinding +includes 0..1 AverageHER2SignalsPerCell +includes 0..1 AverageCEP17SignalsPerCell +includes 0..1 HER2toCEP17Ratio +0..0 PanelMembers + + Element: AverageHER2SignalsPerCell + Based on: QuantitativeNonIndependentFinding + Concept: LNC#74860-8 + Description: "Average number of HER2 signals per cell" + 0..0 ReferenceRange + + Element: AverageCEP17SignalsPerCell + Based on: QuantitativeNonIndependentFinding + Concept: LNC#74861-6 + Description: "Average number CEP17 signals per cell (dual probe only)" + 0..0 ReferenceRange + + Element: HER2toCEP17Ratio + Based on: QuantitativeNonIndependentFinding + Concept: LNC#49683-6 + Description: "HER2 to CEP17 Ratio (dual probe only)" + 0..0 ReferenceRange + + + + +/************* LEGACY BEGIN ************ EntryElement: DCISNuclearGrade @@ -168,17 +209,28 @@ Value: CodeableConcept from PositiveNegativeVS includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers -************* LEGACY END ************/ -/* additional components from CAP form -includes 0..1 StainingControl -includes 0..1 PrimaryAntibody //from EstrogenAntibodyVS if covered -includes 0..1 AllredProportionScore -includes 0..1 AllredIntensityScore -includes 0..1 AllredTotalScore -includes 0..1 OtherReceptorScoringSystem -*/ -/************* LEGACY BEGIN ************ + Element: BreastCancerPrimaryTumorClassification + Concept: SCT#78873005 "T category" + Based on: NonIndependentFinding + Description: "The size and extent of the primary tumor, based on criteria defined by the staging system being used." + Value: CodeableConcept + 0..1 StageSuffix + + Element: BreastCancerRegionalNodesClassification + Concept: SCT#277206009 "N category" //RMB: was LNC#59525-6, which is specific to AJCC 7th edition + Based on: NonIndependentFinding + Description: "The presence of metastases in regional lymph nodes, based on criteria defined by the staging system being used." + Value: CodeableConcept + 0..1 StageSuffix + + + Element: BreastCancerDistantMetastasesClassification + Concept: SCT#277208005 "M category (observable entity)" //RMB: was LNC#59522-3, which is specific to AJCC 7th edition + Based on: NonIndependentFinding + Description: "The presence of distant metastases, based on criteria defined by the staging system being used." + Value: CodeableConcept + EntryElement: ProgesteroneReceptorStatus Based on: CodedLaboratoryObservation Concept: LNC#16113-3 @@ -206,81 +258,6 @@ includes 0..1 AverageStainingIntensity Description: "The degree or magnitude of staining (nuclear positivity) across cells in the specimen." Value: CodeableConcept from StainingIntensityVS -EntryElement: HER2ReceptorStatus -Based on: CodedLaboratoryObservation -Concept: LNC#48676-1 "HER2 [Interpretation] in Tissue" -Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." -Value: CodeableConcept from PositiveNegativeEquivocalVS - FindingTopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" - DiagnosticService is #pathology - Specimen is type BreastSpecimen -0..0 Precondition -0..0 FindingMethod -0..0 NonIndependentFinding - PanelMembers.Observation -includes 0..* HER2byIHC -includes 0..* HER2byFISH - -EntryElement: HER2byIHC -// MK 7/14/2018 separated null value from non-null values. -Based on: CodedLaboratoryObservation -Concept: LNC#85319-2 -Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (IHC). " -Value: CodeableConcept from HER2byIHCScoreVS - ExceptionValue from HER2byIHCScoreNullVS - Interpretation from PositiveNegativeEquivocalVS - FindingTopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" -0..0 FindingMethod // pre-coordinated in the FindingTopicCode - DiagnosticService is #pathology -0..0 Precondition - Specimen is type BreastSpecimen - NonIndependentFinding -includes 0..1 CompleteMembraneStainingPercent -0..0 PanelMembers - - Element: CompleteMembraneStainingPercent - Based on: NonIndependentFinding - Concept: LNC#85328-3 "Cells.HER2 uniform intense membrane staining/100 cells" - Description: "Percentage of cells with uniform intense complete membrane staining." - Value: Quantity with units UCUM#% // TODO: Percentage causes CLI error - 0..0 ReferenceRange -// 0..0 Interpretation - -EntryElement: HER2byFISH -Based on: LaboratoryObservation -Concept: LNC#85318-4 // Corrected 5/12/2018 by MK -Description: "HER2 receptor status as determined by single-probe or dual-probe Fluorescence In Situ Hybridization (FISH)." -0..0 Value -0..0 ExceptionValue - FindingTopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" - FindingMethod from HER2FISHMethodVS // single or double probe - Interpretation from PositiveNegativeEquivocalVS - DiagnosticService is #pathology -0..0 Precondition - Specimen is type BreastSpecimen - NonIndependentFinding -includes 0..1 AverageHER2SignalsPerCell -includes 0..1 AverageCEP17SignalsPerCell -includes 0..1 HER2toCEP17Ratio -0..0 PanelMembers - - Element: AverageHER2SignalsPerCell - Based on: NonIndependentFinding - Concept: LNC#74860-8 - Description: "Average number of HER2 signals per cell" - 0..0 ReferenceRange - - Element: AverageCEP17SignalsPerCell - Based on: NonIndependentFinding - Concept: LNC#74861-6 - Description: "Average number CEP17 signals per cell (dual probe only)" - 0..0 ReferenceRange - - Element: HER2toCEP17Ratio - Based on: NonIndependentFinding - Concept: LNC#49683-6 - Description: "HER2 to CEP17 Ratio (dual probe only)" - 0..0 ReferenceRange EntryElement: OncotypeDxInvasiveRecurrenceScore Based on: SimpleLaboratoryObservation @@ -339,7 +316,7 @@ Value: CodeableConcept from ProgressionVS // "ProgressionEvidence" is somewhat related to FindingMethod, which represents the test or procedure used to generate the result; it is typically a LOINC code (0..1) 0..0 Specimen 0..0 NonIndependentFinding -0..0 Precondition +//0..0 Precondition 0..0 ReferenceRange // applies to a quantitative measurement only Element: ProgressionEvidence @@ -350,6 +327,16 @@ Value: CodeableConcept from ProgressionVS /* + + additional components from CAP form +includes 0..1 StainingControl +includes 0..1 PrimaryAntibody //from EstrogenAntibodyVS if covered +includes 0..1 AllredProportionScore +includes 0..1 AllredIntensityScore +includes 0..1 AllredTotalScore +includes 0..1 OtherReceptorScoringSystem + + Element: Aneusomy Based on: NonIndependentFinding Concept: CAP#30478 @@ -374,7 +361,6 @@ Value: CodeableConcept from ProgressionVS Description: "The percentage of cells that test (stain) positive for the presence of a receptor." Value: Range - Element: PrimaryAntibody Based on: NonIndependentFinding Concept: CAP#31092 @@ -471,7 +457,6 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Description: "The percentage of the cancer that is in situ, as opposed to invading other tissues." Value: Quantity with units UCUM#% - Element: Ki-67LabelingIndex Based on: SimpleCodedObservation @@ -498,7 +483,7 @@ Description: "Whether a subject carries a mutation in a particular gene." Value: CodeableConcept from PositiveNegativeVS // SpecificFocusOfFinding.CodeableConcept from GeneIdentifierVS DiagnosticService is #genetics -0..0 Precondition +//0..0 Precondition 0..0 ReferenceRange 0..0 DeltaFlag 0..0 AnatomicalLocationd diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 6e5e6488..01c09a0a 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -9,7 +9,7 @@ CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: UCUM = http://unitsofmeasure.org -EntryElement: CancerDisorder +EntryElement: CancerDisorderPresent Based on: ConditionPresentAssertion Description: "The presence of malignant neoplastic disease, in which abnormal cells divide without control and can invade nearby tissues." Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" @@ -24,7 +24,7 @@ EntryElement: CancerHistologicType Based on: SimpleCodedNonLaboratoryObservation Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." -// SpecificFocusOfFinding value is type CancerDisorder or TumorPresent? +// SpecificFocusOfFinding value is type CancerDisorderPresent or TumorPresent? FindingResult from CancerHistologicTypeVS FindingTopicCode is SCT#371441004 "Histologic type (observable entity)" 0..0 AnatomicalLocation @@ -37,7 +37,7 @@ Description: "The classification resulting from cancer staging. Each type of Concept: LNC#21858-6 "Grade Cancer" FindingResult from http://loinc.org/vs/LL213-0 FindingTopicCode is LNC#21858-6 "Grade Cancer" -// SpecificFocusOfFinding value is type CancerDisorder // TODO: this is failing; bug reported +// SpecificFocusOfFinding value is type CancerDisorderPresent // TODO: this is failing; bug reported 0..0 AnatomicalLocation 0..0 Device @@ -47,7 +47,7 @@ Description: "The course of a disease, such as cancer, as it becomes worse or Concept: SCT#246453008 "Course of illness (attribute)" FindingResult from CancerProgressionVS FindingTopicCode is SCT#246453008 "Course of illness (attribute)" -// SpecificFocusOfFinding value is type CancerDisorder +// SpecificFocusOfFinding value is type CancerDisorderPresent 0..0 AnatomicalLocation 0..0 Device @@ -65,7 +65,7 @@ Concept: SCT#258232002 "Cancer staging (tumor staging)" 0..0 Specimen 0..0 Device 0..1 FindingMethod from CancerStagingSystemVS -// SpecificFocusOfFinding value is type CancerDisorder +// SpecificFocusOfFinding value is type CancerDisorderPresent NonIndependentFinding includes 0..1 StageGroup // MK - should this be the FindingResult? includes 0..1 StageTiming // retained StageTiming because if using TNM staging, the StageGroup still needs a prefix (even if we're using precoordinated categories). There are LOINC codes for clinical and pathologic stage groups in LOINC, but we back ourselves into TNM for stage group if we use them. @@ -118,7 +118,7 @@ Based on: CodedNonLaboratoryObservation Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." FindingResult from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 -// SpecificFocusOfFinding value is type CancerDisorder +// SpecificFocusOfFinding value is type CancerDisorderPresent 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media @@ -135,7 +135,7 @@ Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC FindingResult from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" -// SpecificFocusOfFinding value is type CancerDisorder +// SpecificFocusOfFinding value is type CancerDisorderPresent 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media @@ -158,7 +158,7 @@ Description: "" //TODO: pull from LOINC 0..0 Media 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered -// SpecificFocusOfFinding value is type CancerDisorder +// SpecificFocusOfFinding value is type CancerDisorderPresent NonIndependentFinding includes 0..1 StageSuffix includes 0..1 ClinicalStageTiming @@ -175,7 +175,7 @@ Description: "" //TODO: pull from LOINC 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered -// SpecificFocusOfFinding value is type CancerDisorder +// SpecificFocusOfFinding value is type CancerDisorderPresent NonIndependentFinding includes 0..1 StageSuffix includes 0..1 PathologicStageTiming @@ -186,7 +186,7 @@ Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" Description: "" //TODO: pull from LOINC FindingResult from http://loinc.org/vs/LL3136-0 // normative FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" -// SpecificFocusOfFinding value is type CancerDisorder +// SpecificFocusOfFinding value is type CancerDisorderPresent 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media @@ -204,7 +204,7 @@ Description: "" //TODO: pull from LOINC FindingResult from http://loinc.org/vs/LL3137-8 0..0 ReferenceRange FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative -// SpecificFocusOfFinding value is type CancerDisorder +// SpecificFocusOfFinding value is type CancerDisorderPresent 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media @@ -230,7 +230,7 @@ Concept: SCT#395557000 "Tumor finding (finding)" Value: CodeableConcept from YesNoUnknownVS // could be boolean but VS allows for unknown -/**** replaced by Onset of CancerDisorder +/**** replaced by Onset of CancerDisorderPresent EntryElement: EarliestDateOfCancerDiagnosis //TODO_discussion: added, but not convinced we need a separate element for this given the WhenClinicallyRecognized property of ConditionPresentAssertion. Based on: SimpleNonLaboratoryObservation @@ -239,7 +239,7 @@ Description: "The earliest date of diagnosis (clinical or laboratory) of an illn Value: dateTime // parent class only allows time, dateTime or TimePeriod as choices. 0..0 ReferenceRange 0..0 AnatomicalLocation -// SpecificFocusOfFinding value is type CancerDisorder +// SpecificFocusOfFinding value is type CancerDisorderPresent */ /********** Assessments **************/ diff --git a/spec/shr_oncologycore_vs.txt b/spec/shr_oncologycore_vs.txt index 7369d0e5..ebee158e 100644 --- a/spec/shr_oncologycore_vs.txt +++ b/spec/shr_oncologycore_vs.txt @@ -59,7 +59,7 @@ Description: "Modifiers related to the staging category. Examples of modifiers i #seer_ss18 "SEER Summary Stage 2018" */ -/********* LEGACY STUFF ************ + ValueSet: BreastSiteVS Description: "Topography of the breast. Codes are drawn from Snomed and correspond to ICD-O-3." SCT#24142002 "Nipple structure (body structure) - corresponds to ICDO3#C50.0" @@ -72,6 +72,8 @@ SCT#38412008 "Structure of axillary tail of breast (body structure) - corresp SCT#276825009 "Overlapping sites (qualifier value) - corresponds to ICDO3#C50.8" SCT#76752008 "Breast structure (body structure) - corresponds to ICDO3#C50.9" // NOS + +/********* LEGACY STUFF ************ ValueSet: BreastSpecimenTypeVS Description: "The type of specimen obtained from the breast. Codes are drawn from Snomed CT where available. Local codes are used where Snomed codes are currently unavailable." SCT#119295008 "Specimen obtained by aspiration (specimen)" // mlt: replaces #aspirate "Aspirate" diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index c775dc69..efe791c8 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -16,7 +16,7 @@ Description: "A procedure that has been performed." 0..* Annotation 0..1 Reason 0..1 Method -0..* Precondition +//0..* Precondition 0..* InputFinding 0..* Indication 0..* ref(Device) @@ -73,7 +73,7 @@ Based on: ActionRequested 0..* Annotation 0..1 Reason 0..1 Method -0..* Precondition +//0..* Precondition 0..* InputFinding 0..* Indication 0..* ref(Device) diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 85928ab8..2b7aa938 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -80,7 +80,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t 0..0 Criticality 0..0 Certainty 0..0 Device -0..0 Precondition +//0..0 Precondition Element: WoundIdentifier Based on: ObjectIdentifier From fe13faad1c6f3231f61d75f0476886fe0bbba9ee Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 15 Nov 2018 10:46:35 -0500 Subject: [PATCH 106/289] Pulled back Breast Cancer into MCode --- spec/shr_oncology.txt | 166 +++++++++++++++++++------------------- spec/shr_oncologycore.txt | 8 +- 2 files changed, 85 insertions(+), 89 deletions(-) diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index a5d4e8ea..c11c0fd0 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -59,10 +59,10 @@ Description: "The stage of a breast cancer." // SpecificFocusOfFinding value is type BreastCancerDisorderPresent PanelMembers.Observation includes 0..1 HER2ReceptorStatus -//includes 0..1 EstrogenReceptorStatus -//includes 0..1 ProgesteroneReceptorStatus -//includes 0..1 DCISNuclearGrade -//includes 0..1 BreastCancerHistologicGrade +includes 0..1 EstrogenReceptorStatus +includes 0..1 ProgesteroneReceptorStatus +includes 0..1 DCISNuclearGrade +includes 0..1 BreastCancerHistologicGrade @@ -143,122 +143,94 @@ includes 0..1 HER2toCEP17Ratio Description: "HER2 to CEP17 Ratio (dual probe only)" 0..0 ReferenceRange +EntryElement: EstrogenReceptorStatus +Based on: CodedLaboratoryObservation +Concept: LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" +Description: "Estrogen receptor alpha is the predominant estrogen receptor expressed in breast tissue and is overexpressed in around 50% of breast carcinomas. ER status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options. +The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." + FindingTopicCode is LNC#16112-5 + FindingResult from PositiveNegativeVS + DiagnosticService is #pathology + Specimen is type BreastSpecimen + NonIndependentFinding +includes 0..1 NuclearPositivity +includes 0..1 AverageStainingIntensity +0..0 PanelMembers +EntryElement: ProgesteroneReceptorStatus +Based on: CodedLaboratoryObservation +Concept: LNC#16113-3 +Description: "Progesterone receptor status is a factor in determining prognosis and treatment options. The value is the percentage of cells that test (stain) positive for the presence of a receptor. The interpretation of positive or negative (found in the interpretation property) is based on the staining percentage, and may take into account the staining intensity. +Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." + FindingTopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" + FindingResult from PositiveNegativeVS + DiagnosticService is #pathology + Specimen is type BreastSpecimen + NonIndependentFinding +includes 0..1 NuclearPositivity +includes 0..1 AverageStainingIntensity +0..0 PanelMembers + Element: NuclearPositivity + Based on: NonIndependentFinding + Concept: TBD // apparently no LOINC code + Description: "The percentage of cells that test (stain) positive for the presence of a receptor. + We are seeking feedback on whether nuclear positivity should be an exact percentage or a range of percentages. As currently defined, an exact nuclear positivity could be represented by a zero-width range, where the lower and upper bounds would be the same number." + FindingResult value is type Range -/************* LEGACY BEGIN ************ - + Element: AverageStainingIntensity + Concept: SCT#444775005 "Average intensity of positive staining neoplastic cells (observable entity)" + Based on: CodedNonIndependentFinding + Description: "The degree or magnitude of staining (nuclear positivity) across cells in the specimen." + FindingResult from StainingIntensityVS EntryElement: DCISNuclearGrade Concept: MTH#C18513 // What is the proper LOINC code? Based on: SimpleCodedLaboratoryObservation Description: "An evaluation of the size and shape of the nucleus in tumor cells and the percentage of tumor cells that are in the process of dividing or growing. Cancers with low nuclear grade grow and spread less quickly than cancers with high nuclear grade." -Value: CodeableConcept from NuclearGradeVS + FindingResult from NuclearGradeVS Specimen is type BreastSpecimen FindingTopicCode is MTH#C18513 DiagnosticService is #pathology - EntryElement: BreastCancerHistologicGrade Concept: LNC#44648-4 -Based on: CodedLaboratoryObservation +Based on: CancerHistologicGrade Description: "The Elston Grade/Nottingham Score, representative of the aggressive potential of the tumor. Well differentiated cells (Grade 1) look similar to normal cells and are usually slow growing, while poorly differentiated cells (Grade 3) look very different than normal and are fast-growing." -Value: CodeableConcept from NottinghamCombinedGradeVS - ExceptionValue from NottinghamNullVS FindingTopicCode is LNC#44648-4 + FindingResult from NottinghamCombinedGradeVS + ExceptionValue from NottinghamNullVS Specimen is type BreastSpecimen DiagnosticService is #pathology NonIndependentFinding includes 0..1 TubuleFormationScore includes 0..1 NuclearPleomorphismScore includes 0..1 MitoticCountScore -0..0 PanelMembers +0..0 PanelMembers + //RMB: the CAP form has two additional options for each of these subcomponents: "only microinvasion present" and "no residual invasive carcinoma", both of which are situations where a histologic grade wouldn't be assigned. Because the our exceptions value set doesn't handle these options (and possibly others related to other data elements, should we allow for a string option to contain reasons for missing data? Otherwise the expection value set might become unruly. Element: TubuleFormationScore Concept: LNC#85321-8 "Granular differentiation" // SHOULD BE LOINC - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Description: "Glandular differentiation [Score] in Breast cancer specimen Qualitative by Nottingham." - Value: CodeableConcept from TubuleFormationScoreVS //TODO: Determine if it is better to use codes as opposed to a number 1, 2 or 3. Observations don't support integer or posInteger + FindingResult from TubuleFormationScoreVS //TODO: Determine if it is better to use codes as opposed to a number 1, 2 or 3. Observations don't support integer or posInteger ExceptionValue from NottinghamComponentNullVS Element: NuclearPleomorphismScore Concept: LNC#44645-0 - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Description: "Nuclear pleomorphism in Breast tumor Qualitative by Nottingham." - Value: CodeableConcept from NuclearPleomorphismScoreVS + FindingResult from NuclearPleomorphismScoreVS ExceptionValue from NottinghamComponentNullVS Element: MitoticCountScore Concept: LNC#85300-2 - Based on: NonIndependentFinding + Based on: CodedNonIndependentFinding Description: "Mitotic rate [Score] in Breast cancer specimen Qualitative by Nottingham." - Value: CodeableConcept from MitoticCountScoreVS // 1 to 3 //RMB: this shouldn't be different from TubuleFormationScore and NuclearPleomorphismScore. They have the same scoring mechanism. Suggest using local codes. + FindingResult from MitoticCountScoreVS // 1 to 3 //RMB: this shouldn't be different from TubuleFormationScore and NuclearPleomorphismScore. They have the same scoring mechanism. Suggest using local codes. ExceptionValue from MitoticCountScoreNullVS -EntryElement: EstrogenReceptorStatus -Based on: CodedLaboratoryObservation -Concept: LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" -Description: "Estrogen receptor alpha is the predominant estrogen receptor expressed in breast tissue and is overexpressed in around 50% of breast carcinomas. ER status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options. -The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." -Value: CodeableConcept from PositiveNegativeVS - FindingTopicCode is LNC#16112-5 - DiagnosticService is #pathology - Specimen is type BreastSpecimen - NonIndependentFinding -includes 0..1 NuclearPositivity -includes 0..1 AverageStainingIntensity -0..0 PanelMembers - - Element: BreastCancerPrimaryTumorClassification - Concept: SCT#78873005 "T category" - Based on: NonIndependentFinding - Description: "The size and extent of the primary tumor, based on criteria defined by the staging system being used." - Value: CodeableConcept - 0..1 StageSuffix - - Element: BreastCancerRegionalNodesClassification - Concept: SCT#277206009 "N category" //RMB: was LNC#59525-6, which is specific to AJCC 7th edition - Based on: NonIndependentFinding - Description: "The presence of metastases in regional lymph nodes, based on criteria defined by the staging system being used." - Value: CodeableConcept - 0..1 StageSuffix - - - Element: BreastCancerDistantMetastasesClassification - Concept: SCT#277208005 "M category (observable entity)" //RMB: was LNC#59522-3, which is specific to AJCC 7th edition - Based on: NonIndependentFinding - Description: "The presence of distant metastases, based on criteria defined by the staging system being used." - Value: CodeableConcept - -EntryElement: ProgesteroneReceptorStatus -Based on: CodedLaboratoryObservation -Concept: LNC#16113-3 -Description: "Progesterone receptor status is a factor in determining prognosis and treatment options. The value is the percentage of cells that test (stain) positive for the presence of a receptor. The interpretation of positive or negative (found in the interpretation property) is based on the staining percentage, and may take into account the staining intensity. -Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." -Value: CodeableConcept from PositiveNegativeVS - FindingTopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" - DiagnosticService is #pathology - Specimen is type BreastSpecimen - NonIndependentFinding -includes 0..1 NuclearPositivity -includes 0..1 AverageStainingIntensity -0..0 PanelMembers - - Element: NuclearPositivity - Based on: NonIndependentFinding - Concept: TBD // apparently no LOINC code - Description: "The percentage of cells that test (stain) positive for the presence of a receptor. - We are seeking feedback on whether nuclear positivity should be an exact percentage or a range of percentages. As currently defined, an exact nuclear positivity could be represented by a zero-width range, where the lower and upper bounds would be the same number." - Value: Range - - Element: AverageStainingIntensity - Concept: SCT#444775005 "Average intensity of positive staining neoplastic cells (observable entity)" - Based on: NonIndependentFinding - Description: "The degree or magnitude of staining (nuclear positivity) across cells in the specimen." - Value: CodeableConcept from StainingIntensityVS - - EntryElement: OncotypeDxInvasiveRecurrenceScore Based on: SimpleLaboratoryObservation Concept: MTH#C1709318 @@ -276,7 +248,8 @@ Based on: SimpleLaboratoryObservation Concept: MTH#C3898101 Description: "The Oncotype DX test for DCIS (Ductal Carcinoma in Situ) breast cancer. Risk scores range from 0 to 100 with the following interpretations: 0-38: Low-Risk, 39-54: Intermediate-Risk, 55+: High-Risk. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" -Value: Quantity with units UCUM#1 + FindingResult value is type Quantity +// FindingResult.Quantity.Units is UCUM#1 FindingTopicCode is MTH#C3898101 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology @@ -287,7 +260,8 @@ Based on: SimpleLaboratoryObservation Concept: LNC#76544-6 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Prosigna. The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Risk of Recurrence Score in the literature), which is correlated with the probability of distant recurrence at ten years for post-menopausal women with hormone receptor positive, early stage breast cancer." -Value: Quantity with units UCUM#1 + FindingResult value is type Quantity +// FindingResult.Quantity.Units is UCUM#1 FindingTopicCode is LNC#76544-6 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology @@ -299,12 +273,14 @@ Concept: MTH#C2827401 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Mammaprint. In the United States, MammaPrint can only be used on cancers that are stage I or stage II, invasive, smaller than 5 centimeters, and estrogen-receptor-positive or -negative. Scores range from -1.0 to +1.0, with scores less than 0 indicating high risk, and scores greater than 0 indicating low risk. The is currently no LOINC code for Mammaprint test." -Value: Quantity + FindingResult value is type Quantity FindingTopicCode is MTH#C2827401 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology - Specimen is type BreastSpecimen + Specimen is type BreastSpecimen + +/************* LEGACY BEGIN ************ EntryElement: DiseaseProgression Based on: Observation @@ -323,6 +299,26 @@ Value: CodeableConcept from ProgressionVS Description: "The type of evidence considered in determining disease progression." Value: CodeableConcept from ProgressionEvidenceVS + Element: BreastCancerPrimaryTumorClassification + Concept: SCT#78873005 "T category" + Based on: CodedNonIndependentFinding + Description: "The size and extent of the primary tumor, based on criteria defined by the staging system being used." + Value: CodeableConcept + 0..1 StageSuffix + + Element: BreastCancerRegionalNodesClassification + Concept: SCT#277206009 "N category" //RMB: was LNC#59525-6, which is specific to AJCC 7th edition + Based on: NonIndependentFinding + Description: "The presence of metastases in regional lymph nodes, based on criteria defined by the staging system being used." + Value: CodeableConcept + 0..1 StageSuffix + + Element: BreastCancerDistantMetastasesClassification + Concept: SCT#277208005 "M category (observable entity)" //RMB: was LNC#59522-3, which is specific to AJCC 7th edition + Based on: NonIndependentFinding + Description: "The presence of distant metastases, based on criteria defined by the staging system being used." + Value: CodeableConcept + ********** LEGACY END ************/ diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 01c09a0a..dbc48d0c 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -21,8 +21,8 @@ Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" EntryElement: CancerHistologicType // did not use precoordinated codes because only available for clinical and pathologic. -Based on: SimpleCodedNonLaboratoryObservation -Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" +Based on: SimpleCodedNonLaboratoryObservation // MK: Would this use a specimen? If so, it has to be a laboratory observation +Description: "Classification of the cancer by the type of tissue in which the cancer originates. The international standard for the classification and nomenclature of histologies is the International Classification of Diseases for Oncology, Third Edition (ICD-O-3). (Source: NCI)" Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." // SpecificFocusOfFinding value is type CancerDisorderPresent or TumorPresent? FindingResult from CancerHistologicTypeVS @@ -32,8 +32,8 @@ Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LO EntryElement: CancerHistologicGrade // did not use precoordinated codes because only available for clinical and pathologic. -Based on: SimpleCodedNonLaboratoryObservation -Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" +Based on: CodedLaboratoryObservation +Description: "A description of a tumor based on how abnormal the cancer cells and tissue look under a microscope and how quickly the cancer cells are likely to grow and spread. Low-grade cancer cells look more like normal cells and tend to grow and spread more slowly than high-grade cancer cells. (Source: NCI Dictionary of Cancer Terms)" Concept: LNC#21858-6 "Grade Cancer" FindingResult from http://loinc.org/vs/LL213-0 FindingTopicCode is LNC#21858-6 "Grade Cancer" From 5ec4ce6139b95065808ed1261979f9b6def811cc Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 15 Nov 2018 11:15:31 -0500 Subject: [PATCH 107/289] Update shr_oncologycore.txt --- spec/shr_oncologycore.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index dbc48d0c..e805863e 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -22,7 +22,7 @@ Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" EntryElement: CancerHistologicType // did not use precoordinated codes because only available for clinical and pathologic. Based on: SimpleCodedNonLaboratoryObservation // MK: Would this use a specimen? If so, it has to be a laboratory observation -Description: "Classification of the cancer by the type of tissue in which the cancer originates. The international standard for the classification and nomenclature of histologies is the International Classification of Diseases for Oncology, Third Edition (ICD-O-3). (Source: NCI)" +Description: "Classification of the cancer by the type of tissue in which the cancer originates. (Source: NCI)" Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." // SpecificFocusOfFinding value is type CancerDisorderPresent or TumorPresent? FindingResult from CancerHistologicTypeVS From 43c6c5971e95cddd05c18639104b5e8165890cdf Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 15 Nov 2018 11:37:55 -0500 Subject: [PATCH 108/289] Found a couple of minor definition errors in reviewing with May --- spec/shr_oncology.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spec/shr_oncology.txt b/spec/shr_oncology.txt index c11c0fd0..ca99991b 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_oncology.txt @@ -54,7 +54,7 @@ Description: "Diagnosis of cancer originating in the tissues of the breast, and EntryElement: BreastCancerStageInformation Based on: CancerStageInformation Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. -Description: "The stage of a breast cancer." +Description: "The stage of a breast cancer. The panel should not include both a DCISNuclearGrade and a BreastCancerHistologicGrade, since the latter implies an invasive cancer." FindingTopicCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" // SpecificFocusOfFinding value is type BreastCancerDisorderPresent PanelMembers.Observation @@ -236,7 +236,8 @@ Based on: SimpleLaboratoryObservation Concept: MTH#C1709318 Description: "The Oncotype DX test for invasive breast cancer examines the activity of 21 genes in a patient’s breast tumor tissue to provide personalized information for tailoring treatment based on the biology of their individual disease. The value from 0 to 100 indicates the estimated risk of recurrence, with the highest risk indicated by a score greater than 31. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" -Value: Quantity with units UCUM#1 + FindingResult value is type Quantity +// FindingResult.Quantity.Units is UCUM#1 FindingTopicCode is MTH#C1709318 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology From d1b84c1c4b95f84f0eeffe31de26a81ed87b25a1 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 15 Nov 2018 12:12:14 -0500 Subject: [PATCH 109/289] Renamed oncology to brca Since we have oncology core and expect we'll have other modules for other cancers, we should be specific. --- spec/{shr_oncology.txt => shr_brca.txt} | 2 +- spec/{shr_oncology_map.txt => shr_brca_map.txt} | 2 +- spec/{shr_oncology_vs.txt => shr_brca_vs.txt} | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename spec/{shr_oncology.txt => shr_brca.txt} (99%) rename spec/{shr_oncology_map.txt => shr_brca_map.txt} (95%) rename spec/{shr_oncology_vs.txt => shr_brca_vs.txt} (99%) diff --git a/spec/shr_oncology.txt b/spec/shr_brca.txt similarity index 99% rename from spec/shr_oncology.txt rename to spec/shr_brca.txt index c11c0fd0..db08d5d6 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_brca.txt @@ -1,5 +1,5 @@ Grammar: DataElement 5.0 -Namespace: oncology +Namespace: brca Description: "SHR implementation of ASCO requirements." Uses: shr.core, shr.base, shr.entity, mcode diff --git a/spec/shr_oncology_map.txt b/spec/shr_brca_map.txt similarity index 95% rename from spec/shr_oncology_map.txt rename to spec/shr_brca_map.txt index a8fd97a6..18f23fa5 100644 --- a/spec/shr_oncology_map.txt +++ b/spec/shr_brca_map.txt @@ -1,5 +1,5 @@ Grammar: Map 5.1 -Namespace: oncology +Namespace: brca Target: FHIR_STU_3 /* diff --git a/spec/shr_oncology_vs.txt b/spec/shr_brca_vs.txt similarity index 99% rename from spec/shr_oncology_vs.txt rename to spec/shr_brca_vs.txt index a1bfa0af..91bd498b 100644 --- a/spec/shr_oncology_vs.txt +++ b/spec/shr_brca_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: oncology +Namespace: brca CodeSystem: SCT = http://snomed.info/sct From 3edca3b0492d072ecebec00be1546a2dda764316 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 15 Nov 2018 18:56:26 -0500 Subject: [PATCH 110/289] Reintroduced AdverseEvent, updated ClinicalNote, QuestionAnswer, changed oncology to BrCa --- parking_lot/cimi_adverse.txt | 75 ---- parking_lot/cimi_allergy_map.txt | 20 +- spec/shr_adverse.txt | 80 ++++ .../shr_adverse_map.txt | 12 +- .../shr_adverse_vs.txt | 2 +- spec/shr_base_finding.txt | 24 +- spec/shr_brca.txt | 78 ---- spec/shr_brca_vs.txt | 18 - spec/shr_oncologycore.txt | 11 +- spec/shr_oncologycore_vs.txt | 393 +----------------- spec/shr_tumor.txt | 79 ++++ spec/shr_tumor_vs.txt | 13 + 12 files changed, 226 insertions(+), 579 deletions(-) delete mode 100644 parking_lot/cimi_adverse.txt create mode 100644 spec/shr_adverse.txt rename parking_lot/cimi_adverse_map.txt => spec/shr_adverse_map.txt (63%) rename parking_lot/cimi_adverse_vs.txt => spec/shr_adverse_vs.txt (99%) create mode 100644 spec/shr_tumor.txt create mode 100644 spec/shr_tumor_vs.txt diff --git a/parking_lot/cimi_adverse.txt b/parking_lot/cimi_adverse.txt deleted file mode 100644 index bfac5f52..00000000 --- a/parking_lot/cimi_adverse.txt +++ /dev/null @@ -1,75 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: cimi.adverse -Description: "The CIMI Adverse domain contains definitions for describing adverse events and adverse reactions." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity, shr.research, cimi.medication - -CodeSystem: MTH = http://ncimeta.nci.nih.gov - -Element: AdverseEventEntry -Based on: InformationEntry -Description: "An entry in the patient record documenting an untoward or unexpected finding observed during the course of an activity or an activity. Adverse events may capture either a workflow breach that may or may not result in harm but that must be documented for quality improvement purposes or an adverse finding whether or not it can be traceable to an actual workflow breach." - Signed.Attribution.EntityOrRole is type PatientOrPractitionerOrRelatedPerson // to facilitate mapping to FHIR, which only allows Patient, Practitioner, or RelatedPerson as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) -0..1 Type from MedDRAVS // no topic code -1..1 OccurrenceTime -1..1 Seriousness from SeriousnessVS // to be replaced with http://hl7.org/fhir/ValueSet/adverse-event-seriousness in FHIR 4 -//0..1 TBD "PatternOfEvent" // from STDM -0..1 Outcome from http://hl7.org/fhir/ValueSet/adverse-event-outcome -0..1 AdditionalText // aka description -0..* CausalAttribution -0..* ActionTaken -0..1 AssociatedStudy - - Element: Seriousness // aka seriousness - Concept: MTH#C2985911 - Description: "A coded value specifying the level of injury suffered by the subject for whom the event is reported, using the CTCAE coding system." - Value: CodeableConcept - - Element: CausalAttribution - Concept: MTH#C1510821 "Adverse Event Attribution to Product or ProcedurePerformed" - Description: "A possible cause of an observed adverse event, known or theorized. There can be more than one possible cause." - Value: CodeableConcept should be from http://hl7.org/fhir/ValueSet/substance-code or ref(Substance) or ref(Medication) or ref(MedicationUsedStatement) or ref(Device) //ref(ActionPerformedStatement) - 1..1 CauseCategory - 1..1 Certainty - 0..1 RouteIntoBody // aka exposure route - - Element: CauseCategory - Concept: TBD - Description: "Whether the adverse event is attributed to a treatment, course of the disease, unrelated to either, or unknown. " - Value: CodeableConcept from AttributionCategoryVS - - Element: ActionTaken - Concept: TBD - Description: "The action taken as a result of the adverse reaction. May include changing or discontinuing medication, reducing dose, etc." - 1..1 AdditionalText - 0..1 ref(ActionStatement) // such as MedicationChangeStatement - - Element: AssociatedStudy - Description: "The related clinical trial or other formal study." - Value: ref(Study) - - -Element: AdverseReactionTopic -Based on: AssertionTopic -Description: "An instance of a negative response to a substance." -0..* Manifestation -0..* CausalAttribution - - Element: Manifestation - Concept: MTH#C1280464 - Description: "A sign or symptom of an underlying condition." - Value: CodeableConcept from ManifestationVS - 0..1 Severity from http://hl7.org/fhir/ValueSet/reaction-event-severity - -//---------------- Instantiations -------------- - -EntryElement: AdverseReactionPresenceStatement -Based on: AssertionPresenceStatement -1..1 StatementTopic is type AdverseReactionTopic -// AdverseReactionTopic.CausalAttribution value is type CodeableConcept // mapping to FHIR - - -EntryElement: ToxicEventEntry // In truth, this should be a filter on AdverseEventPresenceStatement, not a separate class -Based on: AdverseEventEntry -Concept: MTH#C0542243 -Description: "A grade 3 or 4 adverse reaction to medication, radiation treatment, or other therapy." - Seriousness from ToxicSeriousnessVS diff --git a/parking_lot/cimi_allergy_map.txt b/parking_lot/cimi_allergy_map.txt index 91d4d890..2845dbe4 100644 --- a/parking_lot/cimi_allergy_map.txt +++ b/parking_lot/cimi_allergy_map.txt @@ -4,9 +4,9 @@ Target: FHIR_STU_3 AdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: - PersonOfRecord maps to patient +// PersonOfRecord maps to patient // SourceOfInformation.Value maps to asserter - Signed.Value.EntityOrRole maps to recorder +// Signed.Value.EntityOrRole maps to recorder _Entry.CreationTime maps to assertedDate AdverseSensitivityTopic.AllergenIrritant maps to code AdverseSensitivityTopic.Type maps to type @@ -16,18 +16,18 @@ AdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/Struc Criticality maps to criticality Onset maps to onset[x] MostRecentOccurrenceTime maps to lastOccurrence - AdverseReactionPresenceStatement.AdverseReactionTopic.Manifestation.Severity maps to reaction.severity - AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution.RouteIntoBody maps to reaction.exposureRoute - AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution maps to reaction.substance - AdverseReactionPresenceStatement.AdverseReactionTopic.Manifestation.Value maps to reaction.manifestation - AdverseReactionPresenceStatement.AdverseReactionTopic.AdditionalText maps to reaction.description - AdverseReactionPresenceStatement.Onset maps to reaction.onset + AdverseReaction.Manifestation.Severity maps to reaction.severity + AdverseReaction.CausalAttribution.RouteIntoBody maps to reaction.exposureRoute + AdverseReaction.CausalAttribution.Substance maps to reaction.substance + AdverseReaction.Manifestation.Value maps to reaction.manifestation + AdverseReaction.CommentOrDescription maps to reaction.description + AdverseReaction.Onset maps to reaction.onset NoAdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: - PersonOfRecord maps to patient +// PersonOfRecord maps to patient // SourceOfInformation.Value maps to asserter - Signed.Value.EntityOrRole maps to recorder +// Signed.Value.EntityOrRole maps to recorder _Entry.CreationTime maps to assertedDate AdverseSensitivityTopic.TopicCode maps to code constrain type to 0..0 diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt new file mode 100644 index 00000000..0b2276e7 --- /dev/null +++ b/spec/shr_adverse.txt @@ -0,0 +1,80 @@ +Grammar: DataElement 5.0 +Namespace: shr.adverse +Description: "The CIMI Adverse domain contains definitions for describing adverse events and adverse reactions." +Uses: shr.core, shr.base, shr.entity, shr.medication, shr.research + +CodeSystem: MTH = http://ncimeta.nci.nih.gov + + +// Adverse drug eactions are a subset of adverse events, and are specifically associated with an exposure to a substance + + +Element: AdverseEvent +Based on: InformationItem +Description: "A record of an untoward or unexpected event in a patient under treatment, and which does not necessarily have to have a causal relationship with that treatment. Adverse events may capture either a workflow breach that may or may not result in harm, but must be documented for quality improvement purposes, or an adverse finding whether or not it can be traceable to an actual workflow breach." +// SignedBy.Attribution.EntityOrRole is type PatientOrPractitionerOrRelatedPerson <--to facilitate mapping to FHIR, which only allows Patient, Practitioner, or RelatedPerson as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) +1..1 Patient +0..1 Type from MedDRAVS +1..1 OccurrenceTime +1..1 Seriousness from SeriousnessVS // to be replaced with http://hl7.org/fhir/ValueSet/adverse-event-seriousness in FHIR 4 +//0..1 TBD "PatternOfEvent" // from STDM +0..1 Outcome from http://hl7.org/fhir/ValueSet/adverse-event-outcome +0..1 CommentOrDescription +0..* Manifestation +0..* CausalAttribution +0..* ActionTaken +0..1 AssociatedStudy + + Element: Seriousness + Concept: MTH#C2985911 + Description: "A coded value specifying the level of injury suffered by the subject for whom the event is reported, using the CTCAE coding system." + Value: CodeableConcept + + Element: Manifestation + Concept: MTH#C1280464 + Description: "A sign or symptom of an underlying condition." + Value: CodeableConcept from ManifestationVS + 0..1 Severity // OK as is, same values as http://hl7.org/fhir/ValueSet/reaction-event-severity + + Element: CausalAttribution + Concept: MTH#C1510821 "Adverse Event Attribution to Product or ProcedurePerformed" + Description: "A possible cause of an observed adverse event, known or theorized. There can be more than one possible cause." + 1..1 PossibleCause + 1..1 CauseCategory + 1..1 Certainty + 0..1 RouteIntoBody // aka exposure route + + Element: PossibleCause + Concept: TBD + Description: "The possible cause of the adverse event." + Value: CodeableConcept should be from http://hl7.org/fhir/ValueSet/substance-code or ref(Substance) or ref(Medication) or ref(MedicationAdministered) or ref(MedicationStatement) or ref(Device) + + Element: CauseCategory + Concept: TBD + Description: "Whether the adverse event is attributed to a treatment, course of the disease, unrelated to either, or unknown. " + Value: CodeableConcept from AttributionCategoryVS + + Element: ActionTaken + Concept: TBD + Description: "The action taken as a result of the adverse reaction. May include changing or discontinuing medication, reducing dose, etc." + 1..1 CommentOrDescription + 0..1 ref(ActionStatement) // such as MedicationChangeStatement + + Element: AssociatedStudy + Description: "The related clinical trial or other formal study." + Value: ref(Study) + +// ***********NOT COMPLETE************* +EntryElement: AdverseDrugReaction +Based on: AdverseEvent +Description: "A noxious and unintended response to a medicinal product. To be considered an ADR, a causal relationship must be at least suspected by the medical practitioner. The principal difference between an adverse drug reaction (ADR) an adverse event (AE) and is that a causal relationship is suspected for the ADR, but is not required for the AE. Adverse drug reactions are therefore a subset of adverse event reports." +//1..* CausalAttribution +// CausalAttribution.PossibleCause value is type ref(Medication) or ref(MedicationAdministered) or ref(MedicationStatement) + + +EntryElement: ToxicAdversedDrugReaction +// In truth, this should be a filter on AdverseReaction, not a separate class +Based on: AdverseDrugReaction +Concept: MTH#C0542243 +Description: "A grade 3 or 4 adverse reaction to medication, radiation treatment, or other therapy." + Seriousness from ToxicSeriousnessVS \ No newline at end of file diff --git a/parking_lot/cimi_adverse_map.txt b/spec/shr_adverse_map.txt similarity index 63% rename from parking_lot/cimi_adverse_map.txt rename to spec/shr_adverse_map.txt index d1cecc61..e9b56da9 100644 --- a/parking_lot/cimi_adverse_map.txt +++ b/spec/shr_adverse_map.txt @@ -1,19 +1,19 @@ Grammar: Map 5.1 -Namespace: cimi.adverse +Namespace: shr.adverse Target: FHIR_STU_3 -AdverseEventEntry maps to AdverseEvent: - Signed.Value.EntityOrRole maps to recorder +AdverseEvent maps to AdverseEvent: +// _Entry.SignedBy.Value.EntityOrRole maps to recorder ?? // EntityOrRole is the name of the property; don't say Signed.Value.Role Type maps to type - AdditionalText maps to description - PersonOfRecord maps to subject + CommentOrDescription maps to description + Patient maps to subject AssociatedStudy maps to study Seriousness maps to seriousness OccurrenceTime maps to date Outcome maps to outcome // FHIR TODO: AdverseEvent.eventParticipant is underdefined (no role) - CausalAttribution maps to suspectEntity.instance + CausalAttribution.PossibleCause maps to suspectEntity.instance CausalAttribution.Certainty maps to suspectEntity.causalityAssessment //AdverseReactionStatement maps to ??? diff --git a/parking_lot/cimi_adverse_vs.txt b/spec/shr_adverse_vs.txt similarity index 99% rename from parking_lot/cimi_adverse_vs.txt rename to spec/shr_adverse_vs.txt index 71b04022..48144d55 100644 --- a/parking_lot/cimi_adverse_vs.txt +++ b/spec/shr_adverse_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: cimi.adverse +Namespace: shr.adverse CodeSystem: MDR = http://www.meddra.org CodeSystem: MTH = http://ncimeta.nci.nih.gov diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 5ed7f2a8..7ef84d0a 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -14,6 +14,7 @@ Description: "A finding that does not or cannot stand alone, or a component of 1..1 FindingTopicCode // Question, test name, or condition 0..1 ExceptionValue 0..1 ReferenceRange // included here only because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. +// TODO: 0..1 Interpretation Element: FindingResult Description: "The value or result of a test, evaluation, or judgment, for example, a systolic blood pressure, or if a condition or body structure is present or absent." @@ -359,13 +360,28 @@ Description: "A finding that a condition is or was not present in the subject at 0..* AnatomicalLocation EntryElement: ClinicalNote -Based on: Finding +Based on: SimpleNonLaboratoryObservation Concept: MTH#C0747978 "Progress Note" -Description: "An entry concerning a patient where the result is a narrative text." -// 0..0 Value +Description: "An entry concerning a patient where the result is a narrative text. While all findings have a CommentOrDescription field, the clinical note should put the narrative in the FindingResult field, since this is the first place to look for a result that is a narrative." + FindingTopicCode is MTH#C0747978 "Progress Note" + FindingResult value is type string 0..0 ReferenceRange 1..1 Patient -1..1 CommentOrDescription // make required +//1..1 CommentOrDescription // put into FindingResult + +EntryElement: QuestionAnswer +Based on: SimpleNonLaboratoryObservation +Concept: TBD +Description: "A simple question-answer pair. FindingTopicCode should contain the identifying code for the question, and the FindingResult the answer. FindingResult is not constrained because the answer could be a string, concept code, number, etc." +0..0 ReferenceRange +1..1 Patient +0..1 QuestionText + + Element: QuestionText + Concept: TBD + Description: "The text of the question as it should be asked or is phrased in questionnaire." + Value: string + Abstract Element: RelationshipExistenceAssertion Based on: ExistenceAssertion diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 2b6ed1ff..1b62a281 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -283,22 +283,6 @@ The is currently no LOINC code for Mammaprint test." /************* LEGACY BEGIN ************ -EntryElement: DiseaseProgression -Based on: Observation -Concept: MTH#C0421176 "Progression" -Description: "A finding related to the current trend of a particular existing disease. This concept is most often used for chronic and incurable diseases where the status and trendline of the disease is an important determinant of therapy and prognosis. The specific disorder being evaluated must be cited in the Focus_Reference or Focus_CodeableConcept as a reference to a Condition." -Value: CodeableConcept from ProgressionVS - FindingTopicCode is MTH#C0421176 "Progression" -0..* ProgressionEvidence -// "ProgressionEvidence" is somewhat related to FindingMethod, which represents the test or procedure used to generate the result; it is typically a LOINC code (0..1) -0..0 Specimen -0..0 NonIndependentFinding -//0..0 Precondition -0..0 ReferenceRange // applies to a quantitative measurement only - - Element: ProgressionEvidence - Description: "The type of evidence considered in determining disease progression." - Value: CodeableConcept from ProgressionEvidenceVS Element: BreastCancerPrimaryTumorClassification Concept: SCT#78873005 "T category" @@ -393,68 +377,6 @@ includes 0..1 OtherReceptorScoringSystem Based on: NonIndependentFinding Description: "A scoring system other than Allred." -EntryElement: TumorDimensions -Based on: SimpleCodedObservation -Concept: MTH#C4086369 -0..0 Value - FindingTopicCode is TBD#TBD - DiagnosticService is #pathology - NonIndependentFinding -includes 0..1 TumorPrimaryDimensionSize -includes 0..1 TumorSecondaryDimensionSize -includes 0..1 SizeOfGrossTumorBed - - Element: TumorPrimaryDimensionSize - Description: "The longest diameter of the primary tumor." - Based on: NonIndependentFinding - Concept: TBD - Value: Quantity with units UCUM#mm - - Element: TumorSecondaryDimensionSize - Description: "The longest perpendicular diameter of the primary tumor." - Based on: NonIndependentFinding - Concept: TBD - Value: Quantity with units UCUM#mm - - Element: SizeOfGrossTumorBed - Based on: NonIndependentFinding - Concept: TBD - Description: "The largest dimension of the gross tumor bed/fibrotic area." - Value: Quantity with units UCUM#mm - - -EntryElement: TumorMargins -Based on: SimpleCodedObservation -Concept: MTH#C4086369 -Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." -Value: CodeableConcept from PositiveNegativeVS - FindingTopicCode is MTH#C4086369 - DiagnosticService is #pathology - NonIndependentFinding -includes 0..1 TumorMarginDescription -includes 0..1 Cellularity // not sure this belongs here -includes 0..1 PercentageInSituCarcinoma // not sure this belongs here -// Do we need to record the method? whether the result of imaging, or study of a removed tumor after lumpectomy? - - Element: TumorMarginDescription - Concept: TBD - Based on: NonIndependentFinding - Description: "Description of the edge or border of tumor in situ by radiologist or of removed tumor by pathologist." - Value: CodeableConcept from TumorMarginDescriptionVS - - Element: Cellularity - Concept: MTH#C4055283 - Based on: NonIndependentFinding - Description: "Percentage of cells in a sample that are cancerous" - Value: Quantity with units UCUM#% - - Element: PercentageInSituCarcinoma - Based on: NonIndependentFinding - Concept: TBD - Description: "The percentage of the cancer that is in situ, as opposed to invading other tissues." - Value: Quantity with units UCUM#% - - Element: Ki-67LabelingIndex Based on: SimpleCodedObservation Concept: MTH#C4049944 diff --git a/spec/shr_brca_vs.txt b/spec/shr_brca_vs.txt index 91bd498b..a480e255 100644 --- a/spec/shr_brca_vs.txt +++ b/spec/shr_brca_vs.txt @@ -211,24 +211,6 @@ SCT#450501000124104 "Light intensity (qualifier value)" SCT#4901000175103 "Moderate intensity (qualifier value)" SCT#450511000124101 "High intensity (qualifier value)" - -ValueSet: ProgressionVS -MTH#C0677874 "Complete response or remission; no measurable or observable evidence of cancer." -MTH#C0015250 "Complete resection/excision of cancerous tumor" -MTH#C1272745 "Improving, responding to treatment" -MTH#C0205360 "Stable, neither improving nor worsening" -MTH#C1546960 "Worsening, disease progressing" -MTH#C3858734 "Insufficient evidence" - -ValueSet: ProgressionEvidenceVS -MTH#C0011923 "Progression determined based on imaging" -MTH#C0030664 "Progression determined based on pathology" -MTH#C1457887 "Progression determined based on physical signs or symptoms" -MTH#C0031809 "Progression determined based on physical examination" -MTH#C0005516 "Progression determined based on biomarkers" - - - /* NOT USED CodeSystem: MTH = http://ncimeta.nci.nih.gov diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index e805863e..a4c7ce12 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -42,14 +42,21 @@ Concept: LNC#21858-6 "Grade Cancer" 0..0 Device EntryElement: CancerProgression -Based on: SimpleCodedNonLaboratoryObservation +Based on: CodedNonLaboratoryObservation Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" Concept: SCT#246453008 "Course of illness (attribute)" FindingResult from CancerProgressionVS FindingTopicCode is SCT#246453008 "Course of illness (attribute)" // SpecificFocusOfFinding value is type CancerDisorderPresent 0..0 AnatomicalLocation -0..0 Device +0..0 Device +// CancerProgressionEvidence is not yet part of M-CODE, but I don't see a better way to include it for FluxNotes +0..* CancerProgressionEvidence + + Element: CancerProgressionEvidence + Description: "The type of evidence considered in determining disease progression." + Value: CodeableConcept from CancerProgressionEvidenceVS + EntryElement: CancerStageInformation Based on: Observation diff --git a/spec/shr_oncologycore_vs.txt b/spec/shr_oncologycore_vs.txt index ebee158e..2f0653f8 100644 --- a/spec/shr_oncologycore_vs.txt +++ b/spec/shr_oncologycore_vs.txt @@ -20,6 +20,14 @@ MTH#C0205360 "Stable, neither improving nor worsening" // SCT#58158008 Stable MTH#C1546960 "Worsening, disease progressing" // SCT#230993007 Worsening (qualifier value) MTH#C3858734 "Insufficient evidence" +ValueSet: CancerProgressionEvidenceVS +MTH#C0011923 "Cancer progression determined based on imaging" +MTH#C0030664 "Cancer progression determined based on pathology" +MTH#C1457887 "Cancer progression determined based on physical signs or symptoms" +MTH#C0031809 "Cancer progression determined based on physical examination" +MTH#C0005516 "Cancer progression determined based on biomarkers" + + ValueSet: StageTimingPrefixVS //TODO: the value set is missing codes for recurrence and anatomical staging. //TODO: need new terms for post-therapeutic clinical and pathological staging. @@ -47,388 +55,3 @@ ValueSet: StageSuffixVS Description: "Modifiers related to the staging category. Examples of modifiers include the type of procedure performed in determining the pathological node classification. The staging suffix notation is the abbreviation enclosed by parentheses. For example, CN1a(sn) where (sn) designates that the N category was identified based on a sentinel node biopsy." #sn "sentinel node biopsy" #f "Fine needle aspiration or core biopsy" - -/* BrCa value set - ValueSet: StagingMethodVS - Description: "The methodology or standard used to assign the cancer's overall stage." - #ajcc_v7 "AJCC Cancer Staging Manual 7th Edition" - #ajcc_v8 "AJCC Cancer Staging Manual 8th Edition" - #seer_eod "SEER Extent of Disease 2018" - #seer_ss77 "SEER Summary Stage 1977" - #seer_ss00 "SEER Summary Stage 2000" - #seer_ss18 "SEER Summary Stage 2018" -*/ - - -ValueSet: BreastSiteVS -Description: "Topography of the breast. Codes are drawn from Snomed and correspond to ICD-O-3." -SCT#24142002 "Nipple structure (body structure) - corresponds to ICDO3#C50.0" -SCT#49058007 "Structure of central portion of breast (body structure) - corresponds to ICDO3#C50.1" -SCT#77831004 "Structure of upper inner quadrant of breast (body structure) - corresponds to ICDO3#C50.2" -SCT#19100000 "Structure of lower inner quadrant of breast (body structure) - corresponds to ICDO3#C50.3" -SCT#76365002 "Structure of upper outer quadrant of breast (body structure) - corresponds to ICDO3#C50.4" -SCT#33564002 "Structure of lower outer quadrant of breast (body structure) - corresponds to ICDO3#C50.5" -SCT#38412008 "Structure of axillary tail of breast (body structure) - corresponds to ICDO3#C50.6" -SCT#276825009 "Overlapping sites (qualifier value) - corresponds to ICDO3#C50.8" -SCT#76752008 "Breast structure (body structure) - corresponds to ICDO3#C50.9" // NOS - - -/********* LEGACY STUFF ************ -ValueSet: BreastSpecimenTypeVS -Description: "The type of specimen obtained from the breast. Codes are drawn from Snomed CT where available. Local codes are used where Snomed codes are currently unavailable." -SCT#119295008 "Specimen obtained by aspiration (specimen)" // mlt: replaces #aspirate "Aspirate" -#core "Core biopsy specimen" // mlt: no equivalent SCT concept. Concepts break into core needle and image guided specimen types -#excision "Excision specimen without wire loc" // mlt: no equivalent SCT concept with specimen semantic tag. -#wire "Excision specimen with wire loc" // mlt: no equivalent SCT concept with specimen semantic tag. -SCT#16215491000119108 "Specimen from breast duct obtained by excision (specimen)" // mlt: replaces #duct "Nipple duct excision" -SCT#122595009 "Specimen from breast obtained by total mastectomy (specimen)" // mlt: replaces #mastectomy "Total mastectomy" - - -ValueSet: BreastSpecimenCollectionMethodVS -Description: "The surgical method used to obtain the tissue sample." -SCT#9911007 "Core needle biopsy (procedure)" -SCT#48635004 "Fine needle biopsy (procedure)" -SCT#172043006 "Simple mastectomy (procedure)" -SCT#237372000 "Excisional biopsy of breast (procedure)" - -// Can we add synonyms (both Snomed and ICD-O-3)? -ValueSet: BreastCancerTypeVS -Description: "Histologic types of breast cancer. Codes are drawn from Snomed. Correspondence to ICD-O-3 is specified. Local codes are used where Snomed codes are currently unavailable." -SCT#86049000 "Malignant neoplasm, primary (morphologic abnormality)" -SCT#68956006 "Carcinoma in situ (morphologic abnormality) - corresponds to ICDO3#8010 Carcinoma, NOS" -SCT#65692009 "Spindle cell carcinoma (morphologic abnormality)- corresponds to ICDO3#8032 Spindle cell carcinoma" -SCT#128631001 "Carcinoma with osteoclast-like giant cells (morphologic abnormality)- corresponds to ICDO3#8035 Carcinoma with osteoclast-like stromal giant cells" -SCT#74364000 "Small cell carcinoma (morphologic abnormality)- corresponds to ICDO3#8041 Neuroendocrine carcinoma, poorly differentiated (small cell carcinoma)" -SCT#59529006 "Squamous cell carcinoma in situ (morphologic abnormality)- corresponds to ICDO3#8070 Squamous cell carcinoma" -SCT#35917007 "Adenocarcinoma, no subtype (morphologic abnormality)- corresponds to ICDO3#8140 Adenocarcinoma, N" -SCT#11671000 "Adenoid cystic carcinoma (morphologic abnormality)- corresponds to ICDO3#8200 Adenoid cystic carcinoma" -SCT#30156004 "Cribriform carcinoma (morphologic abnormality)- corresponds to ICDO3#8201 Cribriform carcinoma" -SCT#19665009 "Tubular adenoma (morphologic abnormality)- corresponds to ICDO3#8211 Tubular carcinoma" -SCT#55937004 "Neuroendocrine carcinoma (morphologic abnormality)- corresponds to ICDO3#8246 Neuroendocrine tumor, well-differentiated" -SCT#128662002 "Adenocarcinoma with mixed subtypes (morphologic abnormality)- corresponds to ICDO3#8255 Adenocarcinoma with mixed subtypes" -SCT#89439007 "Oxyphilic adenoma (morphologic abnormality)- corresponds to ICDO3#8290 Oncocytic carcinoma" -SCT#3839000 "Lipid-rich carcinoma (morphologic abnormality)- corresponds to ICDO3#8314 Lipid-rich carcinoma" -SCT#74280008 "Glycogen-rich carcinoma (morphologic abnormality)- corresponds to ICDO3#8315 Glycogen-rich clear cell carcinoma" -SCT#36318001 "Apocrine adenoma (morphologic abnormality)- corresponds to ICDO3#8401 Apocrine adenocarcinoma" -SCT#78424008 "Sebaceous adenoma (morphologic abnormality)- corresponds to ICDO3#8410 Sebaceous carcinoma" -SCT#39892006 "Mucoepidermoid tumor (morphologic abnormality)- corresponds to ICDO3#8430 Mucoepidermoid carcinoma" -SCT#33170000 "Mucinous adenoma (morphologic abnormality)- corresponds to ICDO3#8480 Mucinous carcinoma" -SCT#86616005 "Intraductal carcinoma, noninfiltrating (morphologic abnormality)- corresponds to ICDO3#8500 Ductal carcinoma" -SCT#36425007 "Comedocarcinoma (morphologic abnormality)- corresponds to ICDO3#8501 Comedocarcinoma, NOS" -SCT#41919003 "Juvenile carcinoma of the breast (morphologic abnormality)- corresponds to ICDO3#8502 Secretory carcinoma" -SCT#30566004 "Noninfiltrating intraductal papillary adenocarcinoma (morphologic abnormality)- corresponds to ICDO3#8503 Intraductal papillary carcinoma" -SCT#47488001 "Intracystic papillary adenoma (morphologic abnormality)- corresponds to ICDO3#8504 Encapsulated papillary carcinoma" -SCT#128696009 "Intraductal micropapillary carcinoma (morphologic abnormality)- corresponds to ICDO3#8507 Invasive micropapillary carcinoma" -SCT#421980000 "Papillary carcinoma, solid (morphologic abnormality)- corresponds to ICDO3#8509 Solid papillary carcinoma" -SCT#32913002 "Medullary carcinoma (morphologic abnormality)- corresponds to ICDO3#8510 Medullary carcinoma" -SCT#128698005 "Atypical medullary carcinoma (morphologic abnormality)- corresponds to ICDO3#8513 Atypical medullary carcinoma" -SCT#58477004 "Infiltrating ductular carcinoma (morphologic abnormality)- corresponds to ICDO3#8520 Invasive lobular carcinoma" -SCT#35232005 "Infiltrating duct and lobular carcinoma (morphologic abnormality)- corresponds to ICDO3#8521 Infiltrating ductular carcinoma" -SCT#128700001 "Infiltrating duct mixed with other types of carcinoma (morphologic abnormality)- corresponds to ICDO3#8522 Infiltrating duct and lobular carcinoma" -SCT#128701002 "Infiltrating lobular mixed with other types of carcinoma (morphologic abnormality)- corresponds to ICDO3#8524 Infiltrating lobular mixed with other types of carcinoma" -SCT#128702009 "Polymorphous low grade adenocarcinoma (morphologic abnormality)- corresponds to ICDO3#8525 Polymorphous carcinoma" -SCT#32968003 "Inflammatory carcinoma (morphologic abnormality)- corresponds to ICDO3#8530 Inflammatory carcinoma" -SCT#2985005 "Paget's disease, mammary (morphologic abnormality)- corresponds to ICDO3#8540 Paget disease of the nipple" -SCT#82591005 "Paget's disease and infiltrating duct carcinoma of breast (morphologic abnormality)- corresponds to ICDO3#8541 Paget disease and infiltrating duct carcinoma of breast" -SCT#54666007 "Paget's disease and intraductal carcinoma of breast (morphologic abnormality)- corresponds to ICDO3#8543 Paget disease and intraductal carcinoma" -SCT#15176003 "Adenocarcinoma with squamous metaplasia (morphologic abnormality)- corresponds to ICDO3#8570 Low-grade adenosquamous carcinoma" -#8571 "Metaplastic carcinoma with mesenchymal differentiation- corresponds to ICDO3#8571 Metaplastic carcinoma with mesenchymal differentiation" -SCT#733875004 "Fibromatosis-like metaplastic carcinoma (morphologic abnormality)- corresponds to ICDO3#8572 Fibromatosis-like metaplastic carcinoma" -SCT#128704005 "Adenocarcinoma with neuroendocrine differentiation (morphologic abnormality)- corresponds to ICDO3#8574 Carcinoma with neuroendocrine differentiation" -SCT#128705006 "Metaplastic carcinoma (morphologic abnormality)- corresponds to ICDO3#8575 Metaplastic carcinoma" -SCT#69291002 "Myoepithelioma (morphologic abnormality)- corresponds to ICDO3#8982 Myoepithelial carcinoma" -SCT#128765009 "Adenomyoepithelioma (morphologic abnormality)- corresponds to ICDO3#8983 Adenomyoepithelioma with carcinoma" - - -ValueSet: BreastCancerDetectionVS -Description: "Basis for cancer detection, from HL7 CDA® R2 Implementation Guide: Clinical Oncology Treatment Plan and Summary, Release 1 - US Realm Standard for Trial Use Release 3, October 2016, Volume 2 — Templates and Supporting Material." -SCT#360156006 "Screening" -SCT#160237006 "History/Symptoms" -SCT#261087003 "Incidental" -//TO DO methods of observation, limit to direct visual observation (32750006), palpation (113011001), or imaging procedures (363679005) such as computed tomography (77477000), plain x-ray, MRI (113091000), ultrasonography, etc. - -ValueSet: MorphologyBehaviorVS -Description: "The morphologic behavior of the cancer. These are the suffix to the ICD-O-3 histologic type codes. Codes are presented as local codes because they are portions of the full code to be post-coordinated, and not full ICD-O-3 codes." -#0 "Benign" -#1 "Uncertain whether benign or malignant" -#2 "In situ" -#3 "Malignant, primary site" -#6 "Malignant, metastatic site" -#9 "Malignant, uncertain whether primary or metastatic site" - -ValueSet: StagingMethodVS -Description: "The methodology or standard used to assign the cancer's overall stage." -#ajcc_v7 "AJCC Cancer Staging Manual 7th Edition" -#ajcc_v8 "AJCC Cancer Staging Manual 8th Edition" -#seer_eod "SEER Extent of Disease 2018" -#seer_ss77 "SEER Summary Stage 1977" -#seer_ss00 "SEER Summary Stage 2000" -#seer_ss18 "SEER Summary Stage 2018" - -ValueSet: StageTimingPrefixVS -Description: "When staging was done, relative to treatment events (qualifier)." -#cli "Clinical stage: Staging performed prior to surgery, based on evidence such as physical examination, imaging, and/or biopsy." -#path "Pathologic stage: Staging performed based on examination of tissue samples removed during surgery, in addition to physical examination and imaging." -#postther_cli "Post-therapeutic (post-neoadjuvant) clinical staging based on clinical examination after the first treatment with systemic drugs or radiation, when no surgery has been performed." -#postther_path "Post-therapeutic (post-neoadjuvant) pathologic staging, based on tissue samples removed during surgery after the first treatment with systemic drugs or radiation." - -ValueSet: NottinghamCombinedGradeVS -Description: "Combined score from the Nottingham grading system." -SCT#369790002 "Nottingham Combined Grade I: 3-5 points (finding)" -SCT#369791003 "Nottingham Combined Grade II: 6-7 points (finding)" -SCT#369792005 "Nottingham Combined Grade III: 8-9 points (finding)" - -ValueSet: NottinghamNullVS -//MK 7/14/2018 Added one missing code for the normative list. -Description: "Data absent reasons (null values) for Nottingham Combined Grade scores. Removes non-applicable values from the ExceptionValueVS, and adds values that align with LOINC normative answer list LL4561-8" -LNC#LA27219-7 "Only microinvasion present (not graded)" -LNC#LA27220-5 "No residual invasive carcinoma after presurgical (neoadjuvant) therapy" -LNC#LA11884-6 "Indeterminate" -LNC#LA27221-3 "Score cannot be determined" - -ValueSet: NuclearGradeVS -Description: "The nuclear grade describes how closely the nuclei of cancer cells look like the nuclei of normal breast cells. In general, the higher the nuclear grade, the more abnormal the nuclei are and the more aggressive the tumor cells tend to be. The nuclear grade is a part of overall tumor grade. Local codes are used due to unavailability of suitable LOINC and Snomed codes." -// MK 7/15/2018 -- found suitable Snomed codes -SCT#54102005 "G1 grade (finding) - well differentiated" -SCT#1663004 "G2 grade (finding) - moderately differentiated" -SCT#61026006 "G3 grade (finding) - pooly differentiated" -SCT#258245003 "G4 grade (finding) - undifferentiated" - -ValueSet: TubuleFormationScoreVS -// MK 7/14/2018 -- Since we identify the test by LOINC, and that test has a normative value set, the results should always be reported using the normative value set. -Description: "The degree of glandular differentiation or tubule formation in breast carcinoma. Aligns with normative LOINC answer list LL4380-3. Less aggressive cancers have more tubule formation, with scores assigned as follows: -1 = greater than 75% of the tumor area contains tubular or glandular structures -2 = 10 to 75% of the tumor area contains tubular structures -3 = less than 10% of the tumor area contains tubular structures" -//SCT#369778004 "Breast tubule formation: Majority of tumor >75% (score = 1)" -//SCT#369779007 "Breast tubule formation: Moderate 10% to 75% (score = 2)" -//SCT#369780005 "Breast tubule formation: Minimal <10% (score = 3)" -LNC#LA27216-3 "Score 1: >75% of tumor area forming glandular/tubular structures" -LNC#LA27217-1 "Score 2: 10% to 75% of tumor area forming glandular/tubular structures" -LNC#LA27218-9 "Score 3: <10% of tumor area forming glandular/tubular structures " - -ValueSet: NuclearPleomorphismScoreVS -// MK 7/14/2018 -- Since we identify the test by LOINC, and that test has a normative value set, the results should always be reported using the normative value set. -Description: "Value set containing the scores for nuclear pleomorphism. Aligns with LOINC normative answer list LL4382-9" -//SCT#384735004 "Small regular nuclei (score=1)" -//SCT#384737007 "Moderate increase in size, etc (score = 2)" -//SCT#384738002 "Marked variation in size, nucleoli, chromatin clumping, etc (score = 3)" -LNC#LA27222-1 "Score 1: Nuclei small with little increase in size in comparison with normal outlines, uniform clear chromatin, little variation in size." -LNC#LA27223-9 "Score 2: Cells larger than normal with open vesicular nuclei, visible nucleo size and shape." -LNC#LA27224-7 "Score 3: Vesicular nuclei, often with prominent nucleoli, exhibited marked occasionally with very large and bizzare forms." - - -ValueSet: NottinghamComponentNullVS -// MK 7/14/2018 -- Since we identify the test by LOINC, and that test has a normative value set, the null values should align to the normative value set. -Description: "Data absent reasons (null values) for nuclear pleomorphism count and tubule formation score. Aligns with LOINC normative answer lists LL4382-9 and LL4380-3." -LNC#LA27219-7 "Only microinvasion present (not graded)" -LNC#LA27220-5 "No residual invasive carcinoma after presurgical (neoadjuvant) therapy" -LNC#LA27221-3 "Score cannot be determined" - -ValueSet: MitoticCountScoreVS -// MK 7/14/2018 -- Since we identify the test by LOINC, and that test has a normative value set, the results should always be reported using the normative value set. -Description: "The degree of mitotic activity in breast carcinoma is one component of the Nottingham histologic grade (NHG). The specific scores assigned to the number of mitoses depends on the size of the high power fields (HPF). For example, for a HPF size of 0.274 mm^2, less than 10 mitoses per 10 HPF gets a score of 1, 10-19 gets a score of 2, and greater than or equal to 20 gets a score of 3. When larger or smaller HPFs are used, the cutoffs for the number of mitoses corresponding to a specific score are adjusted according to published guidelines." -LNC#LA27225-4 "Score 1" -LNC#LA27226-2 "Score 2" -LNC#LA27227-0 "Score 3" - -ValueSet: MitoticCountScoreNullVS -Description: "Data absent reasons (null values) for mitotic count. Aligns with LOINC normative answer list LL4383-7." -LNC#LA27220-5 "No residual invasive carcinoma after presurgical (neoadjuvant) therapy" -LNC#LA27221-3 "Score cannot be determined" - - -ValueSet: HER2FISHMethodVS -// TODO: request LOINC codes (probably pre-coordinated with FISH) -// MK 7/14/2018 --- found Snomed codes for single and double proble -Description: "Value set containing In Situ Hybridization methods of determining HER2 status" -SCT#257430009 "Double probe" -SCT#257453005 "Single probe" - -ValueSet: HER2byIHCScoreVS -Description: "Value set containing possible scores resulting from determining HER2 status by immunohistochemistry. Based on LNC#LL4396-9 answer list." -LNC#LA6111-4 "0" -LNC#LA11841-6 "1+" -LNC#LA11842-4 "2+" -LNC#LA11843-2 "3+" - -ValueSet: HER2byIHCScoreNullVS -Description: "Null values permissible for HER2 status by immunohistochemistry. Based on LNC#LL4396-9 answer list." -LNC#LA11884-6 "Indeterminate" - -ValueSet: RecurrenceRiskScoreInterpretationVS -Description: "Interpretations of risk as high, intermediate, or low. Answer set taken from LOINC LL3198-0." -#LA19541-4 "High risk of recurrence." -#LA22380-2 "Intermediate risk of recurrence." -#LA19542-2 "Low risk of recurrence." - -// MK 7/15/2018 -- Weak, strong are qualifier values. Weak staining would be a finding. Is it wrong to use a generic qualifier as a finding? The fact it applies to staining is a type of precoordination (the question is contained in the answer), turning a question-answer into a unary assertion. I view it as equivalent to a numerical answer -- a number cannot contain the question. -ValueSet: StainingIntensityVS -Description: "Part of the Allred scoring, based on the intensity of that staining, on a scale of 0 (Negative) to 3 (Strong)." -SCT#260413007 "None (qualifier value)" -SCT#450501000124104 "Light intensity (qualifier value)" -SCT#4901000175103 "Moderate intensity (qualifier value)" -SCT#450511000124101 "High intensity (qualifier value)" - - -ValueSet: ProgressionVS -MTH#C0677874 "Complete response or remission; no measurable or observable evidence of cancer." -MTH#C0015250 "Complete resection/excision of cancerous tumor" -MTH#C1272745 "Improving, responding to treatment" -MTH#C0205360 "Stable, neither improving nor worsening" -MTH#C1546960 "Worsening, disease progressing" -MTH#C3858734 "Insufficient evidence" - -ValueSet: ProgressionEvidenceVS -MTH#C0011923 "Progression determined based on imaging" -MTH#C0030664 "Progression determined based on pathology" -MTH#C1457887 "Progression determined based on physical signs or symptoms" -MTH#C0031809 "Progression determined based on physical examination" -MTH#C0005516 "Progression determined based on biomarkers" - - - -/* NOT USED - -CodeSystem: MTH = http://ncimeta.nci.nih.gov -CodeSystem: ICDO3 = https://seer.cancer.gov/icd-o-3/ -CodeSystem: HGNC = http://www.genenames.org -CodeSystem: REFSEQ = https://www.ncbi.nlm.nih.gov/refseq - -#C50.0 "Nipple" -#C50.1 "Central portion of the breast." -#C50.2 "Upper inner quadrant" -#C50.3 "Lower inner quadrant " -#C50.4 "Upper outer quadrant" -#C50.5 "Lower outer quadrant" -#C50.6 "Axillary tail of breast" -#C50.8 "Overlapping lesion of breast" // C50.8 is for tumors that overlap between two quadrants (independent of which quadrants), and there is not code for upper, lower, left, or right HALVES of breast structure. -#C50.9 "Breast, not otherwise specified (NOS)" - - -ValueSet: HER2StatusVS -Description: "HER2 status overall result" -#not_amplified "Negative/Not Amplified (IHC Score 0)" -#negative "Negative (IHC Score 1+) " -#equivocal "Equivocal (IHC Score 2+)" -#positive "Positive/Amplified (IHC Score 3+)" - - -ValueSet: GeneIdentifierVS -Description: "A unique code for a gene, including protein coding genes, ncRNA genes and pseudogenes, to allow unambiguous communication, drawn from HUGO Gene Nomenclature Committee." -Includes codes from HGNC - -ValueSet: RefseqVS -Includes codes from REFSEQ - -ValueSet: EstrogenAntibodyVS -Description: "Antibodies relevant to Estrogen receptor." -#SP1 "SP1 - CAP#31093" -#6F11 "6F11 - CAP#31094" -#1D5 "1D5 - CAP#31095" - -ValueSet: ProgesteroneAntibodyVS -Description: "Antibodies relevant to Estrogen receptor." -#1E2 "1E2 - CAP#31103" -#636 "636 - CAP#31104" -#16 "16 - CAP#31105" -#SP2 "SP2 - CAP#31097" -#1A6 "1A6 - CAP#31098" -#1294 "1294 - CAP#32115" -#312 "312 - CAP#32116" - - -ValueSet: HER2AntibodyIHCVS -Description: "Antibodies relevant to HER2 receptor (IHC Test)." -#4B5 "4B5 - CAP#31117" -#Hercep "HercepTest - CAP#31118" -#A0485 "A0485 - CAP#31119" -#SP3 "SP3 - CAP#31120" -#CB11 "CB11 - CAP#31121" - - -ValueSet: Ki67AntibodyVS -Description: "Antibodies relevant to Ki-67 test." -#MIB1 "MIB1 - CAP#31125" -#SP6 "SP6 - CAP#31126" -#MM1 "MM1 - CAP#32169" -#30-9 "30-9 - CAP#32160" -#IR/IS62 "IR / IS626 - CAP#32168" - -ValueSet: TumorMarginDescriptionVS -SCT#129738007 "Lesion with circumscribed margin" -SCT#129741003 "Lesion with indistinct margin" -SCT#129739004 "Lesion with microlobulated margin" -SCT#129740002 "Lesion with obscured margin" -SCT#129742005 "Lesion with spiculated margin" -// TODO: Add codes for additional tumor margin descriptions (from Penrad) -// Angular margin, Smooth margin, Intraductal extension, Irregular margin, Lobulated margin, Macrolobulated margin, Non circumscribed margin - - -ValueSet: ReceptorVS -Includes codes descending from SCT#116647005 "Receptor (substance)" - -// Eliminated in favor of generic LOINC List -ValueSet: OncotypeDxInvasiveRiskScoreInterpretationVS -Description: "Intepretation of OncotypeDX Recurrence Score for invasive cancers." -#low_risk "Recurrence Score lower than 18: The cancer has a low risk of recurrence. The benefit of chemotherapy is likely to be small and will not outweigh the risks of side effects." -#intermediate_risk "Recurrence Score of 18 up to and including 30: The cancer has an intermediate risk of recurrence. It’s unclear whether the benefits of chemotherapy outweigh the risks of side effects." -#high_risk "Recurrence Score greater than or equal to 31: The cancer has a high risk of recurrence, and the benefits of chemotherapy are likely to be greater than the risks of side effects." - -ValueSet: OncotypeDxDCISRiskScoreInterpretationVS -Description: "Intepretation of OncotypeDX DCIS (Ductal Carcinoma In Situ) Recurrence Score" -#low_risk "Recurrence Score lower than 38: The cancer has a low risk of recurrence. The benefit of chemotherapy is likely to be small and will not outweigh the risks of side effects." -#intermediate_risk "Recurrence Score of 39 up to and including 54: The cancer has an intermediate risk of recurrence. It’s unclear whether the benefits of chemotherapy outweigh the risks of side effects." -#high_risk "Recurrence Score greater than or equal to 55: The cancer has a high risk of recurrence, and the benefits of chemotherapy are likely to be greater than the risks of side effects." - -ValueSet: MammaprintRiskScoreInterpretationVS -Description: "Intepretation of Mammaprint Recurrence Score" -#low_risk "Score between 0.0 and +1.0, meaning a patient has on average a 10% chance that her cancer will recur within 10 years without any additional adjuvant treatment, either hormonal therapy or chemotherapy." -#high_risk "Score between -1.0 and 0.0, meaning a patient has a 29% chance that her cancer will recur within 10 years without any additional adjuvant treatment, either hormonal therapy or chemotherapy." - -#8010 "Carcinoma, NOS" -#8032 "Spindle cell carcinoma" -#8035 "Carcinoma with osteoclast-like stromal giant cells" -#8041 "Neuroendocrine carcinoma, poorly differentiated (small cell carcinoma)" -#8070 "Squamous cell carcinoma" -#8140 "Adenocarcinoma, NOS" -#8200 "Adenoid cystic carcinoma" -#8201 "Cribriform carcinoma" -#8211 "Tubular carcinoma" -#8246 "Neuroendocrine tumor, well-differentiated" -#8255 "Adenocarcinoma with mixed subtypes" -#8290 "Oncocytic carcinoma" -#8314 "Lipid-rich carcinoma" -#8315 "Glycogen-rich clear cell carcinoma" -#8401 "Apocrine adenocarcinoma" -#8410 "Sebaceous carcinoma" -#8430 "Mucoepidermoid carcinoma" -#8480 "Mucinous carcinoma" -#8500 "Ductal carcinoma" -#8501 "Comedocarcinoma, NOS" -#8502 "Secretory carcinoma" -#8503 "Intraductal papillary carcinoma" -#8504 "Encapsulated papillary carcinoma" -#8507 "Invasive micropapillary carcinoma" -#8509 "Solid papillary carcinoma" -#8510 "Medullary carcinoma" -#8513 "Atypical medullary carcinoma" -#8520 "Invasive lobular carcinoma" -#8521 "Infiltrating ductular carcinoma" -#8522 "Infiltrating duct and lobular carcinoma" -#8523 "Infiltrating duct mixed with other types of carcinoma" -#8524 "Infiltrating lobular mixed with other types of carcinoma" -#8525 "Polymorphous carcinoma" -#8530 "Inflammatory carcinoma" -#8540 "Paget disease of the nipple" -#8541 "Paget disease and infiltrating duct carcinoma of breast" -#8543 "Paget disease and intraductal carcinoma" -#8570 "Low-grade adenosquamous carcinoma" -#8571 "Metaplastic carcinoma with mesenchymal differentiation" -#8572 "Fibromatosis-like metaplastic carcinoma" -#8574 "Carcinoma with neuroendocrine differentiation" -#8575 "Metaplastic carcinoma" -#8982 "Myoepithelial carcinoma" -#8983 "Adenomyoepithelioma with carcinoma" - -*/ \ No newline at end of file diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt new file mode 100644 index 00000000..2720bf14 --- /dev/null +++ b/spec/shr_tumor.txt @@ -0,0 +1,79 @@ +Grammar: DataElement 5.0 +Namespace: tumor +Description: "SHR implementation of ASCO requirements." +Uses: shr.core, shr.base, shr.entity, mcode + + +EntryElement: TumorDimensions +Based on: CodedLaboratoryObservation +Concept: SCT#263605001 "Tumor size (observable entity)" +0..0 FindingResult +// SpecificFocusOfFinding value is type TumorPresent + FindingTopicCode is SCT#263605001 "Tumor size (observable entity)" +0..0 PanelMembers + NonIndependentFinding +includes 0..1 TumorDimension1 +includes 0..1 TumorDimension2 +includes 0..1 TumorDimension3 +includes 0..1 SizeOfGrossTumorBed + + Element: TumorDimension1 + Description: "The longest dimension of the tumor." + Based on: QuantitativeNonIndependentFinding + Concept: SCT#372299002 "Tumor size, dimension 1 (observable entity)" + FindingTopicCode is SCT#372299002 "Tumor size, dimension 1 (observable entity)" +// FindingResult.Quantity.Units is UCUM#mm + + Element: TumorDimension2 + Description: "The second longest dimension of the tumor, perpendicular to the longest dimension." + Based on: QuantitativeNonIndependentFinding + Concept: SCT#372300005 "Tumor size, dimension 2 (observable entity)" + FindingTopicCode is SCT#372300005 "Tumor size, dimension 2 (observable entity)" +// FindingResult.Quantity.Units is UCUM#mm + + Element: TumorDimension3 + Description: "The third longest dimension of the tumor, perpendicular to the two longest dimensions." + Based on: QuantitativeNonIndependentFinding + Concept: SCT#372301009 "Tumor size, dimension 3 (observable entity)" + FindingTopicCode is SCT#372301009 "Tumor size, dimension 3 (observable entity)" +// FindingResult.Quantity.Units is UCUM#mm + + Element: SizeOfGrossTumorBed + Based on: QuantitativeNonIndependentFinding + Concept: TBD + Description: "The largest dimension of the gross tumor bed/fibrotic area." + FindingTopicCode is TBD#TBD +// FindingResult.Quantity.Units is UCUM#mm + + +EntryElement: TumorMargins +Based on: CodedLaboratoryObservation +Concept: MTH#C4086369 +Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." + FindingResult from PositiveNegativeVS + FindingTopicCode is MTH#C4086369 + DiagnosticService is #pathology +0..0 PanelMembers + NonIndependentFinding +includes 0..1 TumorMarginDescription +includes 0..1 Cellularity // not sure this belongs here +includes 0..1 PercentageInSituCarcinoma // not sure this belongs here +// Do we need to record the method? whether the result of imaging, or study of a removed tumor after lumpectomy? + + Element: TumorMarginDescription + Concept: TBD + Based on: CodedNonIndependentFinding + Description: "Description of the edge or border of tumor in situ by radiologist or of removed tumor by pathologist." + FindingResult from TumorMarginDescriptionVS + + Element: Cellularity + Concept: MTH#C4055283 + Based on: QuantitativeNonIndependentFinding + Description: "Percentage of cells in a sample that are cancerous" + // FindingResult.Quantity.Units is UCUM#% + + Element: PercentageInSituCarcinoma + Based on: QuantitativeNonIndependentFinding + Concept: TBD + Description: "The percentage of the cancer that is in situ, as opposed to invading other tissues." + // FindingResult.Quantity.Units is UCUM#% diff --git a/spec/shr_tumor_vs.txt b/spec/shr_tumor_vs.txt new file mode 100644 index 00000000..5b093019 --- /dev/null +++ b/spec/shr_tumor_vs.txt @@ -0,0 +1,13 @@ +Grammar: ValueSet 5.0 +Namespace: tumor + +CodeSystem: SCT = http://snomed.info/sct + +ValueSet: TumorMarginDescriptionVS +SCT#129738007 "Lesion with circumscribed margin" +SCT#129741003 "Lesion with indistinct margin" +SCT#129739004 "Lesion with microlobulated margin" +SCT#129740002 "Lesion with obscured margin" +SCT#129742005 "Lesion with spiculated margin" +// TODO: Add codes for additional tumor margin descriptions (from Penrad) +// Angular margin, Smooth margin, Intraductal extension, Irregular margin, Lobulated margin, Macrolobulated margin, Non circumscribed margin From c71e142546734b8d4d50d605455c8801301d877a Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 15 Nov 2018 12:12:14 -0500 Subject: [PATCH 111/289] Renamed oncology to brca Since we have oncology core and expect we'll have other modules for other cancers, we should be specific. --- spec/{shr_oncology.txt => shr_brca.txt} | 2 +- spec/{shr_oncology_map.txt => shr_brca_map.txt} | 2 +- spec/{shr_oncology_vs.txt => shr_brca_vs.txt} | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename spec/{shr_oncology.txt => shr_brca.txt} (99%) rename spec/{shr_oncology_map.txt => shr_brca_map.txt} (95%) rename spec/{shr_oncology_vs.txt => shr_brca_vs.txt} (99%) diff --git a/spec/shr_oncology.txt b/spec/shr_brca.txt similarity index 99% rename from spec/shr_oncology.txt rename to spec/shr_brca.txt index ca99991b..2b6ed1ff 100644 --- a/spec/shr_oncology.txt +++ b/spec/shr_brca.txt @@ -1,5 +1,5 @@ Grammar: DataElement 5.0 -Namespace: oncology +Namespace: brca Description: "SHR implementation of ASCO requirements." Uses: shr.core, shr.base, shr.entity, mcode diff --git a/spec/shr_oncology_map.txt b/spec/shr_brca_map.txt similarity index 95% rename from spec/shr_oncology_map.txt rename to spec/shr_brca_map.txt index a8fd97a6..18f23fa5 100644 --- a/spec/shr_oncology_map.txt +++ b/spec/shr_brca_map.txt @@ -1,5 +1,5 @@ Grammar: Map 5.1 -Namespace: oncology +Namespace: brca Target: FHIR_STU_3 /* diff --git a/spec/shr_oncology_vs.txt b/spec/shr_brca_vs.txt similarity index 99% rename from spec/shr_oncology_vs.txt rename to spec/shr_brca_vs.txt index a1bfa0af..91bd498b 100644 --- a/spec/shr_oncology_vs.txt +++ b/spec/shr_brca_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: oncology +Namespace: brca CodeSystem: SCT = http://snomed.info/sct From 5ae6a52d73d4c993f8933383d12a66e53b467d01 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 15 Nov 2018 18:56:26 -0500 Subject: [PATCH 112/289] Reintroduced AdverseEvent, updated ClinicalNote, QuestionAnswer, changed oncology to BrCa --- parking_lot/cimi_adverse.txt | 75 ---- parking_lot/cimi_allergy_map.txt | 20 +- spec/shr_adverse.txt | 80 ++++ .../shr_adverse_map.txt | 12 +- .../shr_adverse_vs.txt | 2 +- spec/shr_base_finding.txt | 24 +- spec/shr_brca.txt | 78 ---- spec/shr_brca_vs.txt | 18 - spec/shr_oncologycore.txt | 11 +- spec/shr_oncologycore_vs.txt | 393 +----------------- spec/shr_tumor.txt | 79 ++++ spec/shr_tumor_vs.txt | 13 + 12 files changed, 226 insertions(+), 579 deletions(-) delete mode 100644 parking_lot/cimi_adverse.txt create mode 100644 spec/shr_adverse.txt rename parking_lot/cimi_adverse_map.txt => spec/shr_adverse_map.txt (63%) rename parking_lot/cimi_adverse_vs.txt => spec/shr_adverse_vs.txt (99%) create mode 100644 spec/shr_tumor.txt create mode 100644 spec/shr_tumor_vs.txt diff --git a/parking_lot/cimi_adverse.txt b/parking_lot/cimi_adverse.txt deleted file mode 100644 index bfac5f52..00000000 --- a/parking_lot/cimi_adverse.txt +++ /dev/null @@ -1,75 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: cimi.adverse -Description: "The CIMI Adverse domain contains definitions for describing adverse events and adverse reactions." -Uses: shr.core, shr.base, cimi.core, cimi.element, cimi.topic, cimi.statement, cimi.entity, shr.research, cimi.medication - -CodeSystem: MTH = http://ncimeta.nci.nih.gov - -Element: AdverseEventEntry -Based on: InformationEntry -Description: "An entry in the patient record documenting an untoward or unexpected finding observed during the course of an activity or an activity. Adverse events may capture either a workflow breach that may or may not result in harm but that must be documented for quality improvement purposes or an adverse finding whether or not it can be traceable to an actual workflow breach." - Signed.Attribution.EntityOrRole is type PatientOrPractitionerOrRelatedPerson // to facilitate mapping to FHIR, which only allows Patient, Practitioner, or RelatedPerson as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) -0..1 Type from MedDRAVS // no topic code -1..1 OccurrenceTime -1..1 Seriousness from SeriousnessVS // to be replaced with http://hl7.org/fhir/ValueSet/adverse-event-seriousness in FHIR 4 -//0..1 TBD "PatternOfEvent" // from STDM -0..1 Outcome from http://hl7.org/fhir/ValueSet/adverse-event-outcome -0..1 AdditionalText // aka description -0..* CausalAttribution -0..* ActionTaken -0..1 AssociatedStudy - - Element: Seriousness // aka seriousness - Concept: MTH#C2985911 - Description: "A coded value specifying the level of injury suffered by the subject for whom the event is reported, using the CTCAE coding system." - Value: CodeableConcept - - Element: CausalAttribution - Concept: MTH#C1510821 "Adverse Event Attribution to Product or ProcedurePerformed" - Description: "A possible cause of an observed adverse event, known or theorized. There can be more than one possible cause." - Value: CodeableConcept should be from http://hl7.org/fhir/ValueSet/substance-code or ref(Substance) or ref(Medication) or ref(MedicationUsedStatement) or ref(Device) //ref(ActionPerformedStatement) - 1..1 CauseCategory - 1..1 Certainty - 0..1 RouteIntoBody // aka exposure route - - Element: CauseCategory - Concept: TBD - Description: "Whether the adverse event is attributed to a treatment, course of the disease, unrelated to either, or unknown. " - Value: CodeableConcept from AttributionCategoryVS - - Element: ActionTaken - Concept: TBD - Description: "The action taken as a result of the adverse reaction. May include changing or discontinuing medication, reducing dose, etc." - 1..1 AdditionalText - 0..1 ref(ActionStatement) // such as MedicationChangeStatement - - Element: AssociatedStudy - Description: "The related clinical trial or other formal study." - Value: ref(Study) - - -Element: AdverseReactionTopic -Based on: AssertionTopic -Description: "An instance of a negative response to a substance." -0..* Manifestation -0..* CausalAttribution - - Element: Manifestation - Concept: MTH#C1280464 - Description: "A sign or symptom of an underlying condition." - Value: CodeableConcept from ManifestationVS - 0..1 Severity from http://hl7.org/fhir/ValueSet/reaction-event-severity - -//---------------- Instantiations -------------- - -EntryElement: AdverseReactionPresenceStatement -Based on: AssertionPresenceStatement -1..1 StatementTopic is type AdverseReactionTopic -// AdverseReactionTopic.CausalAttribution value is type CodeableConcept // mapping to FHIR - - -EntryElement: ToxicEventEntry // In truth, this should be a filter on AdverseEventPresenceStatement, not a separate class -Based on: AdverseEventEntry -Concept: MTH#C0542243 -Description: "A grade 3 or 4 adverse reaction to medication, radiation treatment, or other therapy." - Seriousness from ToxicSeriousnessVS diff --git a/parking_lot/cimi_allergy_map.txt b/parking_lot/cimi_allergy_map.txt index 91d4d890..2845dbe4 100644 --- a/parking_lot/cimi_allergy_map.txt +++ b/parking_lot/cimi_allergy_map.txt @@ -4,9 +4,9 @@ Target: FHIR_STU_3 AdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: - PersonOfRecord maps to patient +// PersonOfRecord maps to patient // SourceOfInformation.Value maps to asserter - Signed.Value.EntityOrRole maps to recorder +// Signed.Value.EntityOrRole maps to recorder _Entry.CreationTime maps to assertedDate AdverseSensitivityTopic.AllergenIrritant maps to code AdverseSensitivityTopic.Type maps to type @@ -16,18 +16,18 @@ AdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/Struc Criticality maps to criticality Onset maps to onset[x] MostRecentOccurrenceTime maps to lastOccurrence - AdverseReactionPresenceStatement.AdverseReactionTopic.Manifestation.Severity maps to reaction.severity - AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution.RouteIntoBody maps to reaction.exposureRoute - AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution maps to reaction.substance - AdverseReactionPresenceStatement.AdverseReactionTopic.Manifestation.Value maps to reaction.manifestation - AdverseReactionPresenceStatement.AdverseReactionTopic.AdditionalText maps to reaction.description - AdverseReactionPresenceStatement.Onset maps to reaction.onset + AdverseReaction.Manifestation.Severity maps to reaction.severity + AdverseReaction.CausalAttribution.RouteIntoBody maps to reaction.exposureRoute + AdverseReaction.CausalAttribution.Substance maps to reaction.substance + AdverseReaction.Manifestation.Value maps to reaction.manifestation + AdverseReaction.CommentOrDescription maps to reaction.description + AdverseReaction.Onset maps to reaction.onset NoAdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: - PersonOfRecord maps to patient +// PersonOfRecord maps to patient // SourceOfInformation.Value maps to asserter - Signed.Value.EntityOrRole maps to recorder +// Signed.Value.EntityOrRole maps to recorder _Entry.CreationTime maps to assertedDate AdverseSensitivityTopic.TopicCode maps to code constrain type to 0..0 diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt new file mode 100644 index 00000000..0b2276e7 --- /dev/null +++ b/spec/shr_adverse.txt @@ -0,0 +1,80 @@ +Grammar: DataElement 5.0 +Namespace: shr.adverse +Description: "The CIMI Adverse domain contains definitions for describing adverse events and adverse reactions." +Uses: shr.core, shr.base, shr.entity, shr.medication, shr.research + +CodeSystem: MTH = http://ncimeta.nci.nih.gov + + +// Adverse drug eactions are a subset of adverse events, and are specifically associated with an exposure to a substance + + +Element: AdverseEvent +Based on: InformationItem +Description: "A record of an untoward or unexpected event in a patient under treatment, and which does not necessarily have to have a causal relationship with that treatment. Adverse events may capture either a workflow breach that may or may not result in harm, but must be documented for quality improvement purposes, or an adverse finding whether or not it can be traceable to an actual workflow breach." +// SignedBy.Attribution.EntityOrRole is type PatientOrPractitionerOrRelatedPerson <--to facilitate mapping to FHIR, which only allows Patient, Practitioner, or RelatedPerson as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) +1..1 Patient +0..1 Type from MedDRAVS +1..1 OccurrenceTime +1..1 Seriousness from SeriousnessVS // to be replaced with http://hl7.org/fhir/ValueSet/adverse-event-seriousness in FHIR 4 +//0..1 TBD "PatternOfEvent" // from STDM +0..1 Outcome from http://hl7.org/fhir/ValueSet/adverse-event-outcome +0..1 CommentOrDescription +0..* Manifestation +0..* CausalAttribution +0..* ActionTaken +0..1 AssociatedStudy + + Element: Seriousness + Concept: MTH#C2985911 + Description: "A coded value specifying the level of injury suffered by the subject for whom the event is reported, using the CTCAE coding system." + Value: CodeableConcept + + Element: Manifestation + Concept: MTH#C1280464 + Description: "A sign or symptom of an underlying condition." + Value: CodeableConcept from ManifestationVS + 0..1 Severity // OK as is, same values as http://hl7.org/fhir/ValueSet/reaction-event-severity + + Element: CausalAttribution + Concept: MTH#C1510821 "Adverse Event Attribution to Product or ProcedurePerformed" + Description: "A possible cause of an observed adverse event, known or theorized. There can be more than one possible cause." + 1..1 PossibleCause + 1..1 CauseCategory + 1..1 Certainty + 0..1 RouteIntoBody // aka exposure route + + Element: PossibleCause + Concept: TBD + Description: "The possible cause of the adverse event." + Value: CodeableConcept should be from http://hl7.org/fhir/ValueSet/substance-code or ref(Substance) or ref(Medication) or ref(MedicationAdministered) or ref(MedicationStatement) or ref(Device) + + Element: CauseCategory + Concept: TBD + Description: "Whether the adverse event is attributed to a treatment, course of the disease, unrelated to either, or unknown. " + Value: CodeableConcept from AttributionCategoryVS + + Element: ActionTaken + Concept: TBD + Description: "The action taken as a result of the adverse reaction. May include changing or discontinuing medication, reducing dose, etc." + 1..1 CommentOrDescription + 0..1 ref(ActionStatement) // such as MedicationChangeStatement + + Element: AssociatedStudy + Description: "The related clinical trial or other formal study." + Value: ref(Study) + +// ***********NOT COMPLETE************* +EntryElement: AdverseDrugReaction +Based on: AdverseEvent +Description: "A noxious and unintended response to a medicinal product. To be considered an ADR, a causal relationship must be at least suspected by the medical practitioner. The principal difference between an adverse drug reaction (ADR) an adverse event (AE) and is that a causal relationship is suspected for the ADR, but is not required for the AE. Adverse drug reactions are therefore a subset of adverse event reports." +//1..* CausalAttribution +// CausalAttribution.PossibleCause value is type ref(Medication) or ref(MedicationAdministered) or ref(MedicationStatement) + + +EntryElement: ToxicAdversedDrugReaction +// In truth, this should be a filter on AdverseReaction, not a separate class +Based on: AdverseDrugReaction +Concept: MTH#C0542243 +Description: "A grade 3 or 4 adverse reaction to medication, radiation treatment, or other therapy." + Seriousness from ToxicSeriousnessVS \ No newline at end of file diff --git a/parking_lot/cimi_adverse_map.txt b/spec/shr_adverse_map.txt similarity index 63% rename from parking_lot/cimi_adverse_map.txt rename to spec/shr_adverse_map.txt index d1cecc61..e9b56da9 100644 --- a/parking_lot/cimi_adverse_map.txt +++ b/spec/shr_adverse_map.txt @@ -1,19 +1,19 @@ Grammar: Map 5.1 -Namespace: cimi.adverse +Namespace: shr.adverse Target: FHIR_STU_3 -AdverseEventEntry maps to AdverseEvent: - Signed.Value.EntityOrRole maps to recorder +AdverseEvent maps to AdverseEvent: +// _Entry.SignedBy.Value.EntityOrRole maps to recorder ?? // EntityOrRole is the name of the property; don't say Signed.Value.Role Type maps to type - AdditionalText maps to description - PersonOfRecord maps to subject + CommentOrDescription maps to description + Patient maps to subject AssociatedStudy maps to study Seriousness maps to seriousness OccurrenceTime maps to date Outcome maps to outcome // FHIR TODO: AdverseEvent.eventParticipant is underdefined (no role) - CausalAttribution maps to suspectEntity.instance + CausalAttribution.PossibleCause maps to suspectEntity.instance CausalAttribution.Certainty maps to suspectEntity.causalityAssessment //AdverseReactionStatement maps to ??? diff --git a/parking_lot/cimi_adverse_vs.txt b/spec/shr_adverse_vs.txt similarity index 99% rename from parking_lot/cimi_adverse_vs.txt rename to spec/shr_adverse_vs.txt index 71b04022..48144d55 100644 --- a/parking_lot/cimi_adverse_vs.txt +++ b/spec/shr_adverse_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: cimi.adverse +Namespace: shr.adverse CodeSystem: MDR = http://www.meddra.org CodeSystem: MTH = http://ncimeta.nci.nih.gov diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 5ed7f2a8..7ef84d0a 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -14,6 +14,7 @@ Description: "A finding that does not or cannot stand alone, or a component of 1..1 FindingTopicCode // Question, test name, or condition 0..1 ExceptionValue 0..1 ReferenceRange // included here only because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. +// TODO: 0..1 Interpretation Element: FindingResult Description: "The value or result of a test, evaluation, or judgment, for example, a systolic blood pressure, or if a condition or body structure is present or absent." @@ -359,13 +360,28 @@ Description: "A finding that a condition is or was not present in the subject at 0..* AnatomicalLocation EntryElement: ClinicalNote -Based on: Finding +Based on: SimpleNonLaboratoryObservation Concept: MTH#C0747978 "Progress Note" -Description: "An entry concerning a patient where the result is a narrative text." -// 0..0 Value +Description: "An entry concerning a patient where the result is a narrative text. While all findings have a CommentOrDescription field, the clinical note should put the narrative in the FindingResult field, since this is the first place to look for a result that is a narrative." + FindingTopicCode is MTH#C0747978 "Progress Note" + FindingResult value is type string 0..0 ReferenceRange 1..1 Patient -1..1 CommentOrDescription // make required +//1..1 CommentOrDescription // put into FindingResult + +EntryElement: QuestionAnswer +Based on: SimpleNonLaboratoryObservation +Concept: TBD +Description: "A simple question-answer pair. FindingTopicCode should contain the identifying code for the question, and the FindingResult the answer. FindingResult is not constrained because the answer could be a string, concept code, number, etc." +0..0 ReferenceRange +1..1 Patient +0..1 QuestionText + + Element: QuestionText + Concept: TBD + Description: "The text of the question as it should be asked or is phrased in questionnaire." + Value: string + Abstract Element: RelationshipExistenceAssertion Based on: ExistenceAssertion diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 2b6ed1ff..1b62a281 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -283,22 +283,6 @@ The is currently no LOINC code for Mammaprint test." /************* LEGACY BEGIN ************ -EntryElement: DiseaseProgression -Based on: Observation -Concept: MTH#C0421176 "Progression" -Description: "A finding related to the current trend of a particular existing disease. This concept is most often used for chronic and incurable diseases where the status and trendline of the disease is an important determinant of therapy and prognosis. The specific disorder being evaluated must be cited in the Focus_Reference or Focus_CodeableConcept as a reference to a Condition." -Value: CodeableConcept from ProgressionVS - FindingTopicCode is MTH#C0421176 "Progression" -0..* ProgressionEvidence -// "ProgressionEvidence" is somewhat related to FindingMethod, which represents the test or procedure used to generate the result; it is typically a LOINC code (0..1) -0..0 Specimen -0..0 NonIndependentFinding -//0..0 Precondition -0..0 ReferenceRange // applies to a quantitative measurement only - - Element: ProgressionEvidence - Description: "The type of evidence considered in determining disease progression." - Value: CodeableConcept from ProgressionEvidenceVS Element: BreastCancerPrimaryTumorClassification Concept: SCT#78873005 "T category" @@ -393,68 +377,6 @@ includes 0..1 OtherReceptorScoringSystem Based on: NonIndependentFinding Description: "A scoring system other than Allred." -EntryElement: TumorDimensions -Based on: SimpleCodedObservation -Concept: MTH#C4086369 -0..0 Value - FindingTopicCode is TBD#TBD - DiagnosticService is #pathology - NonIndependentFinding -includes 0..1 TumorPrimaryDimensionSize -includes 0..1 TumorSecondaryDimensionSize -includes 0..1 SizeOfGrossTumorBed - - Element: TumorPrimaryDimensionSize - Description: "The longest diameter of the primary tumor." - Based on: NonIndependentFinding - Concept: TBD - Value: Quantity with units UCUM#mm - - Element: TumorSecondaryDimensionSize - Description: "The longest perpendicular diameter of the primary tumor." - Based on: NonIndependentFinding - Concept: TBD - Value: Quantity with units UCUM#mm - - Element: SizeOfGrossTumorBed - Based on: NonIndependentFinding - Concept: TBD - Description: "The largest dimension of the gross tumor bed/fibrotic area." - Value: Quantity with units UCUM#mm - - -EntryElement: TumorMargins -Based on: SimpleCodedObservation -Concept: MTH#C4086369 -Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." -Value: CodeableConcept from PositiveNegativeVS - FindingTopicCode is MTH#C4086369 - DiagnosticService is #pathology - NonIndependentFinding -includes 0..1 TumorMarginDescription -includes 0..1 Cellularity // not sure this belongs here -includes 0..1 PercentageInSituCarcinoma // not sure this belongs here -// Do we need to record the method? whether the result of imaging, or study of a removed tumor after lumpectomy? - - Element: TumorMarginDescription - Concept: TBD - Based on: NonIndependentFinding - Description: "Description of the edge or border of tumor in situ by radiologist or of removed tumor by pathologist." - Value: CodeableConcept from TumorMarginDescriptionVS - - Element: Cellularity - Concept: MTH#C4055283 - Based on: NonIndependentFinding - Description: "Percentage of cells in a sample that are cancerous" - Value: Quantity with units UCUM#% - - Element: PercentageInSituCarcinoma - Based on: NonIndependentFinding - Concept: TBD - Description: "The percentage of the cancer that is in situ, as opposed to invading other tissues." - Value: Quantity with units UCUM#% - - Element: Ki-67LabelingIndex Based on: SimpleCodedObservation Concept: MTH#C4049944 diff --git a/spec/shr_brca_vs.txt b/spec/shr_brca_vs.txt index 91bd498b..a480e255 100644 --- a/spec/shr_brca_vs.txt +++ b/spec/shr_brca_vs.txt @@ -211,24 +211,6 @@ SCT#450501000124104 "Light intensity (qualifier value)" SCT#4901000175103 "Moderate intensity (qualifier value)" SCT#450511000124101 "High intensity (qualifier value)" - -ValueSet: ProgressionVS -MTH#C0677874 "Complete response or remission; no measurable or observable evidence of cancer." -MTH#C0015250 "Complete resection/excision of cancerous tumor" -MTH#C1272745 "Improving, responding to treatment" -MTH#C0205360 "Stable, neither improving nor worsening" -MTH#C1546960 "Worsening, disease progressing" -MTH#C3858734 "Insufficient evidence" - -ValueSet: ProgressionEvidenceVS -MTH#C0011923 "Progression determined based on imaging" -MTH#C0030664 "Progression determined based on pathology" -MTH#C1457887 "Progression determined based on physical signs or symptoms" -MTH#C0031809 "Progression determined based on physical examination" -MTH#C0005516 "Progression determined based on biomarkers" - - - /* NOT USED CodeSystem: MTH = http://ncimeta.nci.nih.gov diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index e805863e..a4c7ce12 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -42,14 +42,21 @@ Concept: LNC#21858-6 "Grade Cancer" 0..0 Device EntryElement: CancerProgression -Based on: SimpleCodedNonLaboratoryObservation +Based on: CodedNonLaboratoryObservation Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" Concept: SCT#246453008 "Course of illness (attribute)" FindingResult from CancerProgressionVS FindingTopicCode is SCT#246453008 "Course of illness (attribute)" // SpecificFocusOfFinding value is type CancerDisorderPresent 0..0 AnatomicalLocation -0..0 Device +0..0 Device +// CancerProgressionEvidence is not yet part of M-CODE, but I don't see a better way to include it for FluxNotes +0..* CancerProgressionEvidence + + Element: CancerProgressionEvidence + Description: "The type of evidence considered in determining disease progression." + Value: CodeableConcept from CancerProgressionEvidenceVS + EntryElement: CancerStageInformation Based on: Observation diff --git a/spec/shr_oncologycore_vs.txt b/spec/shr_oncologycore_vs.txt index ebee158e..2f0653f8 100644 --- a/spec/shr_oncologycore_vs.txt +++ b/spec/shr_oncologycore_vs.txt @@ -20,6 +20,14 @@ MTH#C0205360 "Stable, neither improving nor worsening" // SCT#58158008 Stable MTH#C1546960 "Worsening, disease progressing" // SCT#230993007 Worsening (qualifier value) MTH#C3858734 "Insufficient evidence" +ValueSet: CancerProgressionEvidenceVS +MTH#C0011923 "Cancer progression determined based on imaging" +MTH#C0030664 "Cancer progression determined based on pathology" +MTH#C1457887 "Cancer progression determined based on physical signs or symptoms" +MTH#C0031809 "Cancer progression determined based on physical examination" +MTH#C0005516 "Cancer progression determined based on biomarkers" + + ValueSet: StageTimingPrefixVS //TODO: the value set is missing codes for recurrence and anatomical staging. //TODO: need new terms for post-therapeutic clinical and pathological staging. @@ -47,388 +55,3 @@ ValueSet: StageSuffixVS Description: "Modifiers related to the staging category. Examples of modifiers include the type of procedure performed in determining the pathological node classification. The staging suffix notation is the abbreviation enclosed by parentheses. For example, CN1a(sn) where (sn) designates that the N category was identified based on a sentinel node biopsy." #sn "sentinel node biopsy" #f "Fine needle aspiration or core biopsy" - -/* BrCa value set - ValueSet: StagingMethodVS - Description: "The methodology or standard used to assign the cancer's overall stage." - #ajcc_v7 "AJCC Cancer Staging Manual 7th Edition" - #ajcc_v8 "AJCC Cancer Staging Manual 8th Edition" - #seer_eod "SEER Extent of Disease 2018" - #seer_ss77 "SEER Summary Stage 1977" - #seer_ss00 "SEER Summary Stage 2000" - #seer_ss18 "SEER Summary Stage 2018" -*/ - - -ValueSet: BreastSiteVS -Description: "Topography of the breast. Codes are drawn from Snomed and correspond to ICD-O-3." -SCT#24142002 "Nipple structure (body structure) - corresponds to ICDO3#C50.0" -SCT#49058007 "Structure of central portion of breast (body structure) - corresponds to ICDO3#C50.1" -SCT#77831004 "Structure of upper inner quadrant of breast (body structure) - corresponds to ICDO3#C50.2" -SCT#19100000 "Structure of lower inner quadrant of breast (body structure) - corresponds to ICDO3#C50.3" -SCT#76365002 "Structure of upper outer quadrant of breast (body structure) - corresponds to ICDO3#C50.4" -SCT#33564002 "Structure of lower outer quadrant of breast (body structure) - corresponds to ICDO3#C50.5" -SCT#38412008 "Structure of axillary tail of breast (body structure) - corresponds to ICDO3#C50.6" -SCT#276825009 "Overlapping sites (qualifier value) - corresponds to ICDO3#C50.8" -SCT#76752008 "Breast structure (body structure) - corresponds to ICDO3#C50.9" // NOS - - -/********* LEGACY STUFF ************ -ValueSet: BreastSpecimenTypeVS -Description: "The type of specimen obtained from the breast. Codes are drawn from Snomed CT where available. Local codes are used where Snomed codes are currently unavailable." -SCT#119295008 "Specimen obtained by aspiration (specimen)" // mlt: replaces #aspirate "Aspirate" -#core "Core biopsy specimen" // mlt: no equivalent SCT concept. Concepts break into core needle and image guided specimen types -#excision "Excision specimen without wire loc" // mlt: no equivalent SCT concept with specimen semantic tag. -#wire "Excision specimen with wire loc" // mlt: no equivalent SCT concept with specimen semantic tag. -SCT#16215491000119108 "Specimen from breast duct obtained by excision (specimen)" // mlt: replaces #duct "Nipple duct excision" -SCT#122595009 "Specimen from breast obtained by total mastectomy (specimen)" // mlt: replaces #mastectomy "Total mastectomy" - - -ValueSet: BreastSpecimenCollectionMethodVS -Description: "The surgical method used to obtain the tissue sample." -SCT#9911007 "Core needle biopsy (procedure)" -SCT#48635004 "Fine needle biopsy (procedure)" -SCT#172043006 "Simple mastectomy (procedure)" -SCT#237372000 "Excisional biopsy of breast (procedure)" - -// Can we add synonyms (both Snomed and ICD-O-3)? -ValueSet: BreastCancerTypeVS -Description: "Histologic types of breast cancer. Codes are drawn from Snomed. Correspondence to ICD-O-3 is specified. Local codes are used where Snomed codes are currently unavailable." -SCT#86049000 "Malignant neoplasm, primary (morphologic abnormality)" -SCT#68956006 "Carcinoma in situ (morphologic abnormality) - corresponds to ICDO3#8010 Carcinoma, NOS" -SCT#65692009 "Spindle cell carcinoma (morphologic abnormality)- corresponds to ICDO3#8032 Spindle cell carcinoma" -SCT#128631001 "Carcinoma with osteoclast-like giant cells (morphologic abnormality)- corresponds to ICDO3#8035 Carcinoma with osteoclast-like stromal giant cells" -SCT#74364000 "Small cell carcinoma (morphologic abnormality)- corresponds to ICDO3#8041 Neuroendocrine carcinoma, poorly differentiated (small cell carcinoma)" -SCT#59529006 "Squamous cell carcinoma in situ (morphologic abnormality)- corresponds to ICDO3#8070 Squamous cell carcinoma" -SCT#35917007 "Adenocarcinoma, no subtype (morphologic abnormality)- corresponds to ICDO3#8140 Adenocarcinoma, N" -SCT#11671000 "Adenoid cystic carcinoma (morphologic abnormality)- corresponds to ICDO3#8200 Adenoid cystic carcinoma" -SCT#30156004 "Cribriform carcinoma (morphologic abnormality)- corresponds to ICDO3#8201 Cribriform carcinoma" -SCT#19665009 "Tubular adenoma (morphologic abnormality)- corresponds to ICDO3#8211 Tubular carcinoma" -SCT#55937004 "Neuroendocrine carcinoma (morphologic abnormality)- corresponds to ICDO3#8246 Neuroendocrine tumor, well-differentiated" -SCT#128662002 "Adenocarcinoma with mixed subtypes (morphologic abnormality)- corresponds to ICDO3#8255 Adenocarcinoma with mixed subtypes" -SCT#89439007 "Oxyphilic adenoma (morphologic abnormality)- corresponds to ICDO3#8290 Oncocytic carcinoma" -SCT#3839000 "Lipid-rich carcinoma (morphologic abnormality)- corresponds to ICDO3#8314 Lipid-rich carcinoma" -SCT#74280008 "Glycogen-rich carcinoma (morphologic abnormality)- corresponds to ICDO3#8315 Glycogen-rich clear cell carcinoma" -SCT#36318001 "Apocrine adenoma (morphologic abnormality)- corresponds to ICDO3#8401 Apocrine adenocarcinoma" -SCT#78424008 "Sebaceous adenoma (morphologic abnormality)- corresponds to ICDO3#8410 Sebaceous carcinoma" -SCT#39892006 "Mucoepidermoid tumor (morphologic abnormality)- corresponds to ICDO3#8430 Mucoepidermoid carcinoma" -SCT#33170000 "Mucinous adenoma (morphologic abnormality)- corresponds to ICDO3#8480 Mucinous carcinoma" -SCT#86616005 "Intraductal carcinoma, noninfiltrating (morphologic abnormality)- corresponds to ICDO3#8500 Ductal carcinoma" -SCT#36425007 "Comedocarcinoma (morphologic abnormality)- corresponds to ICDO3#8501 Comedocarcinoma, NOS" -SCT#41919003 "Juvenile carcinoma of the breast (morphologic abnormality)- corresponds to ICDO3#8502 Secretory carcinoma" -SCT#30566004 "Noninfiltrating intraductal papillary adenocarcinoma (morphologic abnormality)- corresponds to ICDO3#8503 Intraductal papillary carcinoma" -SCT#47488001 "Intracystic papillary adenoma (morphologic abnormality)- corresponds to ICDO3#8504 Encapsulated papillary carcinoma" -SCT#128696009 "Intraductal micropapillary carcinoma (morphologic abnormality)- corresponds to ICDO3#8507 Invasive micropapillary carcinoma" -SCT#421980000 "Papillary carcinoma, solid (morphologic abnormality)- corresponds to ICDO3#8509 Solid papillary carcinoma" -SCT#32913002 "Medullary carcinoma (morphologic abnormality)- corresponds to ICDO3#8510 Medullary carcinoma" -SCT#128698005 "Atypical medullary carcinoma (morphologic abnormality)- corresponds to ICDO3#8513 Atypical medullary carcinoma" -SCT#58477004 "Infiltrating ductular carcinoma (morphologic abnormality)- corresponds to ICDO3#8520 Invasive lobular carcinoma" -SCT#35232005 "Infiltrating duct and lobular carcinoma (morphologic abnormality)- corresponds to ICDO3#8521 Infiltrating ductular carcinoma" -SCT#128700001 "Infiltrating duct mixed with other types of carcinoma (morphologic abnormality)- corresponds to ICDO3#8522 Infiltrating duct and lobular carcinoma" -SCT#128701002 "Infiltrating lobular mixed with other types of carcinoma (morphologic abnormality)- corresponds to ICDO3#8524 Infiltrating lobular mixed with other types of carcinoma" -SCT#128702009 "Polymorphous low grade adenocarcinoma (morphologic abnormality)- corresponds to ICDO3#8525 Polymorphous carcinoma" -SCT#32968003 "Inflammatory carcinoma (morphologic abnormality)- corresponds to ICDO3#8530 Inflammatory carcinoma" -SCT#2985005 "Paget's disease, mammary (morphologic abnormality)- corresponds to ICDO3#8540 Paget disease of the nipple" -SCT#82591005 "Paget's disease and infiltrating duct carcinoma of breast (morphologic abnormality)- corresponds to ICDO3#8541 Paget disease and infiltrating duct carcinoma of breast" -SCT#54666007 "Paget's disease and intraductal carcinoma of breast (morphologic abnormality)- corresponds to ICDO3#8543 Paget disease and intraductal carcinoma" -SCT#15176003 "Adenocarcinoma with squamous metaplasia (morphologic abnormality)- corresponds to ICDO3#8570 Low-grade adenosquamous carcinoma" -#8571 "Metaplastic carcinoma with mesenchymal differentiation- corresponds to ICDO3#8571 Metaplastic carcinoma with mesenchymal differentiation" -SCT#733875004 "Fibromatosis-like metaplastic carcinoma (morphologic abnormality)- corresponds to ICDO3#8572 Fibromatosis-like metaplastic carcinoma" -SCT#128704005 "Adenocarcinoma with neuroendocrine differentiation (morphologic abnormality)- corresponds to ICDO3#8574 Carcinoma with neuroendocrine differentiation" -SCT#128705006 "Metaplastic carcinoma (morphologic abnormality)- corresponds to ICDO3#8575 Metaplastic carcinoma" -SCT#69291002 "Myoepithelioma (morphologic abnormality)- corresponds to ICDO3#8982 Myoepithelial carcinoma" -SCT#128765009 "Adenomyoepithelioma (morphologic abnormality)- corresponds to ICDO3#8983 Adenomyoepithelioma with carcinoma" - - -ValueSet: BreastCancerDetectionVS -Description: "Basis for cancer detection, from HL7 CDA® R2 Implementation Guide: Clinical Oncology Treatment Plan and Summary, Release 1 - US Realm Standard for Trial Use Release 3, October 2016, Volume 2 — Templates and Supporting Material." -SCT#360156006 "Screening" -SCT#160237006 "History/Symptoms" -SCT#261087003 "Incidental" -//TO DO methods of observation, limit to direct visual observation (32750006), palpation (113011001), or imaging procedures (363679005) such as computed tomography (77477000), plain x-ray, MRI (113091000), ultrasonography, etc. - -ValueSet: MorphologyBehaviorVS -Description: "The morphologic behavior of the cancer. These are the suffix to the ICD-O-3 histologic type codes. Codes are presented as local codes because they are portions of the full code to be post-coordinated, and not full ICD-O-3 codes." -#0 "Benign" -#1 "Uncertain whether benign or malignant" -#2 "In situ" -#3 "Malignant, primary site" -#6 "Malignant, metastatic site" -#9 "Malignant, uncertain whether primary or metastatic site" - -ValueSet: StagingMethodVS -Description: "The methodology or standard used to assign the cancer's overall stage." -#ajcc_v7 "AJCC Cancer Staging Manual 7th Edition" -#ajcc_v8 "AJCC Cancer Staging Manual 8th Edition" -#seer_eod "SEER Extent of Disease 2018" -#seer_ss77 "SEER Summary Stage 1977" -#seer_ss00 "SEER Summary Stage 2000" -#seer_ss18 "SEER Summary Stage 2018" - -ValueSet: StageTimingPrefixVS -Description: "When staging was done, relative to treatment events (qualifier)." -#cli "Clinical stage: Staging performed prior to surgery, based on evidence such as physical examination, imaging, and/or biopsy." -#path "Pathologic stage: Staging performed based on examination of tissue samples removed during surgery, in addition to physical examination and imaging." -#postther_cli "Post-therapeutic (post-neoadjuvant) clinical staging based on clinical examination after the first treatment with systemic drugs or radiation, when no surgery has been performed." -#postther_path "Post-therapeutic (post-neoadjuvant) pathologic staging, based on tissue samples removed during surgery after the first treatment with systemic drugs or radiation." - -ValueSet: NottinghamCombinedGradeVS -Description: "Combined score from the Nottingham grading system." -SCT#369790002 "Nottingham Combined Grade I: 3-5 points (finding)" -SCT#369791003 "Nottingham Combined Grade II: 6-7 points (finding)" -SCT#369792005 "Nottingham Combined Grade III: 8-9 points (finding)" - -ValueSet: NottinghamNullVS -//MK 7/14/2018 Added one missing code for the normative list. -Description: "Data absent reasons (null values) for Nottingham Combined Grade scores. Removes non-applicable values from the ExceptionValueVS, and adds values that align with LOINC normative answer list LL4561-8" -LNC#LA27219-7 "Only microinvasion present (not graded)" -LNC#LA27220-5 "No residual invasive carcinoma after presurgical (neoadjuvant) therapy" -LNC#LA11884-6 "Indeterminate" -LNC#LA27221-3 "Score cannot be determined" - -ValueSet: NuclearGradeVS -Description: "The nuclear grade describes how closely the nuclei of cancer cells look like the nuclei of normal breast cells. In general, the higher the nuclear grade, the more abnormal the nuclei are and the more aggressive the tumor cells tend to be. The nuclear grade is a part of overall tumor grade. Local codes are used due to unavailability of suitable LOINC and Snomed codes." -// MK 7/15/2018 -- found suitable Snomed codes -SCT#54102005 "G1 grade (finding) - well differentiated" -SCT#1663004 "G2 grade (finding) - moderately differentiated" -SCT#61026006 "G3 grade (finding) - pooly differentiated" -SCT#258245003 "G4 grade (finding) - undifferentiated" - -ValueSet: TubuleFormationScoreVS -// MK 7/14/2018 -- Since we identify the test by LOINC, and that test has a normative value set, the results should always be reported using the normative value set. -Description: "The degree of glandular differentiation or tubule formation in breast carcinoma. Aligns with normative LOINC answer list LL4380-3. Less aggressive cancers have more tubule formation, with scores assigned as follows: -1 = greater than 75% of the tumor area contains tubular or glandular structures -2 = 10 to 75% of the tumor area contains tubular structures -3 = less than 10% of the tumor area contains tubular structures" -//SCT#369778004 "Breast tubule formation: Majority of tumor >75% (score = 1)" -//SCT#369779007 "Breast tubule formation: Moderate 10% to 75% (score = 2)" -//SCT#369780005 "Breast tubule formation: Minimal <10% (score = 3)" -LNC#LA27216-3 "Score 1: >75% of tumor area forming glandular/tubular structures" -LNC#LA27217-1 "Score 2: 10% to 75% of tumor area forming glandular/tubular structures" -LNC#LA27218-9 "Score 3: <10% of tumor area forming glandular/tubular structures " - -ValueSet: NuclearPleomorphismScoreVS -// MK 7/14/2018 -- Since we identify the test by LOINC, and that test has a normative value set, the results should always be reported using the normative value set. -Description: "Value set containing the scores for nuclear pleomorphism. Aligns with LOINC normative answer list LL4382-9" -//SCT#384735004 "Small regular nuclei (score=1)" -//SCT#384737007 "Moderate increase in size, etc (score = 2)" -//SCT#384738002 "Marked variation in size, nucleoli, chromatin clumping, etc (score = 3)" -LNC#LA27222-1 "Score 1: Nuclei small with little increase in size in comparison with normal outlines, uniform clear chromatin, little variation in size." -LNC#LA27223-9 "Score 2: Cells larger than normal with open vesicular nuclei, visible nucleo size and shape." -LNC#LA27224-7 "Score 3: Vesicular nuclei, often with prominent nucleoli, exhibited marked occasionally with very large and bizzare forms." - - -ValueSet: NottinghamComponentNullVS -// MK 7/14/2018 -- Since we identify the test by LOINC, and that test has a normative value set, the null values should align to the normative value set. -Description: "Data absent reasons (null values) for nuclear pleomorphism count and tubule formation score. Aligns with LOINC normative answer lists LL4382-9 and LL4380-3." -LNC#LA27219-7 "Only microinvasion present (not graded)" -LNC#LA27220-5 "No residual invasive carcinoma after presurgical (neoadjuvant) therapy" -LNC#LA27221-3 "Score cannot be determined" - -ValueSet: MitoticCountScoreVS -// MK 7/14/2018 -- Since we identify the test by LOINC, and that test has a normative value set, the results should always be reported using the normative value set. -Description: "The degree of mitotic activity in breast carcinoma is one component of the Nottingham histologic grade (NHG). The specific scores assigned to the number of mitoses depends on the size of the high power fields (HPF). For example, for a HPF size of 0.274 mm^2, less than 10 mitoses per 10 HPF gets a score of 1, 10-19 gets a score of 2, and greater than or equal to 20 gets a score of 3. When larger or smaller HPFs are used, the cutoffs for the number of mitoses corresponding to a specific score are adjusted according to published guidelines." -LNC#LA27225-4 "Score 1" -LNC#LA27226-2 "Score 2" -LNC#LA27227-0 "Score 3" - -ValueSet: MitoticCountScoreNullVS -Description: "Data absent reasons (null values) for mitotic count. Aligns with LOINC normative answer list LL4383-7." -LNC#LA27220-5 "No residual invasive carcinoma after presurgical (neoadjuvant) therapy" -LNC#LA27221-3 "Score cannot be determined" - - -ValueSet: HER2FISHMethodVS -// TODO: request LOINC codes (probably pre-coordinated with FISH) -// MK 7/14/2018 --- found Snomed codes for single and double proble -Description: "Value set containing In Situ Hybridization methods of determining HER2 status" -SCT#257430009 "Double probe" -SCT#257453005 "Single probe" - -ValueSet: HER2byIHCScoreVS -Description: "Value set containing possible scores resulting from determining HER2 status by immunohistochemistry. Based on LNC#LL4396-9 answer list." -LNC#LA6111-4 "0" -LNC#LA11841-6 "1+" -LNC#LA11842-4 "2+" -LNC#LA11843-2 "3+" - -ValueSet: HER2byIHCScoreNullVS -Description: "Null values permissible for HER2 status by immunohistochemistry. Based on LNC#LL4396-9 answer list." -LNC#LA11884-6 "Indeterminate" - -ValueSet: RecurrenceRiskScoreInterpretationVS -Description: "Interpretations of risk as high, intermediate, or low. Answer set taken from LOINC LL3198-0." -#LA19541-4 "High risk of recurrence." -#LA22380-2 "Intermediate risk of recurrence." -#LA19542-2 "Low risk of recurrence." - -// MK 7/15/2018 -- Weak, strong are qualifier values. Weak staining would be a finding. Is it wrong to use a generic qualifier as a finding? The fact it applies to staining is a type of precoordination (the question is contained in the answer), turning a question-answer into a unary assertion. I view it as equivalent to a numerical answer -- a number cannot contain the question. -ValueSet: StainingIntensityVS -Description: "Part of the Allred scoring, based on the intensity of that staining, on a scale of 0 (Negative) to 3 (Strong)." -SCT#260413007 "None (qualifier value)" -SCT#450501000124104 "Light intensity (qualifier value)" -SCT#4901000175103 "Moderate intensity (qualifier value)" -SCT#450511000124101 "High intensity (qualifier value)" - - -ValueSet: ProgressionVS -MTH#C0677874 "Complete response or remission; no measurable or observable evidence of cancer." -MTH#C0015250 "Complete resection/excision of cancerous tumor" -MTH#C1272745 "Improving, responding to treatment" -MTH#C0205360 "Stable, neither improving nor worsening" -MTH#C1546960 "Worsening, disease progressing" -MTH#C3858734 "Insufficient evidence" - -ValueSet: ProgressionEvidenceVS -MTH#C0011923 "Progression determined based on imaging" -MTH#C0030664 "Progression determined based on pathology" -MTH#C1457887 "Progression determined based on physical signs or symptoms" -MTH#C0031809 "Progression determined based on physical examination" -MTH#C0005516 "Progression determined based on biomarkers" - - - -/* NOT USED - -CodeSystem: MTH = http://ncimeta.nci.nih.gov -CodeSystem: ICDO3 = https://seer.cancer.gov/icd-o-3/ -CodeSystem: HGNC = http://www.genenames.org -CodeSystem: REFSEQ = https://www.ncbi.nlm.nih.gov/refseq - -#C50.0 "Nipple" -#C50.1 "Central portion of the breast." -#C50.2 "Upper inner quadrant" -#C50.3 "Lower inner quadrant " -#C50.4 "Upper outer quadrant" -#C50.5 "Lower outer quadrant" -#C50.6 "Axillary tail of breast" -#C50.8 "Overlapping lesion of breast" // C50.8 is for tumors that overlap between two quadrants (independent of which quadrants), and there is not code for upper, lower, left, or right HALVES of breast structure. -#C50.9 "Breast, not otherwise specified (NOS)" - - -ValueSet: HER2StatusVS -Description: "HER2 status overall result" -#not_amplified "Negative/Not Amplified (IHC Score 0)" -#negative "Negative (IHC Score 1+) " -#equivocal "Equivocal (IHC Score 2+)" -#positive "Positive/Amplified (IHC Score 3+)" - - -ValueSet: GeneIdentifierVS -Description: "A unique code for a gene, including protein coding genes, ncRNA genes and pseudogenes, to allow unambiguous communication, drawn from HUGO Gene Nomenclature Committee." -Includes codes from HGNC - -ValueSet: RefseqVS -Includes codes from REFSEQ - -ValueSet: EstrogenAntibodyVS -Description: "Antibodies relevant to Estrogen receptor." -#SP1 "SP1 - CAP#31093" -#6F11 "6F11 - CAP#31094" -#1D5 "1D5 - CAP#31095" - -ValueSet: ProgesteroneAntibodyVS -Description: "Antibodies relevant to Estrogen receptor." -#1E2 "1E2 - CAP#31103" -#636 "636 - CAP#31104" -#16 "16 - CAP#31105" -#SP2 "SP2 - CAP#31097" -#1A6 "1A6 - CAP#31098" -#1294 "1294 - CAP#32115" -#312 "312 - CAP#32116" - - -ValueSet: HER2AntibodyIHCVS -Description: "Antibodies relevant to HER2 receptor (IHC Test)." -#4B5 "4B5 - CAP#31117" -#Hercep "HercepTest - CAP#31118" -#A0485 "A0485 - CAP#31119" -#SP3 "SP3 - CAP#31120" -#CB11 "CB11 - CAP#31121" - - -ValueSet: Ki67AntibodyVS -Description: "Antibodies relevant to Ki-67 test." -#MIB1 "MIB1 - CAP#31125" -#SP6 "SP6 - CAP#31126" -#MM1 "MM1 - CAP#32169" -#30-9 "30-9 - CAP#32160" -#IR/IS62 "IR / IS626 - CAP#32168" - -ValueSet: TumorMarginDescriptionVS -SCT#129738007 "Lesion with circumscribed margin" -SCT#129741003 "Lesion with indistinct margin" -SCT#129739004 "Lesion with microlobulated margin" -SCT#129740002 "Lesion with obscured margin" -SCT#129742005 "Lesion with spiculated margin" -// TODO: Add codes for additional tumor margin descriptions (from Penrad) -// Angular margin, Smooth margin, Intraductal extension, Irregular margin, Lobulated margin, Macrolobulated margin, Non circumscribed margin - - -ValueSet: ReceptorVS -Includes codes descending from SCT#116647005 "Receptor (substance)" - -// Eliminated in favor of generic LOINC List -ValueSet: OncotypeDxInvasiveRiskScoreInterpretationVS -Description: "Intepretation of OncotypeDX Recurrence Score for invasive cancers." -#low_risk "Recurrence Score lower than 18: The cancer has a low risk of recurrence. The benefit of chemotherapy is likely to be small and will not outweigh the risks of side effects." -#intermediate_risk "Recurrence Score of 18 up to and including 30: The cancer has an intermediate risk of recurrence. It’s unclear whether the benefits of chemotherapy outweigh the risks of side effects." -#high_risk "Recurrence Score greater than or equal to 31: The cancer has a high risk of recurrence, and the benefits of chemotherapy are likely to be greater than the risks of side effects." - -ValueSet: OncotypeDxDCISRiskScoreInterpretationVS -Description: "Intepretation of OncotypeDX DCIS (Ductal Carcinoma In Situ) Recurrence Score" -#low_risk "Recurrence Score lower than 38: The cancer has a low risk of recurrence. The benefit of chemotherapy is likely to be small and will not outweigh the risks of side effects." -#intermediate_risk "Recurrence Score of 39 up to and including 54: The cancer has an intermediate risk of recurrence. It’s unclear whether the benefits of chemotherapy outweigh the risks of side effects." -#high_risk "Recurrence Score greater than or equal to 55: The cancer has a high risk of recurrence, and the benefits of chemotherapy are likely to be greater than the risks of side effects." - -ValueSet: MammaprintRiskScoreInterpretationVS -Description: "Intepretation of Mammaprint Recurrence Score" -#low_risk "Score between 0.0 and +1.0, meaning a patient has on average a 10% chance that her cancer will recur within 10 years without any additional adjuvant treatment, either hormonal therapy or chemotherapy." -#high_risk "Score between -1.0 and 0.0, meaning a patient has a 29% chance that her cancer will recur within 10 years without any additional adjuvant treatment, either hormonal therapy or chemotherapy." - -#8010 "Carcinoma, NOS" -#8032 "Spindle cell carcinoma" -#8035 "Carcinoma with osteoclast-like stromal giant cells" -#8041 "Neuroendocrine carcinoma, poorly differentiated (small cell carcinoma)" -#8070 "Squamous cell carcinoma" -#8140 "Adenocarcinoma, NOS" -#8200 "Adenoid cystic carcinoma" -#8201 "Cribriform carcinoma" -#8211 "Tubular carcinoma" -#8246 "Neuroendocrine tumor, well-differentiated" -#8255 "Adenocarcinoma with mixed subtypes" -#8290 "Oncocytic carcinoma" -#8314 "Lipid-rich carcinoma" -#8315 "Glycogen-rich clear cell carcinoma" -#8401 "Apocrine adenocarcinoma" -#8410 "Sebaceous carcinoma" -#8430 "Mucoepidermoid carcinoma" -#8480 "Mucinous carcinoma" -#8500 "Ductal carcinoma" -#8501 "Comedocarcinoma, NOS" -#8502 "Secretory carcinoma" -#8503 "Intraductal papillary carcinoma" -#8504 "Encapsulated papillary carcinoma" -#8507 "Invasive micropapillary carcinoma" -#8509 "Solid papillary carcinoma" -#8510 "Medullary carcinoma" -#8513 "Atypical medullary carcinoma" -#8520 "Invasive lobular carcinoma" -#8521 "Infiltrating ductular carcinoma" -#8522 "Infiltrating duct and lobular carcinoma" -#8523 "Infiltrating duct mixed with other types of carcinoma" -#8524 "Infiltrating lobular mixed with other types of carcinoma" -#8525 "Polymorphous carcinoma" -#8530 "Inflammatory carcinoma" -#8540 "Paget disease of the nipple" -#8541 "Paget disease and infiltrating duct carcinoma of breast" -#8543 "Paget disease and intraductal carcinoma" -#8570 "Low-grade adenosquamous carcinoma" -#8571 "Metaplastic carcinoma with mesenchymal differentiation" -#8572 "Fibromatosis-like metaplastic carcinoma" -#8574 "Carcinoma with neuroendocrine differentiation" -#8575 "Metaplastic carcinoma" -#8982 "Myoepithelial carcinoma" -#8983 "Adenomyoepithelioma with carcinoma" - -*/ \ No newline at end of file diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt new file mode 100644 index 00000000..2720bf14 --- /dev/null +++ b/spec/shr_tumor.txt @@ -0,0 +1,79 @@ +Grammar: DataElement 5.0 +Namespace: tumor +Description: "SHR implementation of ASCO requirements." +Uses: shr.core, shr.base, shr.entity, mcode + + +EntryElement: TumorDimensions +Based on: CodedLaboratoryObservation +Concept: SCT#263605001 "Tumor size (observable entity)" +0..0 FindingResult +// SpecificFocusOfFinding value is type TumorPresent + FindingTopicCode is SCT#263605001 "Tumor size (observable entity)" +0..0 PanelMembers + NonIndependentFinding +includes 0..1 TumorDimension1 +includes 0..1 TumorDimension2 +includes 0..1 TumorDimension3 +includes 0..1 SizeOfGrossTumorBed + + Element: TumorDimension1 + Description: "The longest dimension of the tumor." + Based on: QuantitativeNonIndependentFinding + Concept: SCT#372299002 "Tumor size, dimension 1 (observable entity)" + FindingTopicCode is SCT#372299002 "Tumor size, dimension 1 (observable entity)" +// FindingResult.Quantity.Units is UCUM#mm + + Element: TumorDimension2 + Description: "The second longest dimension of the tumor, perpendicular to the longest dimension." + Based on: QuantitativeNonIndependentFinding + Concept: SCT#372300005 "Tumor size, dimension 2 (observable entity)" + FindingTopicCode is SCT#372300005 "Tumor size, dimension 2 (observable entity)" +// FindingResult.Quantity.Units is UCUM#mm + + Element: TumorDimension3 + Description: "The third longest dimension of the tumor, perpendicular to the two longest dimensions." + Based on: QuantitativeNonIndependentFinding + Concept: SCT#372301009 "Tumor size, dimension 3 (observable entity)" + FindingTopicCode is SCT#372301009 "Tumor size, dimension 3 (observable entity)" +// FindingResult.Quantity.Units is UCUM#mm + + Element: SizeOfGrossTumorBed + Based on: QuantitativeNonIndependentFinding + Concept: TBD + Description: "The largest dimension of the gross tumor bed/fibrotic area." + FindingTopicCode is TBD#TBD +// FindingResult.Quantity.Units is UCUM#mm + + +EntryElement: TumorMargins +Based on: CodedLaboratoryObservation +Concept: MTH#C4086369 +Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." + FindingResult from PositiveNegativeVS + FindingTopicCode is MTH#C4086369 + DiagnosticService is #pathology +0..0 PanelMembers + NonIndependentFinding +includes 0..1 TumorMarginDescription +includes 0..1 Cellularity // not sure this belongs here +includes 0..1 PercentageInSituCarcinoma // not sure this belongs here +// Do we need to record the method? whether the result of imaging, or study of a removed tumor after lumpectomy? + + Element: TumorMarginDescription + Concept: TBD + Based on: CodedNonIndependentFinding + Description: "Description of the edge or border of tumor in situ by radiologist or of removed tumor by pathologist." + FindingResult from TumorMarginDescriptionVS + + Element: Cellularity + Concept: MTH#C4055283 + Based on: QuantitativeNonIndependentFinding + Description: "Percentage of cells in a sample that are cancerous" + // FindingResult.Quantity.Units is UCUM#% + + Element: PercentageInSituCarcinoma + Based on: QuantitativeNonIndependentFinding + Concept: TBD + Description: "The percentage of the cancer that is in situ, as opposed to invading other tissues." + // FindingResult.Quantity.Units is UCUM#% diff --git a/spec/shr_tumor_vs.txt b/spec/shr_tumor_vs.txt new file mode 100644 index 00000000..5b093019 --- /dev/null +++ b/spec/shr_tumor_vs.txt @@ -0,0 +1,13 @@ +Grammar: ValueSet 5.0 +Namespace: tumor + +CodeSystem: SCT = http://snomed.info/sct + +ValueSet: TumorMarginDescriptionVS +SCT#129738007 "Lesion with circumscribed margin" +SCT#129741003 "Lesion with indistinct margin" +SCT#129739004 "Lesion with microlobulated margin" +SCT#129740002 "Lesion with obscured margin" +SCT#129742005 "Lesion with spiculated margin" +// TODO: Add codes for additional tumor margin descriptions (from Penrad) +// Angular margin, Smooth margin, Intraductal extension, Irregular margin, Lobulated margin, Macrolobulated margin, Non circumscribed margin From b8d10fbf6c571b8382b53db681f8563124adc14e Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 19 Nov 2018 09:54:25 -0500 Subject: [PATCH 113/289] Moved Allergy into FHIMI2 --- parking_lot/cimi_allergy.txt | 97 ------------- spec/shr_adverse.txt | 23 ++-- spec/shr_adverse_map.txt | 3 +- spec/shr_allergy.txt | 128 ++++++++++++++++++ .../shr_allergy_map.txt | 37 +++-- .../shr_allergy_vs.txt | 8 +- spec/shr_base_finding.txt | 8 +- spec/shr_base_vs.txt | 6 +- spec/shr_core.txt | 10 +- spec/shr_core_map.txt | 4 +- spec/shr_encounter.txt | 2 +- spec/shr_entity.txt | 1 - 12 files changed, 181 insertions(+), 146 deletions(-) delete mode 100644 parking_lot/cimi_allergy.txt create mode 100644 spec/shr_allergy.txt rename parking_lot/cimi_allergy_map.txt => spec/shr_allergy_map.txt (50%) rename parking_lot/cimi_allergy_vs.txt => spec/shr_allergy_vs.txt (83%) diff --git a/parking_lot/cimi_allergy.txt b/parking_lot/cimi_allergy.txt deleted file mode 100644 index 9f664528..00000000 --- a/parking_lot/cimi_allergy.txt +++ /dev/null @@ -1,97 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: cimi.allergy -Description: "The SHR Allergy domain contains definitions for statements dealing with substance-related risks, particularly, allergies and intolerances." -Uses: shr.core, shr.base, cimi.core, cimi.topic, cimi.statement, cimi.entity, cimi.element, cimi.adverse - -CodeSystem: SCT = http://snomed.info/sct -CodeSystem: CAT = http://hl7.org/fhir/allergy-intolerance-category - -Element: AdverseSensitivityTopic -Based on: AssertionTopic -Concept: TBD -Description: "A finding related to the presence or absence of an individual's risk or sensitivity to a substance or class of substances. A finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time." -1..1 TopicCode -0..1 AllergenIrritant -0..* SubstanceCategory from http://hl7.org/fhir/ValueSet/allergy-intolerance-category -0..1 Type from http://hl7.org/fhir/ValueSet/allergy-intolerance-type - - Element: AllergenIrritant - Concept: TBD - Description:"A substance that causes an allergic reaction or irritation." - Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-substance - - -//--------------- Instantiations ------------------- - -EntryElement: AdverseSensitivityToSubstanceStatement -Based on: AssertionPresenceStatement -Concept: SCT#473010000 "Hypersensitivity condition (disorder)" // or SCT#420134006 "Propensity to adverse reactions (disorder)"? -Description: "A finding related to the presence or absence of an individual's risk or sensitivity to a substance or class of substances. A finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time." -// SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson - Signed.Attribution.EntityOrRole is type PatientOrPractitioner // to facilitate mapping to FHIR, which only allows Patient or Practitioner as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) -1..1 StatementTopic is type AdverseSensitivityTopic -1..1 StatementTopic.AllergenIrritant // US Core requirement. See http://hl7.org/fhir/us/core/StructureDefinition-us-core-allergyintolerance.html -1..1 StatementTopic.TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" -// not needed AdverseReactionPresenceStatement.AdverseReactionTopic.CausalAttribution value is type CodeableConcept -0..1 AllergyClinicalStatus -1..1 AllergyVerificationStatus -0..1 Criticality -0..1 MostRecentOccurrenceTime -0..* ref(AdverseReactionPresenceStatement) - - Element: SubstanceCategory - Concept: TBD - Description: "Categorization of the risk substance as a food, drug, or environmental agent. For difficult-to-classify substances, one can leave this field empty or choose the most typical category." - Value: code - - Element: AllergyClinicalStatus - Concept: TBD - Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." - Value: code from http://hl7.org/fhir/ValueSet/allergy-clinical-status - - Element: AllergyVerificationStatus - Concept: TBD - Description: "Whether an assessment has been confirmed by testing or observation." - Value: code from http://hl7.org/fhir/ValueSet/allergy-verification-status - - Element: MostRecentOccurrenceTime - Concept: TBD - Description: "The time of the last or latest of a series of events." - Value: dateTime - -EntryElement: NoAdverseSensitivityToSubstanceStatement -Based on: AssertionAbsenceStatement -Description: "Used to record that a particular substance or class of substances does not pose a known elevated risk to the subject." -// SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson - Signed.Attribution.EntityOrRole is type PatientOrPractitioner -1..1 StatementTopic is type AdverseSensitivityTopic - AdverseSensitivityTopic.TopicCode is SCT#716186003 "No known allergy (situation)" - StatementTopic.TopicCode from NoKnownAllergyVS - -EntryElement: NoKnownDrugAllergyStatement -Based on: NoAdverseSensitivityToSubstanceStatement - AdverseSensitivityTopic.TopicCode is SCT#409137002 "No known drug allergy (situation)" -0..0 AdverseSensitivityTopic.AllergenIrritant -0..0 AdverseSensitivityTopic.SubstanceCategory //is CAT#medication - -EntryElement: NoKnownFoodAllergyStatement -Based on: NoAdverseSensitivityToSubstanceStatement -Description: "Statement expressings no known allergies or hypersensitivity to any food substance." - AdverseSensitivityTopic.TopicCode is SCT#429625007 "No known food allergy (situation)" -0..0 AdverseSensitivityTopic.AllergenIrritant -0..0 AdverseSensitivityTopic.SubstanceCategory //is CAT#food - -EntryElement: NoKnownEvironmentalAllergyStatement -Based on: NoAdverseSensitivityToSubstanceStatement -Description: "Statement expressings no known allergies or hypersensitivity to environmental substances." - AdverseSensitivityTopic.TopicCode is SCT#428607008 "No known environmental allergy (situation)" -0..0 AdverseSensitivityTopic.AllergenIrritant -0..0 AdverseSensitivityTopic.SubstanceCategory //is CAT#environment - -EntryElement: NoKnownAllergyStatement -Based on: NoAdverseSensitivityToSubstanceStatement -Concept: MTH#C0262580 -Description: "Statement expressings no known allergies or hypersensitivity to any food, drug, biologic, or environmental substance." - AdverseSensitivityTopic.TopicCode is SCT#716186003 "No known allergy (situation)" -0..0 AdverseSensitivityTopic.AllergenIrritant -0..0 AdverseSensitivityTopic.SubstanceCategory \ No newline at end of file diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt index 0b2276e7..1260648f 100644 --- a/spec/shr_adverse.txt +++ b/spec/shr_adverse.txt @@ -20,7 +20,7 @@ Description: "A record of an untoward or unexpected event in a patient under tre //0..1 TBD "PatternOfEvent" // from STDM 0..1 Outcome from http://hl7.org/fhir/ValueSet/adverse-event-outcome 0..1 CommentOrDescription -0..* Manifestation +0..* AdverseEventCondition 0..* CausalAttribution 0..* ActionTaken 0..1 AssociatedStudy @@ -30,11 +30,10 @@ Description: "A record of an untoward or unexpected event in a patient under tre Description: "A coded value specifying the level of injury suffered by the subject for whom the event is reported, using the CTCAE coding system." Value: CodeableConcept - Element: Manifestation + Element: AdverseEventCondition Concept: MTH#C1280464 - Description: "A sign or symptom of an underlying condition." - Value: CodeableConcept from ManifestationVS - 0..1 Severity // OK as is, same values as http://hl7.org/fhir/ValueSet/reaction-event-severity + Description: "The condition, sign or symptom triggering the adverse event report." + 1..1 ref(ConditionPresentAssertion) Element: CausalAttribution Concept: MTH#C1510821 "Adverse Event Attribution to Product or ProcedurePerformed" @@ -64,16 +63,20 @@ Description: "A record of an untoward or unexpected event in a patient under tre Description: "The related clinical trial or other formal study." Value: ref(Study) -// ***********NOT COMPLETE************* EntryElement: AdverseDrugReaction Based on: AdverseEvent Description: "A noxious and unintended response to a medicinal product. To be considered an ADR, a causal relationship must be at least suspected by the medical practitioner. The principal difference between an adverse drug reaction (ADR) an adverse event (AE) and is that a causal relationship is suspected for the ADR, but is not required for the AE. Adverse drug reactions are therefore a subset of adverse event reports." -//1..* CausalAttribution -// CausalAttribution.PossibleCause value is type ref(Medication) or ref(MedicationAdministered) or ref(MedicationStatement) +1..* CausalAttribution + CausalAttribution.PossibleCause is type PossibleDrugCause + Element: PossibleDrugCause + Based on: PossibleCause + Concept: TBD + Description: "Drug suspected as possible cause of the adverse event." + Value: ref(Medication) or ref(MedicationAdministered) or ref(MedicationStatement) -EntryElement: ToxicAdversedDrugReaction -// In truth, this should be a filter on AdverseReaction, not a separate class +// In truth, this should be a filter on AdverseDrugReaction, not a separate class +EntryElement: ToxicAdverseDrugReaction Based on: AdverseDrugReaction Concept: MTH#C0542243 Description: "A grade 3 or 4 adverse reaction to medication, radiation treatment, or other therapy." diff --git a/spec/shr_adverse_map.txt b/spec/shr_adverse_map.txt index e9b56da9..5a92e154 100644 --- a/spec/shr_adverse_map.txt +++ b/spec/shr_adverse_map.txt @@ -16,4 +16,5 @@ AdverseEvent maps to AdverseEvent: CausalAttribution.PossibleCause maps to suspectEntity.instance CausalAttribution.Certainty maps to suspectEntity.causalityAssessment -//AdverseReactionStatement maps to ??? +AdverseDrugReaction maps to AdverseEvent: + constrain suspectEntity to 1..* \ No newline at end of file diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt new file mode 100644 index 00000000..160991fb --- /dev/null +++ b/spec/shr_allergy.txt @@ -0,0 +1,128 @@ +Grammar: DataElement 5.0 +Namespace: shr.allergy +Description: "The SHR Allergy domain contains definitions for statements dealing with substance-related risks, particularly, allergies and intolerances." +Uses: shr.core, shr.base, shr.entity, shr.medication, shr.adverse + +CodeSystem: SCT = http://snomed.info/sct +CodeSystem: CAT = http://hl7.org/fhir/allergy-intolerance-category + + +EntryElement: AllergyIntolerance +Based on: Finding +Concept: SCT#473010000 "Hypersensitivity condition (disorder)" +// or SCT#420134006 "Propensity to adverse reactions (disorder)"? +Description: "A finding related to the presence of an individual's risk or sensitivity to a substance or class of substances. An AllergyIntolerancePresent finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time. Per US Core specification, the result includes SNOMED codes representing 'No known allergy'. In AllergyIntolerance, the reactions are included in-line, rather than referencing to conditions (in notable contrast to AdverseEvent)." +// SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson +// Signed.Attribution.EntityOrRole is type PatientOrPractitioner // to facilitate mapping to FHIR, which only allows Patient or Practitioner as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) + +1..1 Patient +1..1 FindingStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status +0..0 SpecificFocusOfFinding // always the patient +1..1 FindingTopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" +1..1 FindingResult from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered +0..* SubstanceCategory +0..1 Onset +0..1 AllergyIntoleranceType +0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status +//1..1 AllergyVerificationStatus -- used FindingStatus +0..1 Criticality +0..1 MostRecentOccurrenceTime +0..* AllergyIntoleranceReaction + + Element: SubstanceCategory + Concept: TBD + Description: "Categorization of the risk substance as a food, drug, or environmental agent. For difficult-to-classify substances, one can leave this field empty or choose the most typical category." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/allergy-intolerance-category // change to code? + + Element: AllergyIntoleranceType + Concept: TBD + Description: "Whether the sensitivity is an allergy or intolerance, in other words, high level information on the mechanism of the adverse reaction." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/allergy-intolerance-type + +/* + Element: ClinicalStatus + Concept: TBD + Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/allergy-clinical-status + + Element: AllergyVerificationStatus + Concept: TBD + Description: "Whether an assessment has been confirmed by testing or observation." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/allergy-verification-status +*/ + Element: MostRecentOccurrenceTime + Concept: TBD + Description: "The time of the last or latest of a series of events." + Value: dateTime + + Element: AllergyIntoleranceReaction + Concept: TBD + Description: "Observed reaction event associated with the allergy or intolerance, expressed as a condition." + 0..1 SubstanceCode + 1..* Manifestation + 0..1 BeginDateTime // from core + 0..1 Severity from http://hl7.org/fhir/ValueSet/reaction-event-severity + 0..1 RouteIntoBody + 0..1 CommentOrDescription + + Element: SubstanceCode + Concept: TBD + Description: "The substance triggering a particular allergy or intolerance reaction event. The substance may be the same as the substance cited in the AllergyIntolerance, but should be a specific substance rather than a class of substances, if known. For example, if the allergy intolerance FindingResult substance is 'shellfish' the substance code for the reaction might be 'oyster'." + Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered + + Element: Manifestation + Concept: TBD + Description: "The clinical symptoms/signs associated with the reaction event." + Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/clinical-findings + + + + + + + +/* Probably the most consistent way to define the absence (no known) allergy is to use an absence assertion, but this is not the way US Core has decided to go. Comments here are for reference only. + +EntryElement: AllergyIntoleranceAbsent +Based on: AbsenceAssertion +Description: "Used to record that a particular substance or class of substances does not pose a known elevated risk to the subject. The certainly of absence is always 'no known' because definitively ruling out an allergy intolerance is not possible." + FindingTopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" // We don't use a code that represents the absence of the condition and whose FindingResult would therefore be true or false (rather than present/absent) +1..1 AllergenIrritant +0..* SubstanceCategory +1..1 Certainty is SCT#443508001 "No history of clinical finding in subject (situation)" // no known + + +EntryElement: NoKnownDrugAllergy +Based on: AllergyIntoleranceAbsent + +TBD AllergenIrritant is "Any drug" +0..0 SubstanceCategory //is CAT#medication + +EntryElement: NoKnownFoodAllergyStatement +Based on: AllergyIntoleranceAbsent +Description: "Statement expressings no known allergies or hypersensitivity to any food substance." + +0..0 AllergenIrritant is "any food" +0..0 SubstanceCategory //is CAT#food + +EntryElement: NoKnownEvironmentalAllergy +Based on: AllergyIntoleranceAbsent +Description: "Statement expressings no known allergies or hypersensitivity to environmental substances." + +0..0 AllergenIrritant +0..0 SubstanceCategory //is CAT#environment + +EntryElement: NoKnownAllergy +Based on: AllergyIntoleranceAbsent +Concept: MTH#C0262580 +Description: "Statement expressings no known allergies or hypersensitivity to any food, drug, biologic, or environmental substance." +0..0 AllergenIrritant +0..0 SubstanceCategory + + +// TopicCode from NoKnownAllergyVS +// FindingTopicCode is SCT#716186003 "No known allergy (situation)" +// FindingTopicCode is SCT#428607008 "No known environmental allergy (situation)" +// FindingTopicCode is SCT#429625007 "No known food allergy (situation)" +// FindingTopicCode is SCT#409137002 "No known drug allergy (situation)" +*/ \ No newline at end of file diff --git a/parking_lot/cimi_allergy_map.txt b/spec/shr_allergy_map.txt similarity index 50% rename from parking_lot/cimi_allergy_map.txt rename to spec/shr_allergy_map.txt index 2845dbe4..63614f33 100644 --- a/parking_lot/cimi_allergy_map.txt +++ b/spec/shr_allergy_map.txt @@ -1,30 +1,30 @@ Grammar: Map 5.1 -Namespace: cimi.allergy +Namespace: shr.allergy Target: FHIR_STU_3 -AdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: +AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: // PersonOfRecord maps to patient // SourceOfInformation.Value maps to asserter // Signed.Value.EntityOrRole maps to recorder _Entry.CreationTime maps to assertedDate - AdverseSensitivityTopic.AllergenIrritant maps to code - AdverseSensitivityTopic.Type maps to type - AdverseSensitivityTopic.SubstanceCategory maps to category - VerificationStatus maps to verificationStatus + FindingResult maps to code + AllergyIntoleranceType maps to type + SubstanceCategory maps to category + FindingStatus maps to verificationStatus ClinicalStatus maps to clinicalStatus Criticality maps to criticality Onset maps to onset[x] MostRecentOccurrenceTime maps to lastOccurrence - AdverseReaction.Manifestation.Severity maps to reaction.severity - AdverseReaction.CausalAttribution.RouteIntoBody maps to reaction.exposureRoute - AdverseReaction.CausalAttribution.Substance maps to reaction.substance - AdverseReaction.Manifestation.Value maps to reaction.manifestation - AdverseReaction.CommentOrDescription maps to reaction.description - AdverseReaction.Onset maps to reaction.onset - - -NoAdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: + AllergyIntoleranceReaction.SubstanceCode maps to reaction.substance + AllergyIntoleranceReaction.Manifestation maps to reaction.manifestation + AllergyIntoleranceReaction.BeginDateTime maps to reaction.onset + AllergyIntoleranceReaction.Severity maps to reaction.severity + AllergyIntoleranceReaction.RouteIntoBody maps to reaction.exposureRoute + AllergyIntoleranceReaction.CommentOrDescription maps to reaction.description + +/* +NoAdverseSensitivityToSubstance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: // PersonOfRecord maps to patient // SourceOfInformation.Value maps to asserter // Signed.Value.EntityOrRole maps to recorder @@ -37,14 +37,11 @@ NoAdverseSensitivityToSubstanceStatement maps to http://hl7.org/fhir/us/core/Str constrain onset[x] to 0..0 constrain lastOccurrence to 0..0 constrain reaction to 0..0 - -NoKnownAllergyStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: +NoKnownAllergy maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: constrain clinicalStatus to 0..0 constrain criticality to 0..0 - - -/* fix code to SCT#716186003 + fix code to SCT#716186003 NoKnownDrugAllergyStatement: fix code to SCT#409137002 diff --git a/parking_lot/cimi_allergy_vs.txt b/spec/shr_allergy_vs.txt similarity index 83% rename from parking_lot/cimi_allergy_vs.txt rename to spec/shr_allergy_vs.txt index 6dd4451e..57f1538d 100644 --- a/parking_lot/cimi_allergy_vs.txt +++ b/spec/shr_allergy_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: cimi.allergy +Namespace: shr.allergy CodeSystem: SCT = http://snomed.info/sct @@ -12,10 +12,14 @@ Description: "Whether the allergy has been verified or not. Intentionally a sub AVS#confirmed "Confirmed" AVS#unconfirmed "Unconfirmed" +/* +MK - Do no use codes for "no known ____ allergy" +The correct way to express it is give the topic code as "Allegy or Intolerance" plus an AllergyIrritant and then give FindingResult as "Absent" + ValueSet: NoKnownAllergyVS Description: "Codes that express no known allergies to food, environmtal agents, drugs, etc." Includes codes descending from SCT#716186003 - +*/ /* ValueSet: FoodSubstanceVS Includes codes descending from TBD#TBD diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 7ef84d0a..ab28157b 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -276,10 +276,10 @@ Description: "A condition that is or may be present in a subject. 'Condition' is 1..* Category from ConditionCategoryVS 0..* AnatomicalLocation //0..* ConditionCause MK - reduce clutter -1..1 ClinicalStatus +1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical //0..1 WhenClinicallyRecognized MK - reduce clutter //0..1 PresentOnAdmission -0..1 Severity +0..1 Severity from http://hl7.org/fhir/ValueSet/condition-severity 0..1 Criticality 0..1 StageInformation 0..1 Onset @@ -293,7 +293,7 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Element: ClinicalStatus Concept: TBD Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." - Value: code from http://hl7.org/fhir/ValueSet/condition-clinical + Value: CodeableConcept Element: WhenClinicallyRecognized Concept: TBD @@ -308,7 +308,7 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Element: Severity Concept: MTH#C0392364 Description: "Degree of harshness or extent of a symptom, disorder, or condition." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/condition-severity + Value: CodeableConcept Element: Criticality Concept: MTH#C3858539 "Criticality" diff --git a/spec/shr_base_vs.txt b/spec/shr_base_vs.txt index 4fd0bac8..82f323c7 100644 --- a/spec/shr_base_vs.txt +++ b/spec/shr_base_vs.txt @@ -66,11 +66,11 @@ SCT#415684004 "Suspected" ValueSet: AbsenceCertaintyVS Description: "A code describing whether the finding is question is absent, unknown, or not suspected." -SCT#410516002 "Known absent" -SCT#410594000 "Definitely not present" +//SCT#410516002 "Known absent" MK - commented out - same as "Definitely not present" +SCT#410594000 "Definitely not present" SCT#410593006 "Probably not present" SCT#428263003 "NOT suspected" -// No known?? +SCT#443508001 "No history of clinical finding in subject (situation)" ValueSet: AtRiskContextVS Description: "A code describing the sense in which the subject has risk of a hypothetical (future) finding. At present, this value set contains only one code, but it is presented as a value set to allow for more nuanced meanings in the future." diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 3de32e73..138b5a06 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -176,15 +176,15 @@ Element: TimePeriod Concept: MTH#C1948053 Description: "A period of time defined by a start and end time, date, or year. If the start element is missing, the start of the period is not known. If the end element is missing, it means that the period is ongoing, or the start may be in the past, and the end date in the future, which means that period is expected/planned to end at the specified time. The end value includes any matching date/time. For example, the period 2011-05-23 to 2011-05-27 includes all the times from the start of the 23rd May through to the end of the 27th of May." -0..1 TimePeriodStart -0..1 TimePeriodEnd // lack of end time indicates the period was continuing at the time the entry was created +0..1 BeginDateTime +0..1 EndDateTime // lack of end time indicates the period was continuing at the time the entry was created - Element: TimePeriodStart // synonym "EffectiveDate" + Element: BeginDateTime // synonym "EffectiveDate" Concept: MTH#C1301880 Description: "The time at which something is to take effect, start, or did start. Boundary is considered inclusive." Value: dateTime // TODO: would like to have date or dateTime but that wouldn't be FHIR-compatible - Element: TimePeriodEnd + Element: EndDateTime Concept: MTH#C1522314 Description: "The time at which something is to end or did end. Boundary is considered inclusive." Value: dateTime // TODO: would like to have date or dateTime but that wouldn't be FHIR-compatible @@ -724,7 +724,7 @@ Description: "A digital Signature - XML DigSig, JWT, Graphical image of signatur Concept: TBD Description: "The party represented by the actual participant." Value: uri or ref(Organization) - + Element: RouteIntoBody Concept: MTH#C0013153 diff --git a/spec/shr_core_map.txt b/spec/shr_core_map.txt index c80f7ed3..b58fdc5b 100644 --- a/spec/shr_core_map.txt +++ b/spec/shr_core_map.txt @@ -52,8 +52,8 @@ HumanName maps to HumanName: EffectiveTimePeriod maps to period TimePeriod maps to Period: - TimePeriodStart maps to start - TimePeriodEnd maps to end + BeginDateTime maps to start + EndDateTime maps to end Geoposition maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-location: constrain position to 1..1 diff --git a/spec/shr_encounter.txt b/spec/shr_encounter.txt index 0468d6c6..6db12d7a 100644 --- a/spec/shr_encounter.txt +++ b/spec/shr_encounter.txt @@ -3,7 +3,7 @@ Namespace: shr.encounter Description: "The Encounter domain contains definitions that capture interactions between the person of record and healthcare providers, including inpatient, ambulatory care, and telecare." Uses: shr.core, shr.base, shr.entity -Element: Encounter +EntryElement: Encounter Based on: InformationItem Concept: TBD Description: "A description of an interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient." diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index a77b8562..ad3a4b9d 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -183,7 +183,6 @@ Description: "Services and space and equipment provided for a particular purpose Value: ref(Organization) - EntryElement: Substance Based on: Entity Concept: MTH#C0439861 From d52c71694863dc0a46555d84caaf1f6dfc9772f1 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 19 Nov 2018 10:15:41 -0500 Subject: [PATCH 114/289] Got rid of instance of Value: code Mapping can convert from CodeableConcept to code, so the distinction in the SHR model is not relevant. --- spec/shr_base.txt | 6 +++--- spec/shr_base_action.txt | 2 +- spec/shr_base_finding.txt | 6 +++--- spec/shr_core.txt | 21 ++++++++++----------- spec/shr_core_map.txt | 8 ++++---- spec/shr_core_vs.txt | 2 ++ spec/shr_entity.txt | 2 +- 7 files changed, 24 insertions(+), 23 deletions(-) diff --git a/spec/shr_base.txt b/spec/shr_base.txt index dd17a124..de2b7074 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -72,17 +72,17 @@ Description: "Metadata attributes that apply to any item represented in the stan Element: NarrativeQualifier Concept: TBD Description: "Additional information on how the narrative was generated, and the scope of information contained." - Value: code from http://hl7.org/fhir/ValueSet/narrative-status + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/narrative-status Element: SecurityLabel Concept: TBD Description: "A code that connects the entry to a security policy. Security labels can be updated when the resource changes, or whenever the security sub-system chooses to." - Value: Coding + Value: CodeableConcept Element: Tag Concept: TBD Description: "A code used to relate entries to categories or workflows. Applications are not required to consider the tags when interpreting the meaning of an entry." - Value: Coding + Value: CodeableConcept Element: DerivedFrom Concept: TBD diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index dc4c4a3c..60f45679 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -93,7 +93,7 @@ Description: "Abstract class representing a request for any type of action." Element: RequestIntent Concept: TBD Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." - Value: code from http://hl7.org/fhir/ValueSet/request-intent + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/request-intent Element: ExpectedPerformanceTime Concept: TBD diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index ab28157b..2f3ff590 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -85,7 +85,7 @@ Description: "An assertion, determination, opinion, evaluation, result, observat Element: FindingStatus Concept: TBD Description: "Indicates whether the finding is preliminary, amended, final, etc." - Value: code or CodeableConcept + Value: CodeableConcept EntryElement: Observation Based on: Finding @@ -97,7 +97,7 @@ For an Observation, the FindingTopicCode describes the aspect or property of the 0..1 FindingMethod 0..1 RelevantTime 0..* NonIndependentFinding - FindingStatus value is type code +// FindingStatus value is type code FindingStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 DeltaFlag 0..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered @@ -313,7 +313,7 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Element: Criticality Concept: MTH#C3858539 "Criticality" Description: "The potential clinical harm associated with a condition. When the worst case result is assessed to have a life-threatening or organ system threatening potential, it is considered to be of high criticality." - Value: code from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality Element: StageInformation Concept: MTH#C0699749 diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 138b5a06..e3c3da6b 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -30,7 +30,7 @@ Description: "A quantity with units, whose value may be bounded from above or be Element: Comparator Description: "A code indicated if the value represents an upper or lower bound" - Value: code from http://hl7.org/fhir/ValueSet/quantity-comparator + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/quantity-comparator Element: Units Concept: TBD @@ -78,7 +78,6 @@ Description: "Coding of a concept, drawn from a controlled vocabulary. Includes 0..1 CodeSystem 0..1 CodeSystemVersion 0..1 DisplayText -//0..* CodingQualifier Element: Code Description: "A coded value." @@ -90,7 +89,7 @@ Description: "Coding of a concept, drawn from a controlled vocabulary. Includes Element: CodingQualifier Concept: TBD Description: "A description of the purpose or origin of the code that assists in understanding the code." - Value: code from CodingQualifierVS + Value: CodeableConcept from CodingQualifierVS */ Element: CodeSystem Concept: TBD @@ -163,7 +162,7 @@ Description: "An electronic means of contacting an organization or individual." Element: Purpose Description: "Why the item is used." - Value: Coding + Value: CodeableConcept Element: ContactDetail @@ -229,7 +228,7 @@ Timing offers a choice of multiple OccurrenceTime (used is used to specify speci Element: DayOfWeek Concept: TBD Description: "A day of the week that the pattern should take place." - Value: code from http://hl7.org/fhir/ValueSet/days-of-week + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/days-of-week Element: TimeOfDay Concept: TBD @@ -240,7 +239,7 @@ Timing offers a choice of multiple OccurrenceTime (used is used to specify speci Element: DailyLifeEvent Concept: TBD Description: "A quotidian landmark, such as rising, mealtime, or bedtime, when an event should take place." - Value: code from http://hl7.org/fhir/ValueSet/event-timing + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/event-timing Element: LifeEventOffset Concept: TBD @@ -657,7 +656,7 @@ Description: "A file that contains audio, video, image, or similar content." Element: ContentType Concept: TBD Description: "Mime type of the content, with charset etc." - Value: code + Value: CodeableConcept Element: Language Concept: MTH#C0023008 @@ -713,7 +712,7 @@ Description: "A digital Signature - XML DigSig, JWT, Graphical image of signatur Element: SignatureType Concept: MTH#C0332307 Description: "Type of signature" - Value: Coding + Value: CodeableConcept Element: Signatory Concept: TBD @@ -796,18 +795,18 @@ Description: "A unique string that identifies a specific person or thing." Element: Status Concept: MTH#C0449438 Description: "The current standing or state." -Value: code or Coding or CodeableConcept +Value: CodeableConcept /* Element: TermMapping Description: "Represents an alternative (mapped) Concept associated with a source concept (i.e., CodedText.concept or the textual value of the CodedText when no equivalent concept has been defined), and the relative match of the mapped Concept with respect to the source Concept. Mappings may be used to add classification terms (e.g. adding ICD classifiers to SNOMED descriptive terms), for computational convenience, or to provide equivalents in other terminologies (e.g. across nursing vocabularies)." -Value: Coding +Value: CodeableConcept 1..1 Match 0..1 Purpose Element: Match Description: "The relative match of the mapped concept to the original (target) concept. Examples include broader (i.e., the mapped term is more general than the original), equivalent, narrower (e.g. mapped concept is 'atypical diabetes mellitus' and the original term is 'diabetes mellitus'), or unknown." - Value: Coding + Value: CodeableConcept */ Element: Name diff --git a/spec/shr_core_map.txt b/spec/shr_core_map.txt index b58fdc5b..63acbf69 100644 --- a/spec/shr_core_map.txt +++ b/spec/shr_core_map.txt @@ -31,7 +31,7 @@ Duration maps to Duration: Money maps to Money: Address maps to Address: - Purpose.Coding.Code maps to use + Purpose maps to use Type maps to type DisplayText maps to text AddressLine maps to line @@ -48,7 +48,7 @@ HumanName maps to HumanName: GivenName maps to given FamilyName maps to family Suffix maps to suffix - Purpose.Coding.Code maps to use + Purpose maps to use EffectiveTimePeriod maps to period TimePeriod maps to Period: @@ -64,7 +64,7 @@ Geoposition maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-loca ContactPoint maps to ContactPoint: TelecomNumberOrAddress maps to value Type maps to system - Purpose.Coding.Code maps to use + Purpose maps to use PriorityRank maps to rank EffectiveTimePeriod maps to period @@ -130,7 +130,7 @@ Annotation maps to Annotation: Identifier maps to Identifier: Text maps to value - Purpose.Coding.Code maps to use + Purpose maps to use Type maps to type CodeSystem maps to system EffectiveTimePeriod maps to period diff --git a/spec/shr_core_vs.txt b/spec/shr_core_vs.txt index 28d6705b..d3d6aa3d 100644 --- a/spec/shr_core_vs.txt +++ b/spec/shr_core_vs.txt @@ -18,6 +18,7 @@ ValueSet: CurrencyVS Description: "Value set containing ISO 4217 currency codes." Includes codes from CURRENCY +/* Not currently used, but worth preserving ValueSet: CodingQualifierVS #preferred_code "The preferred, standardized code for interoperability purposes. There should be only one coding in a CodeableConcept with this tag." #source_code "The code found in the information source for this entry, e.g., the raw, original, or first encoding." @@ -26,6 +27,7 @@ ValueSet: CodingQualifierVS #category_code "Indicates the code is a less specific term or a categorization of the source or standard code, i.e., a hypernym. For example, a code for 'vital sign' in the context of a body weight measurement would be a category code. Category codes can be useful for search and query purposes." #coded_expression "The code is an expression in an expression language defined by the CodeSystem" #default_code "The code was supplied by the system by default, because no specific coded value was available." +*/ ValueSet: ClockDirectionVS Description: "The relative direction of an object described using the analogy of a 12-hour clock to describe angles and directions. One imagines a clock face lying either upright or flat in front of oneself, and identifies the twelve hour markings with the directions in which they point." diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index ad3a4b9d..7719a68e 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -445,7 +445,7 @@ Description: "A person relevant to the health or social situation of the subject Element: AdministrativeGender Concept: MTH#C1550327 Description: "A gender classification used for administrative purposes. Administrative gender is not necessarily the same as a biological description or a gender identity. This attribute does not include terms related to clinical gender." - Value: code from http://hl7.org/fhir/ValueSet/administrative-gender + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/administrative-gender Element: Headshot Concept: TBD From 7f081870c95b8e46e65766a24841a147c7378651 Mon Sep 17 00:00:00 2001 From: mlterryMitre <40579130+mlterryMitre@users.noreply.github.com> Date: Mon, 19 Nov 2018 12:17:10 -0500 Subject: [PATCH 115/289] filterStrategy, procedure EntryElement change, FamilyHistory typo fix (#183) * filterStrategy, procedure EntryElement change, FamilyHistory typo fix * removed shr.oncology reference --- .DS_Store | Bin 8196 -> 8196 bytes spec/ig-mcode-config.json | 24 ++++++++++++++++++++---- spec/shr_familyhistory.txt | 2 +- spec/shr_procedure.txt | 6 +++--- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/.DS_Store b/.DS_Store index 5a2c6b15a6c9f5054acf66eb89de482f53de5f54..1ecf9e6e2168ba59d267a0322db5f35a2ae40aaa 100644 GIT binary patch delta 563 zcmZp1XmQxERFHA~9s&P>Wl4arN)O%*u7$qCjZAt@ylQJR!lSejWJ8mReMtnV%=%%?YvH z%9=+iA~`=d7wDB@K}H>@u)TV(ZFfdI42D><`o4bdY=jL9K35G7!WWqLTCnWC=I0;?@i_u|2MIKV>7$N OHBrh>H^@@;yAisp9lvG4%Qf6UkW=W-h zG6x4(R8~%kCnhDaB-J-R1*9oOU@HeFSVl=sN-7#8<6M*qBvYUo)YPSTLW(o1QUwyB z3bl23ctWx>^HKzgIXUYgt})~><`hWb49!VQO3eWqXKKbH6<(HFRGgWgC*aKqvE9m= zM=ByYKQ|ZX^ z3eK6VBKlQWT2e~F$(e^ofB_ijoM1;yt`WAIoFSGaxQ%fK<4(q1jJp|+FrH<+#(00S csfaw|gUO8I|2DHrd}G=CQ$&H0OcQ Date: Tue, 20 Nov 2018 11:41:29 -0500 Subject: [PATCH 116/289] New mapping files --- ...ageMcode.html => LandingPageOncocore.html} | 0 ...de-config.json => ig-oncocore-config.json} | 21 +-- ...erse_map.txt => shr_adverse_map_dstu2.txt} | 0 spec/shr_adverse_map_stu3.txt | 20 +++ spec/shr_allergy_map_dstu2.txt | 53 +++++++ ...lergy_map.txt => shr_allergy_map_stu3.txt} | 0 spec/shr_base_action.txt | 8 +- spec/shr_base_finding.txt | 11 +- spec/shr_base_map_dstu2.txt | 126 +++++++++++++++ ...shr_base_map.txt => shr_base_map_stu3.txt} | 0 spec/shr_brca.txt | 2 +- ...hr_brca_map.txt => shr_brca_map_dstu2.txt} | 0 spec/shr_brca_map_stu3.txt | 21 +++ spec/shr_composition_map_dstu2.txt | 12 ++ ...n_map.txt => shr_composition_map_stu3.txt} | 0 spec/shr_core.txt | 2 +- spec/shr_core_map_dstu2.txt | 150 ++++++++++++++++++ ...shr_core_map.txt => shr_core_map_stu3.txt} | 1 + spec/shr_encounter.txt | 4 +- spec/shr_encounter_map_dstu2.txt | 43 +++++ ...ter_map.txt => shr_encounter_map_stu3.txt} | 0 spec/shr_entity.txt | 33 ++-- spec/shr_entity_map_dstu2.txt | 136 ++++++++++++++++ ...entity_map.txt => shr_entity_map_stu3.txt} | 16 +- spec/shr_financial_map_dstu2.txt | 11 ++ ...ial_map.txt => shr_financial_map_stu3.txt} | 0 spec/shr_intervention.txt | 2 +- spec/shr_intervention_vs.txt | 2 +- spec/shr_medication.txt | 6 +- spec/shr_medication_map_dstu2.txt | 107 +++++++++++++ ...on_map.txt => shr_medication_map_stu3.txt} | 1 + spec/shr_occupation_map_dstu2.txt | 34 ++++ ...on_map.txt => shr_occupation_map_stu3.txt} | 0 spec/shr_oncologycore.txt | 2 +- spec/shr_oncologycore_vs.txt | 2 +- spec/shr_procedure_map_dstu2.txt | 82 ++++++++++ ...ure_map.txt => shr_procedure_map_stu3.txt} | 0 spec/shr_research_map_dstu2.txt | 32 ++++ ...arch_map.txt => shr_research_map_stu3.txt} | 0 spec/shr_tumor.txt | 2 +- 40 files changed, 890 insertions(+), 52 deletions(-) rename spec/{LandingPageMcode.html => LandingPageOncocore.html} (100%) rename spec/{ig-mcode-config.json => ig-oncocore-config.json} (54%) rename spec/{shr_adverse_map.txt => shr_adverse_map_dstu2.txt} (100%) create mode 100644 spec/shr_adverse_map_stu3.txt create mode 100644 spec/shr_allergy_map_dstu2.txt rename spec/{shr_allergy_map.txt => shr_allergy_map_stu3.txt} (100%) create mode 100644 spec/shr_base_map_dstu2.txt rename spec/{shr_base_map.txt => shr_base_map_stu3.txt} (100%) rename spec/{shr_brca_map.txt => shr_brca_map_dstu2.txt} (100%) create mode 100644 spec/shr_brca_map_stu3.txt create mode 100644 spec/shr_composition_map_dstu2.txt rename spec/{shr_composition_map.txt => shr_composition_map_stu3.txt} (100%) create mode 100644 spec/shr_core_map_dstu2.txt rename spec/{shr_core_map.txt => shr_core_map_stu3.txt} (97%) create mode 100644 spec/shr_encounter_map_dstu2.txt rename spec/{shr_encounter_map.txt => shr_encounter_map_stu3.txt} (100%) create mode 100644 spec/shr_entity_map_dstu2.txt rename spec/{shr_entity_map.txt => shr_entity_map_stu3.txt} (92%) create mode 100644 spec/shr_financial_map_dstu2.txt rename spec/{shr_financial_map.txt => shr_financial_map_stu3.txt} (100%) create mode 100644 spec/shr_medication_map_dstu2.txt rename spec/{shr_medication_map.txt => shr_medication_map_stu3.txt} (99%) create mode 100644 spec/shr_occupation_map_dstu2.txt rename spec/{shr_occupation_map.txt => shr_occupation_map_stu3.txt} (100%) create mode 100644 spec/shr_procedure_map_dstu2.txt rename spec/{shr_procedure_map.txt => shr_procedure_map_stu3.txt} (100%) create mode 100644 spec/shr_research_map_dstu2.txt rename spec/{shr_research_map.txt => shr_research_map_stu3.txt} (100%) diff --git a/spec/LandingPageMcode.html b/spec/LandingPageOncocore.html similarity index 100% rename from spec/LandingPageMcode.html rename to spec/LandingPageOncocore.html diff --git a/spec/ig-mcode-config.json b/spec/ig-oncocore-config.json similarity index 54% rename from spec/ig-mcode-config.json rename to spec/ig-oncocore-config.json index 17174a3c..3e3ebf98 100644 --- a/spec/ig-mcode-config.json +++ b/spec/ig-oncocore-config.json @@ -1,21 +1,22 @@ { - "projectName": "HL7 FHIR Implementation Guide: Minimum Common Oncology Data Elements, Release 1 - US Realm (Draft for Comment 1)", - "projectShorthand": "mcode", - "projectURL": "http://hl7.org/fhir/us/mcode/", - "fhirURL": "http://hl7.org/fhir/us/mcode/", - "entryTypeURL": "http://hl7.org/fhir/us/mcode/spec/", + "projectName": "HL7 FHIR Implementation Guide: Core Oncology Data Elements, Release 1 - US Realm (Draft for Comment 1)", + "projectShorthand": "oncocore", + "projectURL": "http://hl7.org/fhir/us/oncocore/", + "fhirURL": "http://hl7.org/fhir/us/oncocore/", + "entryTypeURL": "http://hl7.org/fhir/us/oncocore/spec/", + "fhirTarget": "FHIR_DSTU_2", "implementationGuide": { - "npmName": "mcode", + "npmName": "oncocore", "version": "0.2.0", "includeLogicalModels": true, "includeModelDoc": true, - "indexContent": "LandingPageMcode.html", - "historyLink": "http://hl7.org/fhir/us/mcode/history.html", + "indexContent": "LandingPageOncocore.html", + "historyLink": "http://hl7.org/fhir/us/oncocore/history.html", "primarySelectionStrategy": { "strategy": "namespace", - "primary": ["mcode"], + "primary": ["oncocore"], "hideSupporting": true } }, @@ -23,7 +24,7 @@ { "filter": true, "strategy": "namespace", - "target": ["mcode"] + "target": ["oncocore"] }, "publisher": "The HL7 Cancer Interoperability Group sponsored by Clinical Interoperability Council Work Group (CIC)", "contact": [ diff --git a/spec/shr_adverse_map.txt b/spec/shr_adverse_map_dstu2.txt similarity index 100% rename from spec/shr_adverse_map.txt rename to spec/shr_adverse_map_dstu2.txt diff --git a/spec/shr_adverse_map_stu3.txt b/spec/shr_adverse_map_stu3.txt new file mode 100644 index 00000000..5a92e154 --- /dev/null +++ b/spec/shr_adverse_map_stu3.txt @@ -0,0 +1,20 @@ +Grammar: Map 5.1 +Namespace: shr.adverse +Target: FHIR_STU_3 + +AdverseEvent maps to AdverseEvent: +// _Entry.SignedBy.Value.EntityOrRole maps to recorder ?? +// EntityOrRole is the name of the property; don't say Signed.Value.Role + Type maps to type + CommentOrDescription maps to description + Patient maps to subject + AssociatedStudy maps to study + Seriousness maps to seriousness + OccurrenceTime maps to date + Outcome maps to outcome +// FHIR TODO: AdverseEvent.eventParticipant is underdefined (no role) + CausalAttribution.PossibleCause maps to suspectEntity.instance + CausalAttribution.Certainty maps to suspectEntity.causalityAssessment + +AdverseDrugReaction maps to AdverseEvent: + constrain suspectEntity to 1..* \ No newline at end of file diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt new file mode 100644 index 00000000..55f4ff70 --- /dev/null +++ b/spec/shr_allergy_map_dstu2.txt @@ -0,0 +1,53 @@ +Grammar: Map 5.1 +Namespace: shr.allergy +Target: FHIR_DSTU_2 + + +AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: +// PersonOfRecord maps to patient +// SourceOfInformation.Value maps to asserter +// Signed.Value.EntityOrRole maps to recorder + _Entry.CreationTime maps to assertedDate + FindingResult maps to code + AllergyIntoleranceType maps to type + SubstanceCategory maps to category + FindingStatus maps to verificationStatus + ClinicalStatus maps to clinicalStatus + Criticality maps to criticality + Onset maps to onset[x] + MostRecentOccurrenceTime maps to lastOccurrence + AllergyIntoleranceReaction.SubstanceCode maps to reaction.substance + AllergyIntoleranceReaction.Manifestation maps to reaction.manifestation + AllergyIntoleranceReaction.BeginDateTime maps to reaction.onset + AllergyIntoleranceReaction.Severity maps to reaction.severity + AllergyIntoleranceReaction.RouteIntoBody maps to reaction.exposureRoute + AllergyIntoleranceReaction.CommentOrDescription maps to reaction.description + +/* +NoAdverseSensitivityToSubstance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: +// PersonOfRecord maps to patient +// SourceOfInformation.Value maps to asserter +// Signed.Value.EntityOrRole maps to recorder + _Entry.CreationTime maps to assertedDate + AdverseSensitivityTopic.TopicCode maps to code + constrain type to 0..0 + constrain category to 0..0 + constrain clinicalStatus to 0..0 + constrain criticality to 0..0 + constrain onset[x] to 0..0 + constrain lastOccurrence to 0..0 + constrain reaction to 0..0 + +NoKnownAllergy maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: +constrain clinicalStatus to 0..0 +constrain criticality to 0..0 + fix code to SCT#716186003 + +NoKnownDrugAllergyStatement: + fix code to SCT#409137002 + +NoKnownFoodAllergyStatement: + fix code to SCT#429625007 + +NoKnownEnvironmentalAllergyStatement: + fix code to SCT#428607008 */ diff --git a/spec/shr_allergy_map.txt b/spec/shr_allergy_map_stu3.txt similarity index 100% rename from spec/shr_allergy_map.txt rename to spec/shr_allergy_map_stu3.txt diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 60f45679..552fee15 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -13,10 +13,10 @@ Description: "Abstract class representing any type of action." 0..1 Encounter // actions often take place during an encounter 0..* Reason - Element: Reason - Concept: MTH#C0566251 - Description: "The justification for an action or non-action, etc." - Value: string or CodeableConcept or ref(Finding) + Element: Reason + Concept: MTH#C0566251 + Description: "The justification for an action or non-action, etc." + Value: string or CodeableConcept or ref(Finding) Abstract Element: ActionPerformed Based on: ActionStatement diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 2f3ff590..eb86f29b 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -100,7 +100,7 @@ For an Observation, the FindingTopicCode describes the aspect or property of the // FindingStatus value is type code FindingStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 DeltaFlag -0..* Category from http://hl7.org/fhir/ValueSet/observation-category if covered +0..1 Category from http://hl7.org/fhir/ValueSet/observation-category if covered // MK Category cardinality from 0..* to 0..1 to be compatible with DSTU 2 0..1 AnatomicalLocation 0..1 CommentOrDescription 0..1 Interpretation @@ -116,11 +116,6 @@ For an Observation, the FindingTopicCode describes the aspect or property of the 1..1 ref(EntityOrRole) 0..1 RelationshipToPersonOfRecord - Element: RelationshipToPersonOfRecord - Concept: MTH#C0015608 - Description: "The relationship to the person of record." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype if covered - Element: Interpretation Concept: MTH#C0420833 Description: "A clinical interpretation of a finding (applies to both assertions and observation)." @@ -189,7 +184,7 @@ EntryElement: LaboratoryObservation Based on: Observation Description: "A coded finding based on a specimen collected from a patient." FindingTopicCode from LaboratoryCodeVS if covered -1..* Category +1..1 Category // MK changed from 1..* to 1..1 to be compatible with DSTU 2 1..1 Patient 1..1 Specimen 0..0 AnatomicalLocation // Location is determined indirectly from Specimen.CollectionSite @@ -273,7 +268,7 @@ Description: "A condition that is or may be present in a subject. 'Condition' is 1..1 Patient 0..0 SpecificFocusOfFinding // always the patient? 0..1 FindingMethod -1..* Category from ConditionCategoryVS +1..1 Category from ConditionCategoryVS // DSTU 2 change - category is 1..1 in Argonaut 0..* AnatomicalLocation //0..* ConditionCause MK - reduce clutter 1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt new file mode 100644 index 00000000..e7b704ec --- /dev/null +++ b/spec/shr_base_map_dstu2.txt @@ -0,0 +1,126 @@ +Grammar: Map 5.1 +Namespace: shr.base +Target: FHIR_DSTU_2 + +Entry maps to DomainResource: + EntryId maps to id + constrain meta to 1..1 + Version maps to meta.versionId + EntryType maps to meta.profile + LastUpdated maps to meta.lastUpdated + Language maps to language + Narrative maps to text + SecurityLabel maps to meta.security + Tag maps to meta.tag + +InformationItem maps to DomainResource: + +Narrative maps to Narrative: + NarrativeText maps to div + NarrativeQualifier maps to status + + +Observation maps to Observation: + Patient maps to subject +// SourceOfInformation.Value maps to performer + FindingTopicCode maps to code + FindingMethod maps to method + CommentOrDescription maps to comments // dstu 2 change (name change) + Category maps to category + AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance // dstu 2 change (name change) + Device maps to device + Specimen maps to specimen + ReferenceRange maps to referenceRange + ReferenceRange.Range.LowerBound maps to referenceRange.low + ReferenceRange.Range.UpperBound maps to referenceRange.high + ReferenceRange.Type maps to referenceRange.meaning // dstu 2 change +// ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo // dstu 2 change (no such attribute) +// ReferenceRange.ApplicableAgeRange maps to referenceRange.age // dstu 2 change (no such attribute) + NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) + NonIndependentFinding.FindingTopicCode maps to component.code + NonIndependentFinding.FindingResult maps to component.value[x] + NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason + //NonIndependentFinding.Interpretation maps to component.interpretation // dstu 2 change (no such attribute) + NonIndependentFinding.ReferenceRange maps to component.referenceRange + fix related.type to #has-member + PanelMembers maps to related + PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) + FindingResult maps to value[x] + ExceptionValue maps to dataAbsentReason + Interpretation maps to interpretation +// Issued maps to issued + FindingStatus maps to status + RelevantTime maps to effective[x] + Encounter maps to encounter // dstu 2 change (name change) + DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta + + +LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-observationresults: // dstu2 different mapping target + Patient maps to subject +// SourceOfInformation.Value maps to performer + FindingTopicCode maps to code + FindingMethod maps to method + CommentOrDescription maps to comments // dstu 2 change (name change) + Category maps to category + AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance // dstu 2 change (name change) + Device maps to device + Specimen maps to specimen + ReferenceRange maps to referenceRange + ReferenceRange.Range.LowerBound maps to referenceRange.low + ReferenceRange.Range.UpperBound maps to referenceRange.high + ReferenceRange.Type maps to referenceRange.meaning // dstu 2 change +// ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo // dstu 2 change (no such attribute) +// ReferenceRange.ApplicableAgeRange maps to referenceRange.age // dstu 2 change (no such attribute) + NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) + NonIndependentFinding.FindingTopicCode maps to component.code + NonIndependentFinding.FindingResult maps to component.value[x] + NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason + //NonIndependentFinding.Interpretation maps to component.interpretation // dstu 2 change (no such attribute) + NonIndependentFinding.ReferenceRange maps to component.referenceRange + fix related.type to #has-member + PanelMembers maps to related + PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) + FindingResult maps to value[x] + ExceptionValue maps to dataAbsentReason + Interpretation maps to interpretation +// Issued maps to issued + FindingStatus maps to status + RelevantTime maps to effective[x] +// dstu 2 change (name change) + Encounter maps to encounter + DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta + +ConditionPresentAssertion maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-condition: +// dstu 2 change (different mapping target) +// _Entry.CreationTime maps to assertedDate // why doesn't this work? +// SourceOfInformation.Value maps to asserter // why doesn't this work? + Patient maps to patient + Category maps to category + ObjectIdentifier maps to identifier + FindingTopicCode maps to code + AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite + Encounter maps to encounter + ClinicalStatus maps to clinicalStatus + FindingStatus maps to verificationStatus + Onset maps to onset[x] + Abatement maps to abatement[x] + Severity maps to severity + StageInformation maps to stage + StageInformation.StageSummary maps to stage.summary + StageInformation.StageDetail maps to stage.assessment + +ConditionAbsentAssertion maps to Basic: +// There is no mechanism in FHIR (not Condition, not Observation) to say "Patient does not have Condition X" + +BodyStructurePresent maps to BodySite: + Patient maps to patient + ObjectIdentifier maps to identifier + AnatomicalLocationStructured.AnatomicalLocationOrLandmarkCode maps to code + // dstu 2 change (naming) + AnatomicalLocationStructured.Laterality maps to modifier (slice on = coding.code) + AnatomicalLocationStructured.AnatomicalDirection maps to modifier + AnatomicalLocationStructured.CommentOrDescription maps to description + AnatomicalLocationStructured.Media maps to image \ No newline at end of file diff --git a/spec/shr_base_map.txt b/spec/shr_base_map_stu3.txt similarity index 100% rename from spec/shr_base_map.txt rename to spec/shr_base_map_stu3.txt diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 1b62a281..e3ca7674 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: brca Description: "SHR implementation of ASCO requirements." -Uses: shr.core, shr.base, shr.entity, mcode +Uses: shr.core, shr.base, shr.entity, oncocore CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org diff --git a/spec/shr_brca_map.txt b/spec/shr_brca_map_dstu2.txt similarity index 100% rename from spec/shr_brca_map.txt rename to spec/shr_brca_map_dstu2.txt diff --git a/spec/shr_brca_map_stu3.txt b/spec/shr_brca_map_stu3.txt new file mode 100644 index 00000000..18f23fa5 --- /dev/null +++ b/spec/shr_brca_map_stu3.txt @@ -0,0 +1,21 @@ +Grammar: Map 5.1 +Namespace: brca +Target: FHIR_STU_3 + +/* +BreastSpecimen maps to Specimen: + ColdIschemiaTime maps to processing (slice on = procedure) + ColdIschemiaTime.TimePeriod maps to processing.time[x] + ColdIschemiaTime._Concept maps to processing.procedure + constrain processing.additive to 0..0 +*/ +// fix processing.description to "ColdIschemiaTime" + + +/* +GeneticVariant: + constrain related to 0..0 + +LymphaticInvolvement: + constrain related to 0..0 +*/ \ No newline at end of file diff --git a/spec/shr_composition_map_dstu2.txt b/spec/shr_composition_map_dstu2.txt new file mode 100644 index 00000000..8072f363 --- /dev/null +++ b/spec/shr_composition_map_dstu2.txt @@ -0,0 +1,12 @@ +Grammar: Map 5.1 +Namespace: shr.composition +Target: FHIR_DSTU_2 + +//InformationItem maps to Resource: + +Composition maps to Composition: + Section maps to section + Section.InformationItem maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) + + + // (slice on = coding.code; slice strategy = includes) \ No newline at end of file diff --git a/spec/shr_composition_map.txt b/spec/shr_composition_map_stu3.txt similarity index 100% rename from spec/shr_composition_map.txt rename to spec/shr_composition_map_stu3.txt diff --git a/spec/shr_core.txt b/spec/shr_core.txt index e3c3da6b..2ed8e13e 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -661,7 +661,7 @@ Description: "A file that contains audio, video, image, or similar content." Element: Language Concept: MTH#C0023008 Description: "A human language, spoken or written." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/languages if covered + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/languages // if covered // DSTU 2 change -- language has required binding in Argonaut Element: ResourceLocation Concept: TBD diff --git a/spec/shr_core_map_dstu2.txt b/spec/shr_core_map_dstu2.txt new file mode 100644 index 00000000..81a3f2f1 --- /dev/null +++ b/spec/shr_core_map_dstu2.txt @@ -0,0 +1,150 @@ +Grammar: Map 5.1 +Namespace: shr.core +Target: FHIR_DSTU_2 + + +// Code types map direction to FHIR +Coding maps to Coding: + Code maps to code + CodeSystem maps to system + CodeSystemVersion maps to version + DisplayText maps to display + +CodeableConcept maps to CodeableConcept: + Coding maps to coding + DisplayText maps to text + +Quantity maps to Quantity: + Number maps to value + Units.Coding.Code maps to code + Units.Coding.CodeSystem maps to system + Units.Coding.DisplayText maps to unit + Comparator maps to comparator + +// The following are profiles on Quantity; no additional attributes are defined in SHR +SimpleQuantity maps to SimpleQuantity: +Age maps to Age: +IntegerQuantity maps to Count: +Distance maps to Distance: +Duration maps to Duration: +Money maps to Money: + +Address maps to Address: + Purpose maps to use + Type maps to type + DisplayText maps to text + AddressLine maps to line + City maps to city + District maps to district + State maps to state + PostalCode maps to postalCode + Country maps to country + EffectiveTimePeriod maps to period + +HumanName maps to HumanName: + NameAsText maps to text + Prefix maps to prefix + GivenName maps to given + FamilyName maps to family + Suffix maps to suffix + Purpose maps to use + EffectiveTimePeriod maps to period + +TimePeriod maps to Period: + BeginDateTime maps to start + EndDateTime maps to end + +Geoposition maps to Location: // dstu 2 change (different mapping target) + constrain position to 1..1 + Latitude maps to position.latitude + Longitude maps to position.longitude + Altitude maps to position.altitude + + +ContactPoint maps to ContactPoint: + TelecomNumberOrAddress maps to value + Type maps to system + Purpose maps to use + PriorityRank maps to rank + EffectiveTimePeriod maps to period + +/* dstu 2 change (no suitable target) +ContactDetail maps to ContactDetail: + HumanName.NameAsText maps to name + ContactPoint maps to telecom +*/ + +Range maps to Range: + LowerBound maps to low + UpperBound maps to high + +Ratio maps to Ratio: + Numerator maps to numerator + Denominator maps to denominator + +Timing maps to Timing: + OccurrenceTime maps to event + TimingCode maps to code + EventDuration.DurationRange.LowerBound.SimpleQuantity.Number maps to repeat.duration + EventDuration.DurationRange.UpperBound.SimpleQuantity.Number maps to repeat.durationMax + EventDuration.DurationRange.LowerBound.SimpleQuantity.Units.Coding.Code maps to repeat.durationUnits // dstu 2 change (attribute name) + RecurrencePattern.RecurrenceInterval.Duration.Number maps to repeat.period + RecurrencePattern.RecurrenceInterval.Duration.Units.Coding.Code maps to repeat.periodUnits // dstu 2 change (attribute name) + constrain repeat.periodMax to 0..0 // TODO: why? +// RecurrencePattern.DayOfWeek maps to repeat.dayOfWeek // dstu 2 change (no such attribute) +// RecurrencePattern.TimeOfDay maps to repeat.timeOfDay // dstu 2 change (no such attribute) + RecurrencePattern.DailyLifeEvent maps to repeat.when +// RecurrencePattern.LifeEventOffset maps to repeat.offset // dstu 2 change (no such attribute) + RecurrencePattern.CountPerInterval.MinCount maps to repeat.frequency + RecurrencePattern.CountPerInterval.MaxCount maps to repeat.frequencyMax + +SampledData maps to SampledData: + DataAsString maps to data + Origin maps to origin + MillisecondsBetweenSamples maps to period + CorrectionFactor maps to factor + LowerLimit maps to lowerLimit + UpperLimit maps to upperLimit + Dimensions maps to dimensions + +Media maps to Attachment: + BinaryData maps to data + ContentType maps to contentType + Language maps to language + ResourceLocation maps to url + ResourceSize maps to size + Hash maps to hash + Title maps to title + CreationTime maps to creation + + // Note that AnatomicalLocationStructured does not have a patient, whereas FHIR BodySite does (and it is required!). From FHIR 3.5 documentation: "The BodyStructure resource is not ... intended for describing the type of anatomical location but rather a specific body site on a specific patient." Note that BodySite is renamed BodyStructure in r4. + +AnatomicalLocationStructured maps to BodySite: + AnatomicalLocationOrLandmarkCode maps to code + // dstu 2 change (attribute name) + Laterality maps to modifier (slice on = coding.code) + // dstu 2 change (attribute name) + AnatomicalDirection maps to modifier + CommentOrDescription maps to description + Media maps to image + +Annotation maps to Annotation: + Text maps to text + Author maps to author[x] + OccurrenceTime maps to time + +Identifier maps to Identifier: + Text maps to value + Purpose maps to use + Type maps to type + CodeSystem maps to system + EffectiveTimePeriod maps to period + Issuer maps to assigner + +Signature maps to Signature: + SignatureType maps to type + CreationTime maps to when + Signatory maps to who[x] +// OnBehalfOf maps to onBehalfOf[x] // dstu 2 change (no such attribute) + ContentType maps to contentType + BinaryData maps to blob \ No newline at end of file diff --git a/spec/shr_core_map.txt b/spec/shr_core_map_stu3.txt similarity index 97% rename from spec/shr_core_map.txt rename to spec/shr_core_map_stu3.txt index 63acbf69..e04bae48 100644 --- a/spec/shr_core_map.txt +++ b/spec/shr_core_map_stu3.txt @@ -55,6 +55,7 @@ TimePeriod maps to Period: BeginDateTime maps to start EndDateTime maps to end +// To do: consider mapping Geoposition to https://www.hl7.org/fhir/extension-geolocation.html Geoposition maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-location: constrain position to 1..1 Latitude maps to position.latitude diff --git a/spec/shr_encounter.txt b/spec/shr_encounter.txt index 6db12d7a..bc7d0698 100644 --- a/spec/shr_encounter.txt +++ b/spec/shr_encounter.txt @@ -11,12 +11,12 @@ Description: "A description of an interaction between a patient and healthcare p 0..1 EncounterClass 0..* EncounterType 0..1 TimePeriod -1..1 Status from http://hl7.org/fhir/ValueSet/encounter-status +1..1 Status from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 0..1 PartOf value is type ref(Encounter) 0..* Diagnosis // SHR Extension 0..1 ref(ClinicalNote) - + Element: EncounterClass Description: "Concepts representing classification of patient encounter such as ambulatory (outpatient), inpatient, emergency, home health or others due to local variations." Value: CodeableConcept diff --git a/spec/shr_encounter_map_dstu2.txt b/spec/shr_encounter_map_dstu2.txt new file mode 100644 index 00000000..3e0ad55f --- /dev/null +++ b/spec/shr_encounter_map_dstu2.txt @@ -0,0 +1,43 @@ +Grammar: Map 5.1 +Namespace: shr.encounter +Target: FHIR_DSTU_2 + + +Encounter maps to Encounter: + Patient maps to patient // dstu 2 change (name change) + EncounterType maps to type +// ServiceProvider maps to serviceProvider + Status maps to status + TimePeriod maps to period +// Participation.Participant maps to participant +// Participation.Participant[Entity] maps to participant.individual ??? +// constrain participant.type to 0..1 +// Participation.Participant.ParticipationType maps to participant.type +// Participation.Participant.ParticipationPeriod maps to participant.period +// RelatedRequest.Value maps to incomingReferral +// constrain location to 0..1 +// Facility maps to location.location +// Reason maps to reason +// what maps to apppointment? RelatedPromise? +// TBD "HealthConcern" maps to indication + +/* +EncounterRequested maps to ReferralRequest: + SignedBy.EntityOrRole maps to requester.agent + Patient maps to subject + ReferralDate maps to authoredOn +//ReferralSourceType + EncounterTopic.??? maps to type +//TreatmentCooperation +//PaymentSource + EncounterStatus maps to status +//RequestIntent + EncounterExpectedPerformanceTime maps to occurrence[x] + EncounterExpectedPerformerType maps to specialty +//ExpectedPerformer +//ExpectedMethod + EncounterPriorityRank maps to priority +//PerformerInstructions +//PatientInstructions +//CommunicationMethod +*/ \ No newline at end of file diff --git a/spec/shr_encounter_map.txt b/spec/shr_encounter_map_stu3.txt similarity index 100% rename from spec/shr_encounter_map.txt rename to spec/shr_encounter_map_stu3.txt diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 7719a68e..0119de3e 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -73,7 +73,7 @@ Description: "A person who practices a healing art." Description: "A right to practice medicine obtained by training and certification." 1..1 Type from http://hl7.org/fhir/ValueSet/c80-practice-codes 0..1 EffectiveTimePeriod - 0..1 Issuer + 0..1 ref(Issuer) // or http://www.wpc-edi.com/reference/codelists/healthcare/health-care-provider-taxonomy-code-set/ @@ -83,6 +83,12 @@ Description: "A person in a role defined in relationship to a patient" 0..1 ref(Person) 0..1 RelationshipToPersonOfRecord 0..1 EffectiveTimePeriod +1..1 Person.HumanName // DSTU 2 change (max cardinality of 1 imposed by DSTU 2) + + Element: RelationshipToPersonOfRecord + Concept: MTH#C0015608 + Description: "The relationship to the person of record." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype // DSTU 2 change -- change from extensible to required since this value set is required in DSTU 2 Element: PatientOrPractitioner Based on: EntityOrRole @@ -148,13 +154,18 @@ Description: "A set of entities (personnel, material, or places) to be considere Description: "A person or entity in a group." 1..1 Member 0..1 ParticipationPeriod - 1..1 ActiveFlag + 1..1 InactiveFlag Element: Member Concept: TBD Description: "A person or entity in a group." Value: ref(Patient) or ref(Practitioner) or ref(Device) or ref(Medication) or ref(Substance) + Element: InactiveFlag + Concept: TBD + Description: "Indicates if the member is inactive in the context of the group." + Value: boolean + EntryElement: Facility Based on: Entity @@ -165,7 +176,7 @@ Description: "Services and space and equipment provided for a particular purpose 1..1 Location 0..1 MobileFacility 0..1 ContactPoint -1..1 ManagingOrganization +1..1 ref(ManagingOrganization) Element: FacilityName Concept: MTH#C3261404 @@ -287,16 +298,16 @@ Description: "A person relevant to the health or social situation of the subject 0..1 DateOfBirth 1..1 AdministrativeGender 0..* Address -0..* Headshot +0..* Photo 0..* ContactPoint 0..* LanguageUsed 0..1 ActiveFlag -0..1 MaritalStatus +0..1 MaritalStatus //0..1 PlaceOfBirth //0..1 MultipleBirth -//0..1 BirthSex -//0..1 Race -//0..1 Ethnicity +0..1 BirthSex +0..1 Race +0..1 Ethnicity //0..1 MothersMaidenName //0..1 FathersName //0..1 SocialSecurityNumber @@ -425,7 +436,7 @@ Description: "A person relevant to the health or social situation of the subject Element: MaritalStatus Concept: MTH#C0024819 Description: "The most recent marital status of a person." - Value: CodeableConcept from FHIR/marital-status if covered + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/marital-status // if covered // DSTU 2 change -- MaritalStatus has a required binding in Argonaut Element: AnonymizedFlag Concept: MTH#C3858751 @@ -447,7 +458,7 @@ Description: "A person relevant to the health or social situation of the subject Description: "A gender classification used for administrative purposes. Administrative gender is not necessarily the same as a biological description or a gender identity. This attribute does not include terms related to clinical gender." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/administrative-gender - Element: Headshot + Element: Photo Concept: TBD Description: "A photograph showing a person's face." Value: Media @@ -537,7 +548,7 @@ Element: Device Based on: Entity Description: "A specific durable physical device used in diagnosis or treatment. The value is the coding for a type of device, for example, a CPAP machine. The same device might be used on multiple patients." 1..1 Type from DeviceVS // currently (4/2018) called 'key' in CIMI -0..* DeviceUdi +1..1 DeviceUdi // DSTU 2 change -- Argonaut requires 1..1 Udi (see http://build.fhir.org/ig/Healthedata1/Argo-DSTU2/StructureDefinition-argo-device.html) 0..1 VendorModelNumber // called 'model' in CIMI 0..1 ManufacturerName // string, not ref(Organization) - only because of mapping to FHIR 0..1 ManufactureDate diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt new file mode 100644 index 00000000..7ad9e994 --- /dev/null +++ b/spec/shr_entity_map_dstu2.txt @@ -0,0 +1,136 @@ +Grammar: Map 5.1 +Namespace: shr.entity +Target: FHIR_DSTU_2 + +Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient: // dstu 2 change (different mapping target) + Person.ActiveFlag maps to active + Person.HumanName maps to name + Person.AdministrativeGender maps to gender + Person.Photo maps to photo + Person.Address maps to address + Person.ContactPoint maps to telecom + Person.LanguageUsed.Language maps to communication + Person.DateOfBirth maps to birthDate + Person.MaritalStatus maps to maritalStatus +// PlaceOfBirth maps to http://hl7.org/fhir/StructureDefinition/birthPlace +// MultipleBirthInformation.IsMultipleBirth maps to multipleBirth[x].boolean +// MultipleBirthInformation.MultipleBirthOrder maps to multipleBirth[x].integer + Person.BirthSex maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-birthsex + Person.Race maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-race + Person.Ethnicity maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-ethnicity +// MothersMaidenName maps to http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName +// MedicalInterpreterNeeded maps to http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired +// Deceased maps to deceased[x].boolean +// Deceased.DateOfDeath maps to deceased[x].dateTime + +Practitioner maps to Practitioner: // dstu 2 change (different mapping target) + Person.ActiveFlag maps to active + Person.HumanName maps to name + Person.AdministrativeGender maps to gender + Person.Photo maps to photo + Person.Address maps to address + Person.ContactPoint maps to telecom + Person.LanguageUsed.Language maps to communication + NationalProviderIdentifier maps to identifier + Qualification maps to qualification + Qualification.Type maps to qualification.code + Qualification.EffectiveTimePeriod maps to qualification.period + Qualification.Issuer maps to qualification.issuer + +RelatedPerson maps to RelatedPerson: +// Person.ActiveFlag maps to active // dstu 2 change (no such attribute) + Person.HumanName maps to name + Person.DateOfBirth maps to birthDate + Person.AdministrativeGender maps to gender + Person.Address maps to address + Person.Photo maps to photo + Person.ContactPoint maps to telecom + RelationshipToPersonOfRecord maps to relationship + EffectiveTimePeriod maps to period + +Organization maps to Organization: + OrganizationName maps to name +// OrganizationAlias maps to alias // dstu 2 change (no such attribute) + Type maps to type + OrganizationIdentifier maps to identifier + Address maps to address + ContactPoint maps to telecom + constrain contact to 0..0 + ActiveFlag maps to active + PartOf maps to partOf + +Group maps to Group: +// ActiveFlag maps to active // dstu 2 change (no such attribute) + Type maps to type + Actual maps to actual + constrain code to 0..0 // why? + Title maps to name + GroupCharacteristic.GroupCharacteristicValue maps to characteristic.value[x] + GroupCharacteristic.GroupCharacteristicCode maps to characteristic.code + GroupCharacteristic.ExcludeFlag maps to characteristic.exclude + GroupCharacteristic.TimePeriod maps to characteristic.period + MemberParticipation.Member maps to member.entity + MemberParticipation.ParticipationPeriod maps to member.period + MemberParticipation.InactiveFlag maps to member.inactive + Count maps to quantity + +Facility maps to Location: + FacilityName maps to name + Location[Address] maps to address + Location[Geoposition].Latitude maps to position.latitude + Location[Geoposition].Longitude maps to position.longitude + Location[Geoposition].Altitude maps to position.altitude + ContactPoint maps to telecom + ManagingOrganization maps to managingOrganization + Type maps to type + +Substance maps to Substance: + Type maps to code + Ingredient maps to ingredient + Ingredient.IngredientAmount maps to ingredient.quantity + Ingredient.SubstanceOrCode[Substance] maps to ingredient.substance + +Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medication: + Type maps to code + DoseForm maps to product.form // dstu 2 change (different attribute) + Ingredient.SubstanceOrCode[Substance] maps to product.ingredient.item[x].Substance // dstu 2 change (different attribute) + Ingredient.SubstanceOrCode[Medication] maps to product.ingredient.item[x].Medication // dstu 2 change + Ingredient.IngredientAmount maps to product.ingredient.amount // dstu 2 change (different attribute) +// Ingredient.IsActiveIngredient maps to ingredient.isActive // dstu 2 change (no such attribute) + Brand.IsBrand maps to isBrand +// OverTheCounter maps to isOverTheCounter // dstu 2 change (no such attribute) + Manufacturer maps to manufacturer + constrain product.batch to 0..1 // dstu 2 change (different attribute) + LotNumber maps to product.batch.lotNumber // dstu 2 change (different attribute) + ExpirationDate maps to product.batch.expirationDate // dstu 2 change (different attribute) + Package maps to package.container + +Specimen maps to Specimen: + AccessionIdentifier maps to accessionIdentifier + SpecimenStatus maps to status + Type maps to type + CollectionSource maps to subject + SourceSpecimen maps to parent + ReceivedTime maps to receivedTime +// SpecimenCollectionPerformed.AmountOrSize maps to collection.quantity +// SpecimenCollectionPerformed.BodySite maps to collection.bodySite +// SpecimenCollectionPerformed.OccurrenceTimeOrPeriod maps to collection.collected[x] +// SpecimenCollectionPerformed.Participation.Participant maps to collection.collector +// SpecimenCollectionPerformed.Method maps to collection.method +// SpecimenCollectionPerformed.RelatedRequest.Value maps to request + SpecimenContainer.Identifier maps to container.identifier + SpecimenContainer.CommentOrDescription maps to container.description + SpecimenContainer.Type maps to container.type + SpecimenContainer.Capacity maps to container.capacity + SpecimenContainer.SpecimenQuantity maps to container.specimenQuantity + SpecimenContainer.Additive maps to container.additive[x] + +Device maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-device: + Type maps to type + DeviceUdi maps to udi // dstu 2 change (different attribute) + VendorModelNumber maps to model + ManufacturerName maps to manufacturer + ManufactureDate maps to manufactureDate + ExpirationDate maps to expiry // dstu 2 change (different attribute) + Version maps to version + Url maps to url diff --git a/spec/shr_entity_map.txt b/spec/shr_entity_map_stu3.txt similarity index 92% rename from spec/shr_entity_map.txt rename to spec/shr_entity_map_stu3.txt index ebfe6cbb..5147614a 100644 --- a/spec/shr_entity_map.txt +++ b/spec/shr_entity_map_stu3.txt @@ -6,7 +6,7 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: Person.ActiveFlag maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender - Person.Headshot maps to photo + Person.Photo maps to photo Person.Address maps to address Person.ContactPoint maps to telecom Person.LanguageUsed.Language maps to communication @@ -15,9 +15,9 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: // PlaceOfBirth maps to http://hl7.org/fhir/StructureDefinition/birthPlace // MultipleBirthInformation.IsMultipleBirth maps to multipleBirth[x].boolean // MultipleBirthInformation.MultipleBirthOrder maps to multipleBirth[x].integer -// BirthSex maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex -// Race maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-race -// Ethnicity maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity + Person.BirthSex maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex + Person.Race maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-race + Person.Ethnicity maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity // MothersMaidenName maps to http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName // MedicalInterpreterNeeded maps to http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired // Deceased maps to deceased[x].boolean @@ -27,7 +27,7 @@ Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-pra Person.ActiveFlag maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender - Person.Headshot maps to photo + Person.Photo maps to photo Person.Address maps to address Person.ContactPoint maps to telecom Person.LanguageUsed.Language maps to communication @@ -43,7 +43,7 @@ RelatedPerson maps to RelatedPerson: Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender Person.Address maps to address - Person.Headshot maps to photo + Person.Photo maps to photo Person.ContactPoint maps to telecom RelationshipToPersonOfRecord maps to relationship EffectiveTimePeriod maps to period @@ -57,7 +57,7 @@ Organization maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-org ContactPoint maps to telecom ActiveFlag maps to active PartOf maps to partOf - ContactPoint maps to contact + fix contact to 0..0 Group maps to Group: ActiveFlag maps to active @@ -71,7 +71,7 @@ Group maps to Group: GroupCharacteristic.TimePeriod maps to characteristic.period MemberParticipation.Member maps to member.entity MemberParticipation.ParticipationPeriod maps to member.period - MemberParticipation.ActiveFlag maps to member.inactive // TODO this is an inverse TF mapping + MemberParticipation.InactiveFlag maps to member.inactive Count maps to quantity Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-location: diff --git a/spec/shr_financial_map_dstu2.txt b/spec/shr_financial_map_dstu2.txt new file mode 100644 index 00000000..59daee1f --- /dev/null +++ b/spec/shr_financial_map_dstu2.txt @@ -0,0 +1,11 @@ +Grammar: Map 5.0 +Namespace: shr.financial +Target: FHIR_DSTU_2 + + +Coverage maps to Coverage: +// Status maps to status // dstu 2 change (no such) + Type maps to type + InsuranceMemberId maps to subscriberId + EffectiveTimePeriod maps to period + PolicyHolder[Patient] maps to policyHolder // dstu 2 change (more restricted type) \ No newline at end of file diff --git a/spec/shr_financial_map.txt b/spec/shr_financial_map_stu3.txt similarity index 100% rename from spec/shr_financial_map.txt rename to spec/shr_financial_map_stu3.txt diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index fe4cccd9..0ceedcb4 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -1,5 +1,5 @@ Grammar: DataElement 5.0 -Namespace: mcode +Namespace: oncocore Description: "SHR implementation of ASCO requirements." Uses: shr.core, shr.base, shr.entity, shr.medication, shr.composition, shr.procedure diff --git a/spec/shr_intervention_vs.txt b/spec/shr_intervention_vs.txt index 4f54a28f..7a5b7a2d 100644 --- a/spec/shr_intervention_vs.txt +++ b/spec/shr_intervention_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: mcode +Namespace: oncocore CodeSystem: LNC = http://loinc.org CodeSystem: SCT = http://snomed.info/sct diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index bead96ab..d3fa1225 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -74,7 +74,7 @@ Description: "A record of the use of a medication. If the medication is given as 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category Status from http://hl7.org/fhir/ValueSet/medication-statement-status 0..0 Method // because of Dosage.Method - +0..1 Reason // DSTU 2 change (upper card imposed by DSTU 2) EntryElement: MedicationAdministered Based on: ActionPerformed @@ -86,7 +86,8 @@ Description: "A record of the use of a medication. If the medication is given as 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category Status from http://hl7.org/fhir/ValueSet/medication-admin-status 0..0 Method // because of Dosage.Method - Participation.Participant is type FHIRMedicationAdministrationParticipant +0..1 Participation + Participation.Participant is type FHIRMedicationAdministrationParticipant // DSTU 2 change (max cardinality = 1) 0..0 Participation.ParticipationType RelatedRequest value is type ref(MedicationRequested) @@ -133,6 +134,7 @@ Description: "An order for a medication to be dispensed and instructions for use 0..1 QuantityPerDispense 0..1 SupplyDuration 0..1 SubstitutionAllowed +0..1 Reason // DSTU 2 change (upper cardinality of 1 imposed by DSTU 2) Element: NumberOfRefillsAllowed Concept: TBD diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt new file mode 100644 index 00000000..5c8de8a2 --- /dev/null +++ b/spec/shr_medication_map_dstu2.txt @@ -0,0 +1,107 @@ +Grammar: Map 5.1 +Namespace: shr.medication +Target: FHIR_DSTU_2 + +/* DSTU 2 change (mapping target does not exist) +Dosage maps to Dosage: + DoseAmount maps to dose[x] + TimingOfDoses maps to timing + AsNeededIndicator maps to asNeeded[x] + DosageInstructionsText maps to text + AdditionalDosageInstruction maps to additionalInstruction + RouteIntoBody maps to route + DosageMethod maps to method + DosageBodySite.AnatomicalLocationPrecoordinated maps to site + MaximumDosePerTimePeriod maps to maxDosePerPeriod +*/ + +MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationstatement: +// SourceOfInformation.Value maps to informationSource +// _Entry.CreationTime maps to dateAsserted // however, date asserted and date recorded may not be the same + Patient maps to patient + constrain wasNotTaken to 0..0 + constrain reasonNotTaken to 0..0 + constrain dosage to 0..1 +// Dosage maps to dosage // DSTU 2 change (mapping target does not exist) + Medication maps to medication[x] +// Category maps to category // DSTU 2 change (no such attribute) +// fix taken to #y // DSTU 2 change (no such attribute) + Reason maps to reasonForUse[x] + OccurrenceTimeOrPeriod maps to effective[x] + Status maps to status +// DSTU 2 change (added Dosage as in-line element) + Dosage.DoseAmount maps to dosage.quantity[x] + Dosage.TimingOfDoses maps to dosage.timing + Dosage.AsNeededIndicator maps to dosage.asNeeded[x] + Dosage.DosageInstructionsText maps to dosage.text +// AdditionalDosageInstruction maps to additionalInstruction // DSTU 2 change (no such attribute) + Dosage.RouteIntoBody maps to dosage.route + Dosage.DosageMethod maps to dosage.method + Dosage.DosageBodySite.AnatomicalLocationPrecoordinated maps to dosage.site[x] + Dosage.MaximumDosePerTimePeriod maps to dosage.maxDosePerPeriod + +MedicationAdministered maps to MedicationAdministration: +// SourceOfInformation.Value maps to informationSource + Patient maps to patient + Encounter maps to encounter // DSTU 2 change (name change) + RelatedRequest maps to prescription + constrain wasNotGiven to 0..0 // DSTU 2 change (name change) + constrain reasonNotGiven to 0..0 +// Dosage maps to dosage // DSTU 2 change (mapping target does not exist) + Medication maps to medication[x] +// Category maps to category // DSTU 2 change (no such attribute) + Reason maps to reasonGiven // DSTU 2 change (name change) + OccurrenceTimeOrPeriod maps to effectiveTime[x] + Status maps to status + Participation.Participant maps to practitioner // DSTU 2 change (more restrictive type) +// Participation.OnBehalfOf maps to performer.onBehalfOf // DSTU 2 change (no such attribute) +// DSTU 2 change (added Dosage as in-line element) + Dosage.DoseAmount.SimpleQuantity maps to dosage.quantity + Dosage.RouteIntoBody maps to dosage.route + Dosage.DosageMethod maps to dosage.method + Dosage.DosageBodySite.AnatomicalLocationPrecoordinated maps to dosage.site[x] +// TODO - represent rate and DosageBodySite ref(BodySite) + + +MedicationNotAdministered maps to MedicationAdministration: +// SourceOfInformation.Value maps to informationSource + Medication maps to medication[x] +// Category maps to category // DSTU 2 change (no such attribute) + fix wasNotGiven to true + constrain reasonGiven to 0..0 // new + constrain dosage to 0..0 + Reason maps to reasonNotGiven + NonOccurrenceTimeOrPeriod maps to effective[x] + + +MedicationRequested maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationorder: + Medication maps to medication[x] + NumberOfRefillsAllowed maps to dispenseRequest.numberOfRepeatsAllowed + QuantityPerDispense maps to dispenseRequest.quantity + SupplyDuration maps to dispenseRequest.expectedSupplyDuration + constrain dosageInstruction to 0..1 + // DSTU 2 change (name change) + Reason maps to reason[x] + Status maps to status + ExpectedPerformanceTime maps to dispenseRequest.validityPeriod +// PriorityRank maps to priority // DSTU 2 change (no such attribute) +// DSTU 2 change (different data type) + PerformerInstructions maps to note +// ExpectedPerformer[Organization] maps to dispenseRequest.performer // DSTU 2 change (no such attribute) + constrain note to 0..1 +// Dosage maps to dosageInstruction // DSTU 2 change (mapping target does not exist) +// DSTU 2 change (added Dosage as in-line element) + Dosage.DoseAmount maps to dosageInstruction.dose[x] + Dosage.TimingOfDoses maps to dosageInstruction.timing + Dosage.AsNeededIndicator maps to dosageInstruction.asNeeded[x] + Dosage.DosageInstructionsText maps to dosageInstruction.text +// AdditionalDosageInstruction maps to additionalInstruction // DSTU 2 change (no such attribute) + Dosage.RouteIntoBody maps to dosageInstruction.route + Dosage.DosageMethod maps to dosageInstruction.method + Dosage.DosageBodySite.AnatomicalLocationPrecoordinated maps to dosageInstruction.site[x] + Dosage.MaximumDosePerTimePeriod maps to dosageInstruction.maxDosePerPeriod + + + + + \ No newline at end of file diff --git a/spec/shr_medication_map.txt b/spec/shr_medication_map_stu3.txt similarity index 99% rename from spec/shr_medication_map.txt rename to spec/shr_medication_map_stu3.txt index a4c62558..ba8686b6 100644 --- a/spec/shr_medication_map.txt +++ b/spec/shr_medication_map_stu3.txt @@ -16,6 +16,7 @@ Dosage maps to Dosage: MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: // SourceOfInformation.Value maps to informationSource // _Entry.CreationTime maps to dateAsserted // however, date asserted and date recorded may not be the same + Patient maps to subject constrain reasonNotTaken to 0..0 constrain dosage to 0..1 Dosage maps to dosage diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt new file mode 100644 index 00000000..cd0749b1 --- /dev/null +++ b/spec/shr_occupation_map_dstu2.txt @@ -0,0 +1,34 @@ +Grammar: Map 5.1 +Namespace: odh +Target: FHIR_DSTU_2 + +SocialHistoryObservation maps to Observation: + Patient maps to subject + FindingTopicCode maps to code + Category maps to category + NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) + NonIndependentFinding.FindingTopicCode maps to component.code + NonIndependentFinding.FindingResult maps to component.value[x] + NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason + //NonIndependentFinding.Interpretation maps to component.interpretation + NonIndependentFinding.ReferenceRange maps to component.referenceRange + FindingResult maps to value[x] + ExceptionValue maps to dataAbsentReason + RelevantTime maps to effective[x] + Encounter maps to context + constrain implicitRules to 0..0 + constrain contained to 0..0 + constrain modifierExtension to 0..0 + constrain basedOn to 0..0 + constrain bodySite to 0..0 + constrain specimen to 0..0 + constrain device to 0..0 + constrain referenceRange to 0..0 + +EmployerOrganization maps to Organization: + +EmployerPerson maps to RelatedPerson: + RelationshipToPersonOfRecord maps to relationship + +//FocalSubjectModifier maps to RelatedPerson: +// RelationshipToPersonOfRecord maps to relationship \ No newline at end of file diff --git a/spec/shr_occupation_map.txt b/spec/shr_occupation_map_stu3.txt similarity index 100% rename from spec/shr_occupation_map.txt rename to spec/shr_occupation_map_stu3.txt diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index a4c7ce12..5865951b 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -1,5 +1,5 @@ Grammar: DataElement 5.0 -Namespace: mcode +Namespace: oncocore Description: "SHR implementation of ASCO requirements." Uses: shr.core, shr.base, shr.entity diff --git a/spec/shr_oncologycore_vs.txt b/spec/shr_oncologycore_vs.txt index 2f0653f8..fdd6d075 100644 --- a/spec/shr_oncologycore_vs.txt +++ b/spec/shr_oncologycore_vs.txt @@ -1,5 +1,5 @@ Grammar: ValueSet 5.0 -Namespace: mcode +Namespace: oncocore CodeSystem: SCT = http://snomed.info/sct diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt new file mode 100644 index 00000000..76c473a4 --- /dev/null +++ b/spec/shr_procedure_map_dstu2.txt @@ -0,0 +1,82 @@ +Grammar: Map 5.1 +Namespace: shr.procedure +Target: FHIR_DSTU_2 + +ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) + ProcedureCode maps to code + Patient maps to subject + Category maps to category + constrain notPerformed to 0..0 // DSTU 2 change (name change) + constrain reasonNotPerformed to 0..0 // DSTU 2 change (name change) + AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite +// PartOf maps to partOf // DSTU 2 change (no such attribute) + Annotation maps to notes + Encounter maps to encounter + Reason maps to reason[x] + OccurrenceTimeOrPeriod maps to performed[x] + Participation maps to performer + Participation.Participant maps to performer.actor + Participation.ParticipationType maps to performer.role +// Participation.OnBehalfOf maps to performer.onBehalfOf // DSTU 2 change (no such attribute) + Status maps to status +// TODO The following statement is failing it might be a bug +// Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method + RelatedRequest.Value maps to request +// RelatedPlan maps to definition + Outcome maps to outcome + Facility maps to location + + +ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) + ProcedureCode maps to code + Patient maps to subject + Category maps to category +// TODO the following is causing a crash +// fix notDone to true + Reason maps to notDoneReason + AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + Annotation maps to notes // DSTU 2 change (attribute name change) + constrain performed[x] to 0..0 + constrain performer to 0..0 + fix status to http://hl7.org/fhir/event-status#suspended // FHIR is lacking a not-done status (see Gforge issue #14256) +// Encounter maps to context + RelatedRequest.Value maps to basedOn +// RelatedPlan maps to definition + constrain outcome to 0..0 + constrain location to 0..0 + +SurgicalProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) + DirectSite maps to http://hl7.org/fhir/StructureDefinition/procedure-targetBodySite + IndirectSite maps to http://hl7.org/fhir/StructureDefinition/procedure-approachBodySite + SurgicalApproach maps to http://hl7.org/fhir/StructureDefinition/procedure-approachBodySite + + +ProcedureRequested maps to ProcedureRequest: +// _Entry.CreationTime maps to authoredOn +// _Entry.SignedBy.Value.EntityOrRole maps to requester + ProcedureCode maps to code +// Category maps to category // DSTU 2 change (no such attribute) +// constrain doNotPerform to 0..0 // DSTU 2 change (no such attribute) + Patient maps to subject + AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + Encounter maps to encounter + Reason maps to reason[x] + Status maps to status +// RequestIntent maps to intent // DSTU 2 change (no such attribute) + ExpectedPerformanceTime maps to scheduled[x] // DSTU 2 change (name change) +// ExpectedPerformerType maps to performerType // DSTU 2 change (no such attribute) + ExpectedPerformer maps to performer + PriorityRank maps to priority + +ProcedureRequestedAgainst maps to Basic: +/* In DSTU 2, there is not way to specify a procedure NOT to perform using Procedure resource + fix doNotPerform to true + fix intent to http://hl7.org/fhir/request-intent#proposal + _Entry.CreationTime maps to authoredOn + _Entry.SignedBy.Value.EntityOrRole maps to requester + ProcedureCode maps to code + Category maps to category + Patient maps to subject + AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + Reason maps to reason.reasonCodeableConcept +*/ \ No newline at end of file diff --git a/spec/shr_procedure_map.txt b/spec/shr_procedure_map_stu3.txt similarity index 100% rename from spec/shr_procedure_map.txt rename to spec/shr_procedure_map_stu3.txt diff --git a/spec/shr_research_map_dstu2.txt b/spec/shr_research_map_dstu2.txt new file mode 100644 index 00000000..1b2c6696 --- /dev/null +++ b/spec/shr_research_map_dstu2.txt @@ -0,0 +1,32 @@ +Grammar: Map 5.1 +Namespace: shr.research +Target: FHIR_DSTU_2 + + +Study maps to Basic: +/* dstu 2 change (no suitable target) + Title maps to title + Identifier maps to identifier + PartOf maps to partOf + Status maps to status + Enrollment maps to enrollment + EffectiveTimePeriod maps to period + Sponsor maps to sponsor + Jurisdiction maps to jurisdiction + ContactDetail maps to contact + PrincipalInvestigator maps to principalInvestigator + Facility maps to site + TerminationReason maps to reasonStopped + Annotation maps to note + StudyArm.Title maps to arm.name + StudyArm.Type maps to arm.code + StudyArm.CommentOrDescription maps to arm.description +*/ + +ResearchSubject maps to Basic: +/* dstu 2 change (no suitable target) + Patient maps to individual + Study maps to study + Status maps to status + ParticipationPeriod maps to period +*/ \ No newline at end of file diff --git a/spec/shr_research_map.txt b/spec/shr_research_map_stu3.txt similarity index 100% rename from spec/shr_research_map.txt rename to spec/shr_research_map_stu3.txt diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt index 2720bf14..d71a5d3d 100644 --- a/spec/shr_tumor.txt +++ b/spec/shr_tumor.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: tumor Description: "SHR implementation of ASCO requirements." -Uses: shr.core, shr.base, shr.entity, mcode +Uses: shr.core, shr.base, shr.entity, oncocore EntryElement: TumorDimensions From 2fc78a9c233a6f0ca409eee64504af4a395aa32e Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 20 Nov 2018 13:37:54 -0500 Subject: [PATCH 117/289] Update ig-oncocore-config.json --- spec/ig-oncocore-config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/ig-oncocore-config.json b/spec/ig-oncocore-config.json index 3e3ebf98..72aab7e9 100644 --- a/spec/ig-oncocore-config.json +++ b/spec/ig-oncocore-config.json @@ -4,7 +4,7 @@ "projectURL": "http://hl7.org/fhir/us/oncocore/", "fhirURL": "http://hl7.org/fhir/us/oncocore/", "entryTypeURL": "http://hl7.org/fhir/us/oncocore/spec/", - "fhirTarget": "FHIR_DSTU_2", + "fhirTarget": "FHIR_STU_3", "implementationGuide": { "npmName": "oncocore", @@ -37,4 +37,4 @@ ] } ] -} \ No newline at end of file +} From d2cf2d0c395c75ce1b6cacc11e9cee21163b2f73 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 20 Nov 2018 13:56:45 -0500 Subject: [PATCH 118/289] Update config.json --- spec/config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/config.json b/spec/config.json index 08c4891c..6118857e 100644 --- a/spec/config.json +++ b/spec/config.json @@ -3,6 +3,7 @@ "projectShorthand": "EXAMPLE", "projectURL": "http://example.com", "fhirURL": "http://example.com/fhir", + "fhirTarget": "FHIR_STU_3", "implementationGuide": { "indexContent": "exampleIndexContent.html" }, From 654f2288b96f3de86292b2e2114fe2fcf3120e46 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 20 Nov 2018 14:01:14 -0500 Subject: [PATCH 119/289] Commented out conflicting value sets --- spec/config.json | 1 + spec/ig-breast-config.json | 1 + spec/ig-odh-config.json | 1 + spec/ig-shr-config.json | 1 + spec/ig-wound-config.json | 1 + spec/shr_base_action.txt | 6 +++--- spec/shr_core.txt | 2 +- spec/shr_encounter.txt | 2 +- spec/shr_entity_map_dstu2.txt | 3 +-- spec/shr_medication.txt | 2 +- spec/shr_procedure.txt | 8 ++++---- spec/shr_procedure_map_dstu2.txt | 2 +- 12 files changed, 17 insertions(+), 13 deletions(-) diff --git a/spec/config.json b/spec/config.json index 08c4891c..3046b8cc 100644 --- a/spec/config.json +++ b/spec/config.json @@ -7,6 +7,7 @@ "indexContent": "exampleIndexContent.html" }, "publisher": "Example Publisher", + "fhirTarget": "FHIR_STU_3", "contact": [ { "telecom": [ diff --git a/spec/ig-breast-config.json b/spec/ig-breast-config.json index 92329434..7082c6af 100644 --- a/spec/ig-breast-config.json +++ b/spec/ig-breast-config.json @@ -4,6 +4,7 @@ "projectURL": "http://hl7.org/fhir/us/breastcancer/", "fhirURL": "http://hl7.org/fhir/us/breastcancer/", "entryTypeURL": "http://hl7.org/fhir/us/breastcancer/spec/", + "fhirTarget": "FHIR_STU_3", "implementationGuide": { "npmName": "hl7.fhir.us.breastcancer", diff --git a/spec/ig-odh-config.json b/spec/ig-odh-config.json index e1ef206f..bfc12f47 100644 --- a/spec/ig-odh-config.json +++ b/spec/ig-odh-config.json @@ -4,6 +4,7 @@ "projectURL": "http://hl7.org/fhir/us/odh", "fhirURL": "http://hl7.org/fhir/us/odh", "entryTypeURL": "http://hl7.org/fhir/us/odh/spec", + "fhirTarget": "FHIR_STU_3", "implementationGuide": { "npmName": "hl7.fhir.us.odh", diff --git a/spec/ig-shr-config.json b/spec/ig-shr-config.json index f8e7fb06..49c3870f 100644 --- a/spec/ig-shr-config.json +++ b/spec/ig-shr-config.json @@ -4,6 +4,7 @@ "projectURL": "http://standardhealthrecord.org", "fhirURL": "http://standardhealthrecord.org/fhir", "entryTypeURL": "http://standardhealthrecord.org/spec/", + "fhirTarget": "FHIR_STU_3", "implementationGuide": { "npmName": "hl7.fhir.us.shr", diff --git a/spec/ig-wound-config.json b/spec/ig-wound-config.json index e670bad4..8a2e7248 100644 --- a/spec/ig-wound-config.json +++ b/spec/ig-wound-config.json @@ -4,6 +4,7 @@ "projectURL": "http://hl7.org/fhir/us/sw", "fhirURL": "http://hl7.org/fhir/us/sw", "entryTypeURL": "http://hl7.org/fhir/us/sw/spec", + "fhirTarget": "FHIR_STU_3", "provinenceInfo": { "leadAuthor": { "name":"Mark Kramer", diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 552fee15..03f1fe84 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -23,7 +23,7 @@ Based on: ActionStatement Description: "Abstract class representing performance of any type of action." 1..1 OccurrenceTimeOrPeriod // when the action took place 0..* Participation -1..1 Status should be from http://hl7.org/fhir/ValueSet/event-status +1..1 Status // should be from http://hl7.org/fhir/ValueSet/event-status DSTU 2 change (conflict in required data sets) 0..1 Method 0..1 RelatedRequest //0..1 EnactsPlan @@ -79,13 +79,13 @@ Description: "Abstract class representing performance of any type of action." Abstract Element: ActionRequested Based on: ActionStatement Description: "Abstract class representing a request for any type of action." -1..1 Status should be from http://hl7.org/fhir/ValueSet/request-status +1..1 Status //should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) 1..1 RequestIntent 0..1 ExpectedPerformanceTime 0..1 ExpectedPerformerType 0..1 ExpectedPerformer 0..1 ExpectedMethod -0..1 PriorityRank should be from http://hl7.org/fhir/ValueSet/request-priority +0..1 PriorityRank //should be from http://hl7.org/fhir/ValueSet/request-priority // DSTU2 change (conflicting value sets) 0..1 PerformerInstructions 0..1 PatientInstructions 0..1 CommunicationMethod diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 2ed8e13e..e35ed8ef 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -661,7 +661,7 @@ Description: "A file that contains audio, video, image, or similar content." Element: Language Concept: MTH#C0023008 Description: "A human language, spoken or written." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/languages // if covered // DSTU 2 change -- language has required binding in Argonaut + Value: CodeableConcept // from http://hl7.org/fhir/ValueSet/languages if covered // DSTU 2 change -- language has required binding in Argonaut Element: ResourceLocation Concept: TBD diff --git a/spec/shr_encounter.txt b/spec/shr_encounter.txt index bc7d0698..081ac555 100644 --- a/spec/shr_encounter.txt +++ b/spec/shr_encounter.txt @@ -11,7 +11,7 @@ Description: "A description of an interaction between a patient and healthcare p 0..1 EncounterClass 0..* EncounterType 0..1 TimePeriod -1..1 Status from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 +1..1 Status //from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 0..1 PartOf value is type ref(Encounter) 0..* Diagnosis // SHR Extension diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index 7ad9e994..601818f6 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -93,8 +93,7 @@ Substance maps to Substance: Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medication: Type maps to code DoseForm maps to product.form // dstu 2 change (different attribute) - Ingredient.SubstanceOrCode[Substance] maps to product.ingredient.item[x].Substance // dstu 2 change (different attribute) - Ingredient.SubstanceOrCode[Medication] maps to product.ingredient.item[x].Medication // dstu 2 change + Ingredient.SubstanceOrCode maps to product.ingredient.item[x] // dstu 2 change (different attribute) Ingredient.IngredientAmount maps to product.ingredient.amount // dstu 2 change (different attribute) // Ingredient.IsActiveIngredient maps to ingredient.isActive // dstu 2 change (no such attribute) Brand.IsBrand maps to isBrand diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index d3fa1225..5461c368 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -126,7 +126,7 @@ EntryElement: MedicationRequested Based on: ActionRequested Concept: TBD Description: "An order for a medication to be dispensed and instructions for use." - Status from http://hl7.org/fhir/ValueSet/medication-request-status + Status //from http://hl7.org/fhir/ValueSet/medication-request-status DSTU 2 change (incompatible required value sets) PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority 1..1 Medication 0..1 Dosage diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index efe791c8..668b56c3 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -22,7 +22,7 @@ Description: "A procedure that has been performed." 0..* ref(Device) 0..1 Location Participation.OnBehalfOf value is type ref(Organization) - Status must be from http://hl7.org/fhir/ValueSet/event-status + Status // must be from http://hl7.org/fhir/ValueSet/event-status // Participation.Participant.EntityOrRole is type ref(Practitioner) Participation.Participant is type FHIRProcedureParticipant RelatedRequest value is type ref(ProcedureRequested) @@ -59,13 +59,13 @@ Based on: ActionNotPerformed //0..1 PartOf value is type ref(ProcedurePerformed) ??? 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation -1..1 Status must be from http://hl7.org/fhir/ValueSet/event-status +1..1 Status // must be from http://hl7.org/fhir/ValueSet/event-status // DSTU 2 change (different required value sets in v2 and v3) RelatedRequest value is type ref(ProcedureRequested) EntryElement: ProcedureRequested Based on: ActionRequested - PriorityRank must be from http://hl7.org/fhir/ValueSet/request-priority // required - Status must be from http://hl7.org/fhir/ValueSet/request-status + PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) + Status // must be from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) 1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* AnatomicalLocation 0..1 PartOf value is type ref(ProcedurePerformed) diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 76c473a4..1546542c 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -38,7 +38,7 @@ ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinitio Annotation maps to notes // DSTU 2 change (attribute name change) constrain performed[x] to 0..0 constrain performer to 0..0 - fix status to http://hl7.org/fhir/event-status#suspended // FHIR is lacking a not-done status (see Gforge issue #14256) + fix status to http://hl7.org/fhir/ValueSet/procedure-status#aborted // FHIR is lacking a not-done status (see Gforge issue #14256) // Encounter maps to context RelatedRequest.Value maps to basedOn // RelatedPlan maps to definition From a13b71d49185b3b35915279ae66fb411ac3638f5 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 20 Nov 2018 15:00:41 -0500 Subject: [PATCH 120/289] Update shr_entity_map_stu3.txt --- spec/shr_entity_map_stu3.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index 5147614a..5c328dcc 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -57,7 +57,7 @@ Organization maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-org ContactPoint maps to telecom ActiveFlag maps to active PartOf maps to partOf - fix contact to 0..0 + constrain contact to 0..0 Group maps to Group: ActiveFlag maps to active @@ -126,6 +126,7 @@ Specimen maps to Specimen: Device maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-device: Type maps to type + constrain udi to 1..1 DeviceUdi maps to udi.carrierHRF VendorModelNumber maps to model ManufacturerName maps to manufacturer @@ -135,4 +136,4 @@ Device maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-device: Url maps to url - \ No newline at end of file + From 5439f62f0a48087198835f2a266db3c4da3fe436 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 20 Nov 2018 15:27:40 -0500 Subject: [PATCH 121/289] Updates compile without errors --- spec/shr_entity_map_stu3.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index 5147614a..cf10c7f2 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -57,7 +57,7 @@ Organization maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-org ContactPoint maps to telecom ActiveFlag maps to active PartOf maps to partOf - fix contact to 0..0 + constrain contact to 0..0 Group maps to Group: ActiveFlag maps to active @@ -126,6 +126,7 @@ Specimen maps to Specimen: Device maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-device: Type maps to type + constrain udi to 1..1 DeviceUdi maps to udi.carrierHRF VendorModelNumber maps to model ManufacturerName maps to manufacturer From b2f3112e692309479a2eac18e291557c54cbad6d Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 20 Nov 2018 17:21:01 -0500 Subject: [PATCH 122/289] Fixed some DSTU2 mapping issues --- spec/config.json | 1 - spec/ig-oncocore-config.json | 2 +- spec/ig-shr-config.json | 2 +- spec/shr_allergy.txt | 4 ++-- spec/shr_allergy_map_dstu2.txt | 18 +++++++++--------- spec/shr_core.txt | 4 ++-- spec/shr_entity.txt | 8 ++++---- spec/shr_entity_map_dstu2.txt | 2 +- 8 files changed, 20 insertions(+), 21 deletions(-) diff --git a/spec/config.json b/spec/config.json index 76f3a1ac..6118857e 100644 --- a/spec/config.json +++ b/spec/config.json @@ -8,7 +8,6 @@ "indexContent": "exampleIndexContent.html" }, "publisher": "Example Publisher", - "fhirTarget": "FHIR_STU_3", "contact": [ { "telecom": [ diff --git a/spec/ig-oncocore-config.json b/spec/ig-oncocore-config.json index 72aab7e9..1b2d16d4 100644 --- a/spec/ig-oncocore-config.json +++ b/spec/ig-oncocore-config.json @@ -4,7 +4,7 @@ "projectURL": "http://hl7.org/fhir/us/oncocore/", "fhirURL": "http://hl7.org/fhir/us/oncocore/", "entryTypeURL": "http://hl7.org/fhir/us/oncocore/spec/", - "fhirTarget": "FHIR_STU_3", + "fhirTarget": "FHIR_DSTU_2", "implementationGuide": { "npmName": "oncocore", diff --git a/spec/ig-shr-config.json b/spec/ig-shr-config.json index 49c3870f..edb34c3d 100644 --- a/spec/ig-shr-config.json +++ b/spec/ig-shr-config.json @@ -4,7 +4,7 @@ "projectURL": "http://standardhealthrecord.org", "fhirURL": "http://standardhealthrecord.org/fhir", "entryTypeURL": "http://standardhealthrecord.org/spec/", - "fhirTarget": "FHIR_STU_3", + "fhirTarget": "FHIR_DSTU_2", "implementationGuide": { "npmName": "hl7.fhir.us.shr", diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index 160991fb..3edb0f3f 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -19,8 +19,8 @@ Description: "A finding related to the presence of an individual's risk or sensi 1..1 FindingStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status 0..0 SpecificFocusOfFinding // always the patient 1..1 FindingTopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" -1..1 FindingResult from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered -0..* SubstanceCategory +1..1 FindingResult // from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered // DSTU 2 change different required value sets) +0..1 SubstanceCategory // DSTU 2 change (restrict upper cardinality to 1) 0..1 Onset 0..1 AllergyIntoleranceType 0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index 55f4ff70..dacc0cf7 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -3,19 +3,19 @@ Namespace: shr.allergy Target: FHIR_DSTU_2 -AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: +AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: // PersonOfRecord maps to patient // SourceOfInformation.Value maps to asserter // Signed.Value.EntityOrRole maps to recorder - _Entry.CreationTime maps to assertedDate - FindingResult maps to code + _Entry.CreationTime maps to recordedDate + FindingResult maps to substance AllergyIntoleranceType maps to type SubstanceCategory maps to category - FindingStatus maps to verificationStatus - ClinicalStatus maps to clinicalStatus +// FindingStatus maps to verificationStatus // DSTU 2 change (FindingStatus and ClinicalStatus map to one DSTU 2 attribute, status) +// ClinicalStatus maps to status Criticality maps to criticality - Onset maps to onset[x] - MostRecentOccurrenceTime maps to lastOccurrence + Onset maps to onset // DSTU 2 change (onset only dateTime, not a choice [x]) + MostRecentOccurrenceTime maps to lastOccurence // DSTU 2 change (attribute name spelling error was corrected in STU 3) AllergyIntoleranceReaction.SubstanceCode maps to reaction.substance AllergyIntoleranceReaction.Manifestation maps to reaction.manifestation AllergyIntoleranceReaction.BeginDateTime maps to reaction.onset @@ -24,7 +24,7 @@ AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co AllergyIntoleranceReaction.CommentOrDescription maps to reaction.description /* -NoAdverseSensitivityToSubstance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: +NoAdverseSensitivityToSubstance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: // PersonOfRecord maps to patient // SourceOfInformation.Value maps to asserter // Signed.Value.EntityOrRole maps to recorder @@ -38,7 +38,7 @@ NoAdverseSensitivityToSubstance maps to http://hl7.org/fhir/us/core/StructureDef constrain lastOccurrence to 0..0 constrain reaction to 0..0 -NoKnownAllergy maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: +NoKnownAllergy maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: constrain clinicalStatus to 0..0 constrain criticality to 0..0 fix code to SCT#716186003 diff --git a/spec/shr_core.txt b/spec/shr_core.txt index e35ed8ef..16937fd9 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -706,8 +706,8 @@ Description: "A digital Signature - XML DigSig, JWT, Graphical image of signatur 1..1 CreationTime 1..1 Signatory 0..1 OnBehalfOf -0..1 ContentType -0..1 BinaryData +1..1 ContentType +1..1 BinaryData // DSTU 2 change (required attribute in DSTU 2) Element: SignatureType Concept: MTH#C0332307 diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 0119de3e..96dab86e 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -36,7 +36,7 @@ Description: "A person in the role of a patient." Value: boolean or CodeableConcept EntryElement: ExternalHealthRecord -Based on: Entity +Based on: Entity // TODO: change to information item Concept: TBD Description: "A health record other than the current health record; may have been used to help populate the current record." 1..1 Identifier @@ -538,13 +538,13 @@ Description: "A social or legal structure formed by human beings." Description: "An identifier of the organization. An NPI preferred, tax id is allowed, and a local id is allowed in addition to ‘authoritative’ identifier" -Element: Location +EntryElement: Location Based on: Entity Concept: MTH#C0450429 Description: "A position, site, or point in space where something can be found." Value: Address or Geoposition or GeopoliticalLocation -Element: Device +EntryElement: Device Based on: Entity Description: "A specific durable physical device used in diagnosis or treatment. The value is the coding for a type of device, for example, a CPAP machine. The same device might be used on multiple patients." 1..1 Type from DeviceVS // currently (4/2018) called 'key' in CIMI @@ -581,7 +581,7 @@ Description: "A specific durable physical device used in diagnosis or treatment. Description: "A unique URL on which the device may be contacted directly." Value: uri -Element: Specimen +EntryElement: Specimen Based on: Entity Description: "A specimen is a substance, physical object, or collection of objects, that the laboratory considers a single discrete, uniquely identified unit that is the subject of one or more steps in the laboratory workflow. A specimen may include multiple physical pieces as long as they are considered a single unit within the laboratory workflow. A specimen results from one to many specimen collection procedures, and may be contained in multiple specimen containers. Specimen may have one or more processing activities." 0..1 AccessionIdentifier diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index 601818f6..8dfd4d17 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -93,7 +93,7 @@ Substance maps to Substance: Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medication: Type maps to code DoseForm maps to product.form // dstu 2 change (different attribute) - Ingredient.SubstanceOrCode maps to product.ingredient.item[x] // dstu 2 change (different attribute) + Ingredient.SubstanceOrCode maps to product.ingredient.item // dstu 2 change (different attribute) Ingredient.IngredientAmount maps to product.ingredient.amount // dstu 2 change (different attribute) // Ingredient.IsActiveIngredient maps to ingredient.isActive // dstu 2 change (no such attribute) Brand.IsBrand maps to isBrand From 22b032a859e2fc29320641b0a9599bca1550568f Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 21 Nov 2018 14:25:12 -0500 Subject: [PATCH 123/289] Cleaning up the IG --- spec/shr_allergy_map_dstu2.txt | 13 +++++--- spec/shr_allergy_map_stu3.txt | 33 +------------------ spec/shr_base.txt | 17 +++++++++- spec/shr_base_finding.txt | 8 ++--- spec/shr_base_map_dstu2.txt | 47 +++++++++++++++++--------- spec/shr_base_map_stu3.txt | 6 +++- spec/shr_brca.txt | 17 ++++------ spec/shr_composition.txt | 24 -------------- spec/shr_composition_map_dstu2.txt | 12 ------- spec/shr_composition_map_stu3.txt | 12 ------- spec/shr_core_map_dstu2.txt | 9 +++-- spec/shr_encounter_map_dstu2.txt | 3 +- spec/shr_entity_map_dstu2.txt | 30 +++++++++++------ spec/shr_familyhistory.txt | 4 +-- spec/shr_financial_map_dstu2.txt | 3 +- spec/shr_intervention.txt | 27 ++++++++------- spec/shr_medication.txt | 2 +- spec/shr_medication_map_dstu2.txt | 53 ++++++++++++++++++++---------- spec/shr_oncologycore.txt | 32 +++++++++--------- spec/shr_procedure.txt | 2 +- spec/shr_procedure_map_dstu2.txt | 33 ++++++++++++------- spec/shr_tumor.txt | 2 +- 22 files changed, 193 insertions(+), 196 deletions(-) delete mode 100644 spec/shr_composition.txt delete mode 100644 spec/shr_composition_map_dstu2.txt delete mode 100644 spec/shr_composition_map_stu3.txt diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index dacc0cf7..277a9fba 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -4,18 +4,21 @@ Target: FHIR_DSTU_2 AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: -// PersonOfRecord maps to patient + Patient maps to patient // SourceOfInformation.Value maps to asserter // Signed.Value.EntityOrRole maps to recorder _Entry.CreationTime maps to recordedDate FindingResult maps to substance AllergyIntoleranceType maps to type SubstanceCategory maps to category -// FindingStatus maps to verificationStatus // DSTU 2 change (FindingStatus and ClinicalStatus map to one DSTU 2 attribute, status) +// DSTU 2 change (FindingStatus and ClinicalStatus map to one DSTU 2 attribute, status. Eliminate mappings so native DSTU 2 status is supported. Admittedly, not a great solution.) +// FindingStatus maps to verificationStatus // ClinicalStatus maps to status Criticality maps to criticality - Onset maps to onset // DSTU 2 change (onset only dateTime, not a choice [x]) - MostRecentOccurrenceTime maps to lastOccurence // DSTU 2 change (attribute name spelling error was corrected in STU 3) + // DSTU 2 change (onset only dateTime, not a choice [x]) + Onset maps to onset + // DSTU 2 change (attribute name spelling error was corrected in STU 3) + MostRecentOccurrenceTime maps to lastOccurence AllergyIntoleranceReaction.SubstanceCode maps to reaction.substance AllergyIntoleranceReaction.Manifestation maps to reaction.manifestation AllergyIntoleranceReaction.BeginDateTime maps to reaction.onset @@ -25,7 +28,7 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a /* NoAdverseSensitivityToSubstance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: -// PersonOfRecord maps to patient +// Patient maps to patient // SourceOfInformation.Value maps to asserter // Signed.Value.EntityOrRole maps to recorder _Entry.CreationTime maps to assertedDate diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index 63614f33..da0c30e8 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -2,10 +2,8 @@ Grammar: Map 5.1 Namespace: shr.allergy Target: FHIR_STU_3 - AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: -// PersonOfRecord maps to patient -// SourceOfInformation.Value maps to asserter + Patient maps to patient // Signed.Value.EntityOrRole maps to recorder _Entry.CreationTime maps to assertedDate FindingResult maps to code @@ -22,32 +20,3 @@ AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co AllergyIntoleranceReaction.Severity maps to reaction.severity AllergyIntoleranceReaction.RouteIntoBody maps to reaction.exposureRoute AllergyIntoleranceReaction.CommentOrDescription maps to reaction.description - -/* -NoAdverseSensitivityToSubstance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: -// PersonOfRecord maps to patient -// SourceOfInformation.Value maps to asserter -// Signed.Value.EntityOrRole maps to recorder - _Entry.CreationTime maps to assertedDate - AdverseSensitivityTopic.TopicCode maps to code - constrain type to 0..0 - constrain category to 0..0 - constrain clinicalStatus to 0..0 - constrain criticality to 0..0 - constrain onset[x] to 0..0 - constrain lastOccurrence to 0..0 - constrain reaction to 0..0 - -NoKnownAllergy maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: -constrain clinicalStatus to 0..0 -constrain criticality to 0..0 - fix code to SCT#716186003 - -NoKnownDrugAllergyStatement: - fix code to SCT#409137002 - -NoKnownFoodAllergyStatement: - fix code to SCT#429625007 - -NoKnownEnvironmentalAllergyStatement: - fix code to SCT#428607008 */ diff --git a/spec/shr_base.txt b/spec/shr_base.txt index de2b7074..d27e1814 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -114,7 +114,22 @@ Description: "Metadata attributes that apply to any item represented in the stan Element: RecordedOn Description: "The time of the attribution action." Value: instant - + +EntryElement: Composition +Based on: InformationItem +Description: "A composition represents a set of Entries sharing common provenance, adocument such as an extract from a patient record, a knowledge artifact, or a catalog definition." +//1..1 Status from http://hl7.org/fhir/ValueSet/composition-status +//1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes +//1..1 CreationTime -- from Entry -- maps to date +0..* Section + + Element: Section + Based on: InformationItem + Description: "Represents a section containing entries in a composition." + //0..1 Title + 0..* InformationItem + + /* Element: HealthRecordId Concept: MTH#C1549718 diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index eb86f29b..8b6605d2 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -69,7 +69,7 @@ Description: "An assertion, determination, opinion, evaluation, result, observat Element: SpecificFocusOfFinding Description: "The specific observed item finding relates to, for example, a related person or condition. The SpecificFocusOfFinding is only required if the thing observed is different than the patient. It should not be an anatomical location. The focus for cancer progression would be the cancer condition. If the property is wound length, the focus would be an instance of a wound. In the case of an assertion of existence, the focus is the larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." - Value: string or CodeableConcept or Identifier or ref(InformationItem) + Value: ref(InformationItem) // or CodeableConcept or string or CodeableConcept or Identifier Element: RelevantTime Concept: TBD @@ -247,7 +247,7 @@ Abstract Element: PresenceAssertion Based on: ExistenceAssertion Description: "Finding that a phenomena is present." // TODO: Not sure we should have to say .CodeableConcept for the constraint below to work (currently causes error) - FindingResult.CodeableConcept is SCT#52101004 "Present (qualifier value)" +1..1 FindingResult.CodeableConcept is SCT#52101004 "Present (qualifier value)" 0..0 ExceptionValue 0..1 Certainty from PresenceCertaintyVS @@ -255,7 +255,7 @@ Description: "Finding that a phenomena is present." Abstract Element: AbsenceAssertion Based on: ExistenceAssertion Description: "Finding that an entity, person, role, condition, or phenomenon is absent." - FindingResult.CodeableConcept is SCT#2667000 "Absent (qualifier value)" +1..1 FindingResult.CodeableConcept is SCT#2667000 "Absent (qualifier value)" 0..0 ExceptionValue 0..1 Certainty from AbsenceCertaintyVS @@ -266,7 +266,7 @@ Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." //0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson 1..1 Patient -0..0 SpecificFocusOfFinding // always the patient? +0..0 SpecificFocusOfFinding // maybe a family member? 0..1 FindingMethod 1..1 Category from ConditionCategoryVS // DSTU 2 change - category is 1..1 in Argonaut 0..* AnatomicalLocation diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index e7b704ec..88e3500c 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -14,34 +14,43 @@ Entry maps to DomainResource: Tag maps to meta.tag InformationItem maps to DomainResource: - + +Composition maps to Composition: + Section maps to section + Section.InformationItem maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) + Narrative maps to Narrative: NarrativeText maps to div NarrativeQualifier maps to status - Observation maps to Observation: Patient maps to subject // SourceOfInformation.Value maps to performer FindingTopicCode maps to code FindingMethod maps to method - CommentOrDescription maps to comments // dstu 2 change (name change) + // dstu 2 change (name change) + CommentOrDescription maps to comments Category maps to category AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite - AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance // dstu 2 change (name change) + // dstu 2 change (name change) + AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance Device maps to device Specimen maps to specimen ReferenceRange maps to referenceRange ReferenceRange.Range.LowerBound maps to referenceRange.low ReferenceRange.Range.UpperBound maps to referenceRange.high - ReferenceRange.Type maps to referenceRange.meaning // dstu 2 change -// ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo // dstu 2 change (no such attribute) -// ReferenceRange.ApplicableAgeRange maps to referenceRange.age // dstu 2 change (no such attribute) + // dstu 2 change + ReferenceRange.Type maps to referenceRange.meaning + // dstu 2 change (no such attribute) +// ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo +// dstu 2 change (no such attribute) +// ReferenceRange.ApplicableAgeRange maps to referenceRange.age NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason - //NonIndependentFinding.Interpretation maps to component.interpretation // dstu 2 change (no such attribute) + // dstu 2 change (no such attribute) + //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related @@ -52,7 +61,8 @@ Observation maps to Observation: // Issued maps to issued FindingStatus maps to status RelevantTime maps to effective[x] - Encounter maps to encounter // dstu 2 change (name change) + // dstu 2 change (name change) + Encounter maps to encounter DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta @@ -61,23 +71,30 @@ LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinitio // SourceOfInformation.Value maps to performer FindingTopicCode maps to code FindingMethod maps to method - CommentOrDescription maps to comments // dstu 2 change (name change) + // dstu 2 change (name change) + CommentOrDescription maps to comments Category maps to category AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite - AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance // dstu 2 change (name change) + // dstu 2 change (name change) + AnatomicalLocation[AnatomicalLocationStructured] maps to + http://hl7.org/fhir/StructureDefinition/body-site-instance Device maps to device Specimen maps to specimen ReferenceRange maps to referenceRange ReferenceRange.Range.LowerBound maps to referenceRange.low ReferenceRange.Range.UpperBound maps to referenceRange.high - ReferenceRange.Type maps to referenceRange.meaning // dstu 2 change -// ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo // dstu 2 change (no such attribute) -// ReferenceRange.ApplicableAgeRange maps to referenceRange.age // dstu 2 change (no such attribute) + // dstu 2 change + ReferenceRange.Type maps to referenceRange.meaning + // dstu 2 change (no such attribute) +// ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo +// dstu 2 change (no such attribute) +// ReferenceRange.ApplicableAgeRange maps to referenceRange.age NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason - //NonIndependentFinding.Interpretation maps to component.interpretation // dstu 2 change (no such attribute) + // dstu 2 change (no such attribute) + //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 78c24530..176ce118 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -14,7 +14,11 @@ Entry maps to DomainResource: Tag maps to meta.tag InformationItem maps to DomainResource: - + +Composition maps to Composition: + Section maps to section + Section.InformationItem maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) + Narrative maps to Narrative: NarrativeText maps to div NarrativeQualifier maps to status diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index e3ca7674..5bad413c 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -56,7 +56,7 @@ Based on: CancerStageInformation Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. Description: "The stage of a breast cancer. The panel should not include both a DCISNuclearGrade and a BreastCancerHistologicGrade, since the latter implies an invasive cancer." FindingTopicCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" -// SpecificFocusOfFinding value is type BreastCancerDisorderPresent + SpecificFocusOfFinding value is type ref(BreastCancerDisorderPresent) PanelMembers.Observation includes 0..1 HER2ReceptorStatus includes 0..1 EstrogenReceptorStatus @@ -236,8 +236,7 @@ Based on: SimpleLaboratoryObservation Concept: MTH#C1709318 Description: "The Oncotype DX test for invasive breast cancer examines the activity of 21 genes in a patient’s breast tumor tissue to provide personalized information for tailoring treatment based on the biology of their individual disease. The value from 0 to 100 indicates the estimated risk of recurrence, with the highest risk indicated by a score greater than 31. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" - FindingResult value is type Quantity -// FindingResult.Quantity.Units is UCUM#1 + FindingResult value is type IntegerQuantity FindingTopicCode is MTH#C1709318 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology @@ -249,8 +248,7 @@ Based on: SimpleLaboratoryObservation Concept: MTH#C3898101 Description: "The Oncotype DX test for DCIS (Ductal Carcinoma in Situ) breast cancer. Risk scores range from 0 to 100 with the following interpretations: 0-38: Low-Risk, 39-54: Intermediate-Risk, 55+: High-Risk. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" - FindingResult value is type Quantity -// FindingResult.Quantity.Units is UCUM#1 + FindingResult value is type IntegerQuantity FindingTopicCode is MTH#C3898101 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology @@ -261,8 +259,7 @@ Based on: SimpleLaboratoryObservation Concept: LNC#76544-6 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Prosigna. The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Risk of Recurrence Score in the literature), which is correlated with the probability of distant recurrence at ten years for post-menopausal women with hormone receptor positive, early stage breast cancer." - FindingResult value is type Quantity -// FindingResult.Quantity.Units is UCUM#1 + FindingResult value is type IntegerQuantity FindingTopicCode is LNC#76544-6 Interpretation from RecurrenceRiskScoreInterpretationVS DiagnosticService is #pathology @@ -358,19 +355,19 @@ includes 0..1 OtherReceptorScoringSystem Concept: CAP#31054 Based on: NonIndependentFinding Description: "Part of Allred scoring, based on the percentage of cells that stain for a receptor, on a scale of 0 to 5." - Value: Quantity with units UCUM#1 + Value: IntegerQuantity Element: AllredIntensityScore Concept: CAP#29749 Based on: NonIndependentFinding Description: "Part of the Allred scoring, based on the intensity of that staining, on a scale of 0 to 3." - Value: Quantity with units UCUM#1 + Value: IntegerQuantity Element: AllredTotalScore Concept: CAP#31056 Based on: NonIndependentFinding Description: "The total Allred score, the total of proportion and intensity scores, from 0 to 8." - Value: Quantity with units UCUM#1 // unsignedInt - limit to max of 8 + Value: IntegerQuantity // unsignedInt - limit to max of 8 Element: OtherReceptorScoringSystem Concept: CAP#31062 diff --git a/spec/shr_composition.txt b/spec/shr_composition.txt deleted file mode 100644 index 015b2b41..00000000 --- a/spec/shr_composition.txt +++ /dev/null @@ -1,24 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: shr.composition -Description: "Documents, compositions, reports, and other structures involving multiple resources." -Uses: shr.base - -EntryElement: Composition -Based on: InformationItem -Description: "A composition represents a set of Entries sharing common provenance, adocument such as an extract from a patient record, a knowledge artifact, or a catalog definition." -//1..1 Status from http://hl7.org/fhir/ValueSet/composition-status -//1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes -//1..1 CreationTime -- from Entry -- maps to date -0..* Section - - Element: Section - Based on: InformationItem - Description: "Represents a section containing entries in a composition." - //0..1 Title - 0..* InformationItem - - - - - - diff --git a/spec/shr_composition_map_dstu2.txt b/spec/shr_composition_map_dstu2.txt deleted file mode 100644 index 8072f363..00000000 --- a/spec/shr_composition_map_dstu2.txt +++ /dev/null @@ -1,12 +0,0 @@ -Grammar: Map 5.1 -Namespace: shr.composition -Target: FHIR_DSTU_2 - -//InformationItem maps to Resource: - -Composition maps to Composition: - Section maps to section - Section.InformationItem maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) - - - // (slice on = coding.code; slice strategy = includes) \ No newline at end of file diff --git a/spec/shr_composition_map_stu3.txt b/spec/shr_composition_map_stu3.txt deleted file mode 100644 index 347aa4db..00000000 --- a/spec/shr_composition_map_stu3.txt +++ /dev/null @@ -1,12 +0,0 @@ -Grammar: Map 5.1 -Namespace: shr.composition -Target: FHIR_STU_3 - -//InformationItem maps to Resource: - -Composition maps to Composition: - Section maps to section - Section.InformationItem maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) - - - // (slice on = coding.code; slice strategy = includes) \ No newline at end of file diff --git a/spec/shr_core_map_dstu2.txt b/spec/shr_core_map_dstu2.txt index 81a3f2f1..8b47cbf6 100644 --- a/spec/shr_core_map_dstu2.txt +++ b/spec/shr_core_map_dstu2.txt @@ -54,7 +54,8 @@ TimePeriod maps to Period: BeginDateTime maps to start EndDateTime maps to end -Geoposition maps to Location: // dstu 2 change (different mapping target) +// dstu 2 change (different mapping target) +Geoposition maps to Location: constrain position to 1..1 Latitude maps to position.latitude Longitude maps to position.longitude @@ -89,7 +90,8 @@ Timing maps to Timing: EventDuration.DurationRange.UpperBound.SimpleQuantity.Number maps to repeat.durationMax EventDuration.DurationRange.LowerBound.SimpleQuantity.Units.Coding.Code maps to repeat.durationUnits // dstu 2 change (attribute name) RecurrencePattern.RecurrenceInterval.Duration.Number maps to repeat.period - RecurrencePattern.RecurrenceInterval.Duration.Units.Coding.Code maps to repeat.periodUnits // dstu 2 change (attribute name) + // dstu 2 change (attribute name) + RecurrencePattern.RecurrenceInterval.Duration.Units.Coding.Code maps to repeat.periodUnits constrain repeat.periodMax to 0..0 // TODO: why? // RecurrencePattern.DayOfWeek maps to repeat.dayOfWeek // dstu 2 change (no such attribute) // RecurrencePattern.TimeOfDay maps to repeat.timeOfDay // dstu 2 change (no such attribute) @@ -145,6 +147,7 @@ Signature maps to Signature: SignatureType maps to type CreationTime maps to when Signatory maps to who[x] -// OnBehalfOf maps to onBehalfOf[x] // dstu 2 change (no such attribute) +// dstu 2 change (no such attribute) +// OnBehalfOf maps to onBehalfOf[x] ContentType maps to contentType BinaryData maps to blob \ No newline at end of file diff --git a/spec/shr_encounter_map_dstu2.txt b/spec/shr_encounter_map_dstu2.txt index 3e0ad55f..7aa0cdb2 100644 --- a/spec/shr_encounter_map_dstu2.txt +++ b/spec/shr_encounter_map_dstu2.txt @@ -4,7 +4,8 @@ Target: FHIR_DSTU_2 Encounter maps to Encounter: - Patient maps to patient // dstu 2 change (name change) +// dstu 2 change (name change) + Patient maps to patient EncounterType maps to type // ServiceProvider maps to serviceProvider Status maps to status diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index 8dfd4d17..be84e447 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -92,16 +92,24 @@ Substance maps to Substance: Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medication: Type maps to code - DoseForm maps to product.form // dstu 2 change (different attribute) - Ingredient.SubstanceOrCode maps to product.ingredient.item // dstu 2 change (different attribute) - Ingredient.IngredientAmount maps to product.ingredient.amount // dstu 2 change (different attribute) -// Ingredient.IsActiveIngredient maps to ingredient.isActive // dstu 2 change (no such attribute) + // dstu 2 change (different attribute) + DoseForm maps to product.form + // dstu 2 change (different attribute) + Ingredient.SubstanceOrCode maps to product.ingredient.item + // dstu 2 change (different attribute) + Ingredient.IngredientAmount maps to product.ingredient.amount + // dstu 2 change (no such attribute) + // Ingredient.IsActiveIngredient maps to ingredient.isActive Brand.IsBrand maps to isBrand -// OverTheCounter maps to isOverTheCounter // dstu 2 change (no such attribute) + // dstu 2 change (no such attribute) + // OverTheCounter maps to isOverTheCounter Manufacturer maps to manufacturer - constrain product.batch to 0..1 // dstu 2 change (different attribute) - LotNumber maps to product.batch.lotNumber // dstu 2 change (different attribute) - ExpirationDate maps to product.batch.expirationDate // dstu 2 change (different attribute) + // dstu 2 change (different attribute) + constrain product.batch to 0..1 + // dstu 2 change (different attribute) + LotNumber maps to product.batch.lotNumber + // dstu 2 change (different attribute) + ExpirationDate maps to product.batch.expirationDate Package maps to package.container Specimen maps to Specimen: @@ -126,10 +134,12 @@ Specimen maps to Specimen: Device maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-device: Type maps to type - DeviceUdi maps to udi // dstu 2 change (different attribute) + // dstu 2 change (different attribute) + DeviceUdi maps to udi VendorModelNumber maps to model ManufacturerName maps to manufacturer ManufactureDate maps to manufactureDate - ExpirationDate maps to expiry // dstu 2 change (different attribute) + // dstu 2 change (different attribute) + ExpirationDate maps to expiry Version maps to version Url maps to url diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index 25f0f0a2..b3b5e698 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -15,7 +15,7 @@ Based on: Finding Concept: LNC#54114-4 "Family member health history [USSG-FHT] Family member" //This is part of a US General Surgeon general family health LOINC panel Description: "The health history of a patient's family member." 1..1 Patient -// SpecificFocusOfFinding value is type FamilyMember + SpecificFocusOfFinding value is type ref(FamilyMember) FindingStatus from http://hl7.org/fhir/ValueSet/history-status 0..* FamilyMemberConditionPresentAssertion @@ -27,7 +27,7 @@ Concept: LNC#8670-2 "History of family member diseases" 0..1 ConditionOutcome 0..0 FindingMethod FindingTopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered -// SpecificFocusOfFinding value is type FamilyMember + SpecificFocusOfFinding value is type ref(FamilyMember) Element: ConditionOutcome Concept: TBD#TBD Description: "The lasting effects of a disease, e.g. death, functional impairment." diff --git a/spec/shr_financial_map_dstu2.txt b/spec/shr_financial_map_dstu2.txt index 59daee1f..1c901739 100644 --- a/spec/shr_financial_map_dstu2.txt +++ b/spec/shr_financial_map_dstu2.txt @@ -4,7 +4,8 @@ Target: FHIR_DSTU_2 Coverage maps to Coverage: -// Status maps to status // dstu 2 change (no such) +// dstu 2 change (no such attribute) +// Status maps to status Type maps to type InsuranceMemberId maps to subscriberId EffectiveTimePeriod maps to period diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index 0ceedcb4..e579fc28 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: oncocore Description: "SHR implementation of ASCO requirements." -Uses: shr.core, shr.base, shr.entity, shr.medication, shr.composition, shr.procedure +Uses: shr.core, shr.base, shr.entity, shr.medication, shr.procedure CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org @@ -17,18 +17,17 @@ EntryElement: CourseOfTreatmentPerformed Based on: ProcedurePerformed // mlt: questionable to call CourseOfTreatment a procedure. It is modeled as a series of activities including medications administered and procedures. Description: "A series of coordinated treatment actions taken with a certain treatment intention." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" -// ProcedureCode from ???? if covered - 0..1 TreatmentIntent - 0..1 LineOfTherapy -// 0..* ActionPerformed // mlt: removed and made more explicit. ActionPerformed is too abstract and appears mapped to DomainResource in the FHIR IG. There is no explicit reference to any of the treatment types which would have made this difficult to implement. - 0..* MedicationStatement // mlt: to cover patient-asserted medications taken at home. - 0..* MedicationAdministered // mlt: to cover clinician-administered meds in a clinical setting. - 0..* SurgicalProcedurePerformed - 0..* RadiationTreatmentPerformed - 0..* AnatomicalLocation // anatomical location is given in the individual actions - 0..0 Device - 0..0 Location - + ProcedureCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" + 0..1 TreatmentIntent + 0..1 LineOfTherapy + 0..* MedicationStatement // mlt: to cover patient-asserted medications taken at home. + 0..* MedicationAdministered // mlt: to cover clinician-administered meds in a clinical setting. + 0..* SurgicalProcedurePerformed + 0..* RadiationTreatmentPerformed + 0..* AnatomicalLocation // anatomical location is given in the individual actions + 0..0 Device + 0..0 Location + 0..0 Method Element: TreatmentIntent Concept: SCT#395077000 "Treatment intent (situation)" // TODO: Needs a new LOINC number" @@ -37,7 +36,7 @@ Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure Element: LineOfTherapy Description: "The sequence of therapies administered to a patient." - Concept: MTH#C133518 "Line of Therapy" // TODO: Need new LOINC and SNOMED codes + Concept: MTH#C133518 "Line of Therapy" // TODO: Need new LOINC and SNOMED codes Value: CodeableConcept from LineOfTherapyVS diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 5461c368..910b8c73 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -104,7 +104,7 @@ Description: "Information on the ability and cooperation of the patient in takin Modeling note: MedicationAdherence could be attached to MedicationStatement directly as an extension, but modeling as an observation avoids creating an extension and allows this observation to be made at any time." FindingResult from QualitativeFrequencyVS FindingTopicCode is MTH#C2364172 -1..1 SpecificFocusOfFinding // TODO: constrain type! +1..1 SpecificFocusOfFinding value is type ref(Medication) NonIndependentFinding includes 0..* MedicationNonAdherenceReason diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index 5c8de8a2..6d68c023 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -22,10 +22,13 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ constrain wasNotTaken to 0..0 constrain reasonNotTaken to 0..0 constrain dosage to 0..1 -// Dosage maps to dosage // DSTU 2 change (mapping target does not exist) +// DSTU 2 change (mapping target does not exist) +// Dosage maps to dosage Medication maps to medication[x] -// Category maps to category // DSTU 2 change (no such attribute) -// fix taken to #y // DSTU 2 change (no such attribute) +// DSTU 2 change (no such attribute) +// Category maps to category +// DSTU 2 change (no such attribute) +// fix taken to #y Reason maps to reasonForUse[x] OccurrenceTimeOrPeriod maps to effective[x] Status maps to status @@ -34,7 +37,8 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ Dosage.TimingOfDoses maps to dosage.timing Dosage.AsNeededIndicator maps to dosage.asNeeded[x] Dosage.DosageInstructionsText maps to dosage.text -// AdditionalDosageInstruction maps to additionalInstruction // DSTU 2 change (no such attribute) +// DSTU 2 change (no such attribute) +// AdditionalDosageInstruction maps to additionalInstruction Dosage.RouteIntoBody maps to dosage.route Dosage.DosageMethod maps to dosage.method Dosage.DosageBodySite.AnatomicalLocationPrecoordinated maps to dosage.site[x] @@ -43,18 +47,25 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ MedicationAdministered maps to MedicationAdministration: // SourceOfInformation.Value maps to informationSource Patient maps to patient - Encounter maps to encounter // DSTU 2 change (name change) - RelatedRequest maps to prescription - constrain wasNotGiven to 0..0 // DSTU 2 change (name change) + // DSTU 2 change (name change) + Encounter maps to encounter + RelatedRequest maps to prescription + // DSTU 2 change (name change) + constrain wasNotGiven to 0..0 constrain reasonNotGiven to 0..0 -// Dosage maps to dosage // DSTU 2 change (mapping target does not exist) + // DSTU 2 change (mapping target does not exist) +// Dosage maps to dosage Medication maps to medication[x] -// Category maps to category // DSTU 2 change (no such attribute) - Reason maps to reasonGiven // DSTU 2 change (name change) + // DSTU 2 change (no such attribute) +// Category maps to category +// DSTU 2 change (name change) + Reason maps to reasonGiven OccurrenceTimeOrPeriod maps to effectiveTime[x] Status maps to status - Participation.Participant maps to practitioner // DSTU 2 change (more restrictive type) -// Participation.OnBehalfOf maps to performer.onBehalfOf // DSTU 2 change (no such attribute) + // DSTU 2 change (more restrictive type) + Participation.Participant maps to practitioner + // DSTU 2 change (no such attribute) +// Participation.OnBehalfOf maps to performer.onBehalfOf // DSTU 2 change (added Dosage as in-line element) Dosage.DoseAmount.SimpleQuantity maps to dosage.quantity Dosage.RouteIntoBody maps to dosage.route @@ -66,9 +77,11 @@ MedicationAdministered maps to MedicationAdministration: MedicationNotAdministered maps to MedicationAdministration: // SourceOfInformation.Value maps to informationSource Medication maps to medication[x] -// Category maps to category // DSTU 2 change (no such attribute) + // DSTU 2 change (no such attribute) +// Category maps to category fix wasNotGiven to true - constrain reasonGiven to 0..0 // new + // new + constrain reasonGiven to 0..0 constrain dosage to 0..0 Reason maps to reasonNotGiven NonOccurrenceTimeOrPeriod maps to effective[x] @@ -84,18 +97,22 @@ MedicationRequested maps to http://fhir.org/guides/argonaut/StructureDefinition/ Reason maps to reason[x] Status maps to status ExpectedPerformanceTime maps to dispenseRequest.validityPeriod -// PriorityRank maps to priority // DSTU 2 change (no such attribute) + // DSTU 2 change (no such attribute) +// PriorityRank maps to priority // DSTU 2 change (different data type) PerformerInstructions maps to note -// ExpectedPerformer[Organization] maps to dispenseRequest.performer // DSTU 2 change (no such attribute) + // DSTU 2 change (no such attribute) +// ExpectedPerformer[Organization] maps to dispenseRequest.performer constrain note to 0..1 -// Dosage maps to dosageInstruction // DSTU 2 change (mapping target does not exist) + // DSTU 2 change (mapping target does not exist) +// Dosage maps to dosageInstruction // DSTU 2 change (added Dosage as in-line element) Dosage.DoseAmount maps to dosageInstruction.dose[x] Dosage.TimingOfDoses maps to dosageInstruction.timing Dosage.AsNeededIndicator maps to dosageInstruction.asNeeded[x] Dosage.DosageInstructionsText maps to dosageInstruction.text -// AdditionalDosageInstruction maps to additionalInstruction // DSTU 2 change (no such attribute) + // DSTU 2 change (no such attribute) +// AdditionalDosageInstruction maps to additionalInstruction Dosage.RouteIntoBody maps to dosageInstruction.route Dosage.DosageMethod maps to dosageInstruction.method Dosage.DosageBodySite.AnatomicalLocationPrecoordinated maps to dosageInstruction.site[x] diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 5865951b..d4b8e208 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -24,11 +24,12 @@ EntryElement: CancerHistologicType Based on: SimpleCodedNonLaboratoryObservation // MK: Would this use a specimen? If so, it has to be a laboratory observation Description: "Classification of the cancer by the type of tissue in which the cancer originates. (Source: NCI)" Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." -// SpecificFocusOfFinding value is type CancerDisorderPresent or TumorPresent? + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) FindingResult from CancerHistologicTypeVS FindingTopicCode is SCT#371441004 "Histologic type (observable entity)" 0..0 AnatomicalLocation 0..0 Device +0..0 DeltaFlag EntryElement: CancerHistologicGrade // did not use precoordinated codes because only available for clinical and pathologic. @@ -37,7 +38,7 @@ Description: "A description of a tumor based on how abnormal the cancer cells Concept: LNC#21858-6 "Grade Cancer" FindingResult from http://loinc.org/vs/LL213-0 FindingTopicCode is LNC#21858-6 "Grade Cancer" -// SpecificFocusOfFinding value is type CancerDisorderPresent // TODO: this is failing; bug reported + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 AnatomicalLocation 0..0 Device @@ -47,7 +48,7 @@ Description: "The course of a disease, such as cancer, as it becomes worse or Concept: SCT#246453008 "Course of illness (attribute)" FindingResult from CancerProgressionVS FindingTopicCode is SCT#246453008 "Course of illness (attribute)" -// SpecificFocusOfFinding value is type CancerDisorderPresent + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 AnatomicalLocation 0..0 Device // CancerProgressionEvidence is not yet part of M-CODE, but I don't see a better way to include it for FluxNotes @@ -72,7 +73,7 @@ Concept: SCT#258232002 "Cancer staging (tumor staging)" 0..0 Specimen 0..0 Device 0..1 FindingMethod from CancerStagingSystemVS -// SpecificFocusOfFinding value is type CancerDisorderPresent + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) NonIndependentFinding includes 0..1 StageGroup // MK - should this be the FindingResult? includes 0..1 StageTiming // retained StageTiming because if using TNM staging, the StageGroup still needs a prefix (even if we're using precoordinated categories). There are LOINC codes for clinical and pathologic stage groups in LOINC, but we back ourselves into TNM for stage group if we use them. @@ -110,8 +111,7 @@ Based on: CodedNonIndependentFinding Concept: MTH#C1302362 "Stage Grouping" Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" FindingResult from http://loinc.org/vs/LL240-3 - FindingTopicCode is MTH#C1302362 "Stage Grouping" -// SpecificFocusOfFinding value is type CancerStageInformation + FindingTopicCode is MTH#C1302362 "Stage Grouping" Element: StageSuffix Based on: CodedNonIndependentFinding @@ -125,7 +125,7 @@ Based on: CodedNonLaboratoryObservation Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." FindingResult from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 -// SpecificFocusOfFinding value is type CancerDisorderPresent + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media @@ -142,7 +142,7 @@ Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC FindingResult from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" -// SpecificFocusOfFinding value is type CancerDisorderPresent + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media @@ -165,7 +165,7 @@ Description: "" //TODO: pull from LOINC 0..0 Media 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered -// SpecificFocusOfFinding value is type CancerDisorderPresent + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) NonIndependentFinding includes 0..1 StageSuffix includes 0..1 ClinicalStageTiming @@ -182,7 +182,7 @@ Description: "" //TODO: pull from LOINC 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered -// SpecificFocusOfFinding value is type CancerDisorderPresent + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) NonIndependentFinding includes 0..1 StageSuffix includes 0..1 PathologicStageTiming @@ -193,7 +193,7 @@ Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" Description: "" //TODO: pull from LOINC FindingResult from http://loinc.org/vs/LL3136-0 // normative FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" -// SpecificFocusOfFinding value is type CancerDisorderPresent + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media @@ -211,7 +211,7 @@ Description: "" //TODO: pull from LOINC FindingResult from http://loinc.org/vs/LL3137-8 0..0 ReferenceRange FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative -// SpecificFocusOfFinding value is type CancerDisorderPresent + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange 0..0 DeltaFlag 0..0 Media @@ -246,7 +246,7 @@ Description: "The earliest date of diagnosis (clinical or laboratory) of an illn Value: dateTime // parent class only allows time, dateTime or TimePeriod as choices. 0..0 ReferenceRange 0..0 AnatomicalLocation -// SpecificFocusOfFinding value is type CancerDisorderPresent + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) */ /********** Assessments **************/ @@ -255,8 +255,7 @@ EntryElement: ECOGPerformanceStatus Based on: SimpleNonLaboratoryObservation Description: "The Eastern Cooperative Oncology Group (ECOG) performance status grade or score, which indicates a patient’s level of daily functioning and physical ability. Source: LOINC" Concept: LNC#89247-1 "ECOG Performance Status score" - FindingResult value is type Quantity -// FindingResult.Quantity.Units is UCUM#1 + FindingResult value is type IntegerQuantity //0..0 ReferenceRange // set to 0 to 5 0..0 SpecificFocusOfFinding 0..0 Media @@ -268,8 +267,7 @@ EntryElement: KarnofskyPerformanceStatus Based on: SimpleNonLaboratoryObservation Description: "The Karnofsky Performance Status (KPS) is a tool used to measure a patient's functional status. It can be used to compare the effectiveness of different therapies and to help assess the prognosis of certain patients, such as those with certain cancers. The KPS score ranges from 0 to 100. Higher scores are associated with better functional status, with 100 representing no symptoms or evidence of disease, and 0 representing death [PMID: 23870327] . This panel contains LOINC terms to report the KPS score [LOINC: 89243-0] and its interpretation [LOINC: 89245-5]." Concept: LNC#89243-0 "Karnofsky Performance Status panel" - FindingResult value is type Quantity -// FindingResult.Quantity.Units is UCUM#1 + FindingResult value is type IntegerQuantity 0..0 SpecificFocusOfFinding 0..0 Media 0..0 AnatomicalLocation diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 668b56c3..9de97a4b 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -191,6 +191,6 @@ EntryElement: DiagnosticImagingPerformed Based on: ProcedurePerformed Description: "Diagnostic imaging procedure performed." Concept: SCT#363679005 "Imaging (procedure)" -// SpecificFocusOfFinding value is type Patient +0..0 SpecificFocusOfFinding ProcedureCode from DiagnosticImagingVS \ No newline at end of file diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 1546542c..61881556 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -6,10 +6,13 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a ProcedureCode maps to code Patient maps to subject Category maps to category - constrain notPerformed to 0..0 // DSTU 2 change (name change) - constrain reasonNotPerformed to 0..0 // DSTU 2 change (name change) + // DSTU 2 change (name change) + constrain notPerformed to 0..0 + // DSTU 2 change (name change) + constrain reasonNotPerformed to 0..0 AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite -// PartOf maps to partOf // DSTU 2 change (no such attribute) + // DSTU 2 change (no such attribute) +// PartOf maps to partOf Annotation maps to notes Encounter maps to encounter Reason maps to reason[x] @@ -17,7 +20,8 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a Participation maps to performer Participation.Participant maps to performer.actor Participation.ParticipationType maps to performer.role -// Participation.OnBehalfOf maps to performer.onBehalfOf // DSTU 2 change (no such attribute) + // DSTU 2 change (no such attribute) +// Participation.OnBehalfOf maps to performer.onBehalfOf Status maps to status // TODO The following statement is failing it might be a bug // Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method @@ -35,10 +39,12 @@ ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinitio // fix notDone to true Reason maps to notDoneReason AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite - Annotation maps to notes // DSTU 2 change (attribute name change) + // DSTU 2 change (attribute name change) + Annotation maps to notes constrain performed[x] to 0..0 constrain performer to 0..0 - fix status to http://hl7.org/fhir/ValueSet/procedure-status#aborted // FHIR is lacking a not-done status (see Gforge issue #14256) + // FHIR is lacking a not-done status (see Gforge issue #14256) + fix status to http://hl7.org/fhir/ValueSet/procedure-status#aborted // Encounter maps to context RelatedRequest.Value maps to basedOn // RelatedPlan maps to definition @@ -55,16 +61,21 @@ ProcedureRequested maps to ProcedureRequest: // _Entry.CreationTime maps to authoredOn // _Entry.SignedBy.Value.EntityOrRole maps to requester ProcedureCode maps to code -// Category maps to category // DSTU 2 change (no such attribute) -// constrain doNotPerform to 0..0 // DSTU 2 change (no such attribute) + // DSTU 2 change (no such attribute) +// Category maps to category +// DSTU 2 change (no such attribute) +// constrain doNotPerform to 0..0 Patient maps to subject AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite Encounter maps to encounter Reason maps to reason[x] Status maps to status -// RequestIntent maps to intent // DSTU 2 change (no such attribute) - ExpectedPerformanceTime maps to scheduled[x] // DSTU 2 change (name change) -// ExpectedPerformerType maps to performerType // DSTU 2 change (no such attribute) +// DSTU 2 change (no such attribute) +// RequestIntent maps to intent +// DSTU 2 change (name change) + ExpectedPerformanceTime maps to scheduled[x] +// DSTU 2 change (no such attribute) +// ExpectedPerformerType maps to performerType ExpectedPerformer maps to performer PriorityRank maps to priority diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt index d71a5d3d..942901f5 100644 --- a/spec/shr_tumor.txt +++ b/spec/shr_tumor.txt @@ -8,7 +8,7 @@ EntryElement: TumorDimensions Based on: CodedLaboratoryObservation Concept: SCT#263605001 "Tumor size (observable entity)" 0..0 FindingResult -// SpecificFocusOfFinding value is type TumorPresent + SpecificFocusOfFinding value is type ref(TumorPresent) FindingTopicCode is SCT#263605001 "Tumor size (observable entity)" 0..0 PanelMembers NonIndependentFinding From 8ed3096e55512fd469796132e0d0e3b448b30126 Mon Sep 17 00:00:00 2001 From: May Terry Date: Mon, 3 Dec 2018 22:42:56 -0500 Subject: [PATCH 124/289] initial elements for GeneticMarker based on observation-example-genetics1 (https://www.hl7.org/fhir/observation-example-genetics-1.html) based on STU3 but checked for parity to DSTU2. --- .DS_Store | Bin 8196 -> 8196 bytes spec/shr_genetics.txt | 90 ++++++++++++++++++++++++++++++++ spec/shr_genetics_map_dstu2.txt | 13 +++++ spec/shr_genetics_map_stu3.txt | 11 ++++ spec/shr_genetics_vs.txt | 27 ++++++++++ 5 files changed, 141 insertions(+) create mode 100644 spec/shr_genetics.txt create mode 100644 spec/shr_genetics_map_dstu2.txt create mode 100644 spec/shr_genetics_map_stu3.txt create mode 100644 spec/shr_genetics_vs.txt diff --git a/.DS_Store b/.DS_Store index 1ecf9e6e2168ba59d267a0322db5f35a2ae40aaa..e07f5f87b22e8ed63c347cd420339faf1d90929b 100644 GIT binary patch delta 995 zcmdUtPe>GT6vy9pGo5jN>a47~PAb@9S_zq2P=QVV@yrl3>w=TKmWpfbw-93t=#9cn|6>J)Vd%BZAHHM2VgUZQKi!+Ss8`@Q!*@5gss z8kcTf6W}(l3rE439?!X|=|D838Ht95Ik=YPEYHp3_}1{Mgm<+0uplH2 zwNDMn32j(ymlLWnpamoP9&JPwz)u#IRaDokS=YR&r7c|~c#4^qm6~Tue5nJPqUs6l zh^EGQ4`%s(T@I`1V!>17D;LFqWI&50wZsX*&vBV(WtGSdDpvpQh+sDZoPt%gBI`G74B2_Oww|&6W16lA2A|@yIO|yxFDU%pkQ`7$nRXjCGI8Iq z8aK3vE_CwQ>6^DOaUd88hb?BqgL)_2Dv9DDdvup?Jgo1DiI--c-IL2@i6F7y_ zIFF0Cj4QZ`8<@sJJi=ql;00bHjaPV!517YyEMyT~a8P?3?>PLjE;(dSlvE0ajNxb? z6bTTyE-ew0IpWRF-EIkqb=f+q_?wQ*>XIM5E6PRRwl>BDvem*b{msm5|02jgeWodw v#+s&Z5BIHIAK)pTV-~ORCfnrCcHN6jvmWnFlzqCD=Ud1zzj(d>752y9vkd5I delta 829 zcmchVO=uHA6vyXZtIft~JKKDAtpS_bidLH92dLOaBeu0IRZMA8#j?q+b}-qb*-b<} zKx|5|GhW=-^{$};B@fb zZ3dfphfP8-MX}(!8%rm+ZUh3KP_w3X?YcUfU|&z`rM~_F#}R5?cU}}CJf6~y^9!me zx*T~1VYb23vT5_yuAO^&4lXn@vB}}2bet=yX7JNo&5WMoiZL0L^|-1jTst$C<2sKe z)UYNeRrX2{%1z#8Ns44+d@9S0^UQCvmDP_V{)}}TPLOAvs_b{Zh18^v5|Ju9RgE?(S#gR6J?`ayQwsmQ!_eG zX>3raxbNLZrAR!LOj=jbMRZo>UZ*6TDnSj&ZMrd%R<%FwA&V+nN*z#?l4$b>qr}WR zJa&IDK*~!nC)}?540%B2$wTsjydfXSBKbysl3%1qmdG*yJ1FYW01w*Gjt*==H}<0k zz39gDidLDcP)$7XKtXa^pGGh@~;E!K(|Ba}*HliFV+`CkBBzX8e1$3Fl7 diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt new file mode 100644 index 00000000..959b452e --- /dev/null +++ b/spec/shr_genetics.txt @@ -0,0 +1,90 @@ +Grammar: DataElement 5.0 +Namespace: oncocore +Description: "Genetics." +Uses: shr.core, shr.base, shr.entity + +CodeSystem: SCT = http://snomed.info/sct +CodeSystem: LNC = http://loinc.org +CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: UCUM = http://unitsofmeasure.org + +/* + **** Modeling individual biomarkers does not scale. + * Markers can apply to multiple cancer types, and potentially other non-cancer diseases. + * Must model this in a way that constrains biomarkers by cancer type in each value set. + */ +EntryElement: GeneticMarker +Based on: Observation +Concept: MTH#C0017393 +Description: "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Thesaurus)" + FindingTopicCode is MTH#C0017393 "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Thesaurus)" + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) + Interpretation from PositiveNegativeEquivocalVS +0..0 Media +0..0 AnatomicalLocation + NonIndependentFinding +includes 0..1 Gene // aligning name with the FHIR Cancer Genomics convention +includes 0..1 GenomicSourceClass +includes 0..1 DNARegionName +includes 0..1 DNASequenceVariantId +includes 0..1 DNASequenceVariantName +0..0 PanelMembers.Observation + +Element: Gene +Concept: LNC#48018-6 "Gene studied [ID]" +Based on: CodedNonIndependentFinding +Description: "HUGO Gene Nomenclature Committee (HGNC) identifier for a gene. (source: LOINC)" + FindingTopicCode is LNC#48018-6 "Gene studied [ID]" + FindingResult from http://www.genenames.org // LOINC preferred answer list LL378-1 for LNC#48018-6. + +Element: GenomicSourceClass +Concept: LNC#48002-0 "Genomic source class [Type]" +Based on: CodedNonIndependentFinding +Description: "The genomic class of the specimen being analyzed: Germline for inherited genome, somatic for cancer genome, and prenatal for fetal genome. (source: LOINC)" + FindingTopicCode is LNC#48002-0 "Genomic source class [Type]" + FindingResult from GenomicSourceClassVS // LOINC preferred answer list for LNC#48002-0. + +Element: DNARegionName +Concept: LNC#47999-8 "DNA region name [Identifier]" +Based on: NonIndependentFinding +Description: "A human readable name for the region of interest. Typically Exon #, Intron # or other. (source: LOINC)" + FindingTopicCode is LNC#47999-8 "DNA region name [Identifier]" + FindingResult value is type string + +Element: DNASequenceVariantId +Concept: LNC#48003-8 "DNA sequence variation identifier [Identifier]" +Based on: NonIndependentFinding +Description: "A DNA Marker identifier conveys a universal or standard repository identifier for definitive characterstics of a DNA Marker. (recommend using NCBI dbSNP ids - rs#) (source: LOINC)" + FindingTopicCode is LNC#48003-8 "DNA sequence variation identifier [Identifier]" + FindingResult value is type string + +Element: DNASequenceVariantName +Concept: LNC#48004-6 "DNA change (c.HGVS)" +Based on: NonIndependentFinding +Description: "Human Genome Variation Society (HGVS) nomenclature for a single DNA marker. The use of the nomenclature must be extended to describe non-variations (aka. wild types) see samples for wild type examples. (source: LOINC)" + FindingTopicCode is LNC#48004-6 "DNA change (c.HGVS)" + FindingResult value is type string + + // *** MLT: Example DCMs for an individual marker. We don't want to model each marker because that doesn't scale. + /* + EntryElement: PDL1ByCloneSP142ByImmuneStain + Based on: CodedLaboratoryObservation + Concept: LNC#83057-0 + Description: "The degree of PD-L1 (CD274) protein expression in tumor cells as determined by immune staining with anti-PD-L1 clone SP142. (source: LOINC)" + FindingTopicCode is LNC#83057-0 "PD-L1 by clone SP142 [Presence] in Tissue by Immune stain." + FindingResult from ProteinExpressionVS + DiagnosticService is #PAT + // Specimen is type BreastSpecimen + 0..0 NonIndependentFinding + PanelMembers.Observation + includes 0..1 PDL1PercentStaining + + EntryElement: PDL1PercentStaining + Based on: LaboratoryObservation + Concept: LNC#83053-9 + Description: "Cells.programmed cell death ligand 1/100 viable tumor cells in Tissue by Immune stain. (source: LOINC)" + FindingTopicCode is LNC#83053-9 "Cells.programmed cell death ligand 1/100 viable tumor cells in Tissue by Immune stain." + DiagnosticService is #PAT + FindingResult.Quantity with units UCUM#% + // Specimen is type BreastSpecimen +*/ \ No newline at end of file diff --git a/spec/shr_genetics_map_dstu2.txt b/spec/shr_genetics_map_dstu2.txt new file mode 100644 index 00000000..3f47d47f --- /dev/null +++ b/spec/shr_genetics_map_dstu2.txt @@ -0,0 +1,13 @@ +Grammar: Map 5.1 +Namespace: oncocore +Target: FHIR_DSTU_2 + +GeneticMarker maps to http://hl7.org/fhir/StructureDefinition/genetics: + Patient maps to subject + Category maps to category + +Gene maps to http://hl7.org/fhir/StructureDefinition/geneticsGene: + // FindingResult maps to extension.valueCodeableConcept (slice at = extension; slice # = 15) + FindingResult maps to value[x] + +// GenomicSourceClass maps to http://hl7.org/fhir/StructureDefinition/geneticsGenomicSourceClass: diff --git a/spec/shr_genetics_map_stu3.txt b/spec/shr_genetics_map_stu3.txt new file mode 100644 index 00000000..2bb9443e --- /dev/null +++ b/spec/shr_genetics_map_stu3.txt @@ -0,0 +1,11 @@ +Grammar: Map 5.1 +Namespace: oncocore +Target: FHIR_STU_3 + +GeneticMarker maps to http://hl7.org/fhir/StructureDefinition/genetics: + Patient maps to subject + Category maps to category + +Gene maps to http://hl7.org/fhir/StructureDefinition/geneticsGene: + // FindingResult maps to extension.valueCodeableConcept (slice at = extension; slice # = 15) + FindingResult maps to value[x] \ No newline at end of file diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt new file mode 100644 index 00000000..cb67f5b4 --- /dev/null +++ b/spec/shr_genetics_vs.txt @@ -0,0 +1,27 @@ +Grammar: ValueSet 5.0 +Namespace: oncocore + +CodeSystem: SCT = http://snomed.info/sct +CodeSystem: LNC = http://loinc.org +CodeSystem: HGNC = http://www.genenames.org + +ValueSet: ProteinExpressionVS +Description: "Interpretations of protein or gene expression as high, low, and no expression. Answer set taken from LOINC LL4167-4." +LNC#LA26821-1 "No expression." +LNC#LA26820-3 "Low expression." +LNC#LA26819-5 "High expression." + +// ValueSet: GeneticsGeneVS +// Description: "TBD stuff" +// Includes codes from http://www.genenames.org + +ValueSet: GenomicSourceClassVS +Description: "Data absent reasons (null values) for nuclear pleomorphism count and tubule formation score. Aligns with LOINC preferred answer list LL378-1." +LNC#LA6683-2 "Germline" +LNC#LA6684-0 "Somatic" +LNC#LA10429-1 "Fetal" +LNC#LA18194-3 "Likely germline" +LNC#LA18195-0 "Likely somatic" +LNC#LA18196-8 "Likely fetal" +LNC#LA18197-6 "Unknown genomic origin" +LNC#LA26807-0 "De novo" From cc3f69f455e6a37f8153c68b46fe67a5294f8ad6 Mon Sep 17 00:00:00 2001 From: May Terry Date: Fri, 7 Dec 2018 08:35:51 -0500 Subject: [PATCH 125/289] first rough cut at GeneticMarker --- spec/shr_genetics.txt | 27 +++++++++++++++++++++++---- spec/shr_genetics_map_dstu2.txt | 2 ++ spec/shr_genetics_vs.txt | 20 ++++++++++++++++++++ 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index 959b452e..e0bf43e6 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -17,13 +17,14 @@ EntryElement: GeneticMarker Based on: Observation Concept: MTH#C0017393 Description: "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Thesaurus)" - FindingTopicCode is MTH#C0017393 "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Thesaurus)" + FindingTopicCode is MTH#C0017393 "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Metathesaurus)" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) - Interpretation from PositiveNegativeEquivocalVS + Interpretation from PositiveNegativeEquivocalVS // this might not be true for all markers. 0..0 Media 0..0 AnatomicalLocation +0..1 CommentOrDescription NonIndependentFinding -includes 0..1 Gene // aligning name with the FHIR Cancer Genomics convention +includes 0..1 Gene // aligning property names with the FHIR Cancer Genomics IG includes 0..1 GenomicSourceClass includes 0..1 DNARegionName includes 0..1 DNASequenceVariantId @@ -35,7 +36,8 @@ Concept: LNC#48018-6 "Gene studied [ID]" Based on: CodedNonIndependentFinding Description: "HUGO Gene Nomenclature Committee (HGNC) identifier for a gene. (source: LOINC)" FindingTopicCode is LNC#48018-6 "Gene studied [ID]" - FindingResult from http://www.genenames.org // LOINC preferred answer list LL378-1 for LNC#48018-6. + FindingResult from http://www.genenames.org + // interpretation LOINC preferred answer list LL378-1 for LNC#48018-6. Element: GenomicSourceClass Concept: LNC#48002-0 "Genomic source class [Type]" @@ -65,6 +67,23 @@ Description: "Human Genome Variation Society (HGVS) nomenclature for a single DN FindingTopicCode is LNC#48004-6 "DNA change (c.HGVS)" FindingResult value is type string +EntryElement: TumorMarker +Based on: CodedLaboratoryObservation +Concept: LNC#21924-6 "Tumor marker Cancer" +Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Diectionary). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." + FindingTopicCode from TumorMarkerVS // should we put TumorMarkerVS with the list of all possible tumor markers? +// FindingResult // the result is the name of the tumor marker. +0..0 NonIndependentFinding +// PanelMembers.Observation // each cancer type can further narrow the value set of tumor markers as needed. +/* +Element: TumorMarkerName +Concept: LNC#TBD "TBD" +Based on: CodedNonIndependentFinding +Description: "TBD (source: LOINC)" + FindingTopicCode is LNC#TBD + FindingResult from TBD +*/ + // *** MLT: Example DCMs for an individual marker. We don't want to model each marker because that doesn't scale. /* EntryElement: PDL1ByCloneSP142ByImmuneStain diff --git a/spec/shr_genetics_map_dstu2.txt b/spec/shr_genetics_map_dstu2.txt index 3f47d47f..01a8fa37 100644 --- a/spec/shr_genetics_map_dstu2.txt +++ b/spec/shr_genetics_map_dstu2.txt @@ -5,9 +5,11 @@ Target: FHIR_DSTU_2 GeneticMarker maps to http://hl7.org/fhir/StructureDefinition/genetics: Patient maps to subject Category maps to category + CommentOrDescription maps to comments Gene maps to http://hl7.org/fhir/StructureDefinition/geneticsGene: // FindingResult maps to extension.valueCodeableConcept (slice at = extension; slice # = 15) FindingResult maps to value[x] // GenomicSourceClass maps to http://hl7.org/fhir/StructureDefinition/geneticsGenomicSourceClass: +// FindingResult maps to valueCodeableConcept \ No newline at end of file diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index cb67f5b4..3f2c473f 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -25,3 +25,23 @@ LNC#LA18195-0 "Likely somatic" LNC#LA18196-8 "Likely fetal" LNC#LA18197-6 "Unknown genomic origin" LNC#LA26807-0 "De novo" + +ValueSet: TumorMarkerVS +Description: "A tumor marker is a substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. This value set of LOINC codes will include a comprehensive list of tumor markers across all cancers, and regardless of method or specimen type. Subsets specific to a cancer type will be created as needed." +// as a prototype, only a couple of examples of tumor markers will be included in this list. +// An automated script which imports tumor markers from LOINC (similar to the way eCQMs are bulk imported) +// can easily be created. +LNC#17842-6 "Cancer Ag 27-29 [Units/volume] in Serum or Plasma" +LNC#2012-3 "Cancer Ag 27-29 [Presence] in Serum or Plasma" +LNC#2039-6 "Carcinoembryonic Ag [Mass/volume] in Serum or Plasma" +LNC#83085-1 "Carcinoembryonic Ag [Mass/volume] in Serum or Plasma by Immunoassay" +LNC#10334-1 "Cancer Ag 125 [Units/volume] in Serum or Plasma" +LNC#83082-8 "Cancer Ag 125 [Units/volume] in Serum or Plasma by Immunoassay" +LNC#2006-5 "Cancer Ag 125 [Presence] in Serum or Plasma" +LNC#6875-9 "Cancer Ag 15-3 [Units/volume] in Serum or Plasma" +LNC#83083-6 "Cancer Ag 15-3 [Units/volume] in Serum or Plasma by Immunoassay" +LNC#2007-3 "Cancer Ag 15-3 [Presence] in Serum or Plasma" +LNC#2857-1 "Prostate specific Ag [Mass/volume] in Serum or Plasma" +LNC#19198-1 "Prostate specific Ag [Units/volume] in Semen" +// and hundreds of others markers... + From dc280c9979d6a2927831d2b0fa8cfd63170808e3 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sat, 8 Dec 2018 22:13:39 -0500 Subject: [PATCH 126/289] Fixed Metadata attributes --- spec/shr_adverse.txt | 2 +- spec/shr_adverse_map_dstu2.txt | 5 +- spec/shr_adverse_map_stu3.txt | 3 +- spec/shr_allergy.txt | 4 +- spec/shr_allergy_map_dstu2.txt | 21 ++-- spec/shr_allergy_map_stu3.txt | 6 +- spec/shr_base.txt | 173 +++++++++++++++++++----------- spec/shr_base_action.txt | 2 +- spec/shr_base_finding.txt | 3 +- spec/shr_base_map_dstu2.txt | 26 ++--- spec/shr_base_map_stu3.txt | 29 +++-- spec/shr_brca.txt | 6 +- spec/shr_core.txt | 11 +- spec/shr_entity.txt | 24 +---- spec/shr_entity_map_dstu2.txt | 2 +- spec/shr_entity_map_stu3.txt | 2 +- spec/shr_medication.txt | 8 +- spec/shr_medication_map_dstu2.txt | 8 +- spec/shr_medication_map_stu3.txt | 8 +- spec/shr_occupation.txt | 2 - spec/shr_procedure.txt | 4 +- spec/shr_procedure_map_dstu2.txt | 8 +- spec/shr_procedure_map_stu3.txt | 8 +- spec/shr_wound.txt | 1 - 24 files changed, 198 insertions(+), 168 deletions(-) diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt index 1260648f..472ae682 100644 --- a/spec/shr_adverse.txt +++ b/spec/shr_adverse.txt @@ -12,7 +12,7 @@ CodeSystem: MTH = http://ncimeta.nci.nih.gov Element: AdverseEvent Based on: InformationItem Description: "A record of an untoward or unexpected event in a patient under treatment, and which does not necessarily have to have a causal relationship with that treatment. Adverse events may capture either a workflow breach that may or may not result in harm, but must be documented for quality improvement purposes, or an adverse finding whether or not it can be traceable to an actual workflow breach." -// SignedBy.Attribution.EntityOrRole is type PatientOrPractitionerOrRelatedPerson <--to facilitate mapping to FHIR, which only allows Patient, Practitioner, or RelatedPerson as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) + Metadata.InformationRecorder value is type PatientOrPractitionerOrRelatedPerson 1..1 Patient 0..1 Type from MedDRAVS 1..1 OccurrenceTime diff --git a/spec/shr_adverse_map_dstu2.txt b/spec/shr_adverse_map_dstu2.txt index 5a92e154..814cd03d 100644 --- a/spec/shr_adverse_map_dstu2.txt +++ b/spec/shr_adverse_map_dstu2.txt @@ -3,8 +3,7 @@ Namespace: shr.adverse Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: -// _Entry.SignedBy.Value.EntityOrRole maps to recorder ?? -// EntityOrRole is the name of the property; don't say Signed.Value.Role + Metadata.InformationRecorder maps to recorder Type maps to type CommentOrDescription maps to description Patient maps to subject @@ -14,7 +13,7 @@ AdverseEvent maps to AdverseEvent: Outcome maps to outcome // FHIR TODO: AdverseEvent.eventParticipant is underdefined (no role) CausalAttribution.PossibleCause maps to suspectEntity.instance - CausalAttribution.Certainty maps to suspectEntity.causalityAssessment + CausalAttribution.Certainty maps to suspectEntity.causalityAssessment AdverseDrugReaction maps to AdverseEvent: constrain suspectEntity to 1..* \ No newline at end of file diff --git a/spec/shr_adverse_map_stu3.txt b/spec/shr_adverse_map_stu3.txt index 5a92e154..b0bb1b83 100644 --- a/spec/shr_adverse_map_stu3.txt +++ b/spec/shr_adverse_map_stu3.txt @@ -3,8 +3,7 @@ Namespace: shr.adverse Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: -// _Entry.SignedBy.Value.EntityOrRole maps to recorder ?? -// EntityOrRole is the name of the property; don't say Signed.Value.Role + Metadata.InformationRecorder maps to recorder Type maps to type CommentOrDescription maps to description Patient maps to subject diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index 3edb0f3f..b694fbcd 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -12,8 +12,8 @@ Based on: Finding Concept: SCT#473010000 "Hypersensitivity condition (disorder)" // or SCT#420134006 "Propensity to adverse reactions (disorder)"? Description: "A finding related to the presence of an individual's risk or sensitivity to a substance or class of substances. An AllergyIntolerancePresent finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time. Per US Core specification, the result includes SNOMED codes representing 'No known allergy'. In AllergyIntolerance, the reactions are included in-line, rather than referencing to conditions (in notable contrast to AdverseEvent)." -// SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson -// Signed.Attribution.EntityOrRole is type PatientOrPractitioner // to facilitate mapping to FHIR, which only allows Patient or Practitioner as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) + Metadata.OriginatorOrSource value is type PatientOrPractitionerOrRelatedPerson + Metadata.InformationRecorder value is type PatientOrPractitioner // FHIR only allows Patient or Practitioner as recorder 1..1 Patient 1..1 FindingStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index 277a9fba..d3196126 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -5,15 +5,16 @@ Target: FHIR_DSTU_2 AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: Patient maps to patient -// SourceOfInformation.Value maps to asserter -// Signed.Value.EntityOrRole maps to recorder - _Entry.CreationTime maps to recordedDate + Metadata.OriginatorOrSource maps to asserter + Metadata.InformationRecorder maps to recorder + Metadata.AuthoredDateTime maps to assertedDate FindingResult maps to substance AllergyIntoleranceType maps to type SubstanceCategory maps to category -// DSTU 2 change (FindingStatus and ClinicalStatus map to one DSTU 2 attribute, status. Eliminate mappings so native DSTU 2 status is supported. Admittedly, not a great solution.) -// FindingStatus maps to verificationStatus -// ClinicalStatus maps to status +/* DSTU 2: FindingStatus and ClinicalStatus map to one attribute, status. This is a problem. For now, eliminating mappings so native DSTU 2 status is supported. + FindingStatus maps to verificationStatus + ClinicalStatus maps to status +*/ Criticality maps to criticality // DSTU 2 change (onset only dateTime, not a choice [x]) Onset maps to onset @@ -28,10 +29,10 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a /* NoAdverseSensitivityToSubstance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: -// Patient maps to patient -// SourceOfInformation.Value maps to asserter -// Signed.Value.EntityOrRole maps to recorder - _Entry.CreationTime maps to assertedDate + Patient maps to patient + Metadata.OriginatorOrSource maps to asserter + Metadata.InformationRecorder maps to recorder + Metadata.AuthoredDateTime maps to assertedDate AdverseSensitivityTopic.TopicCode maps to code constrain type to 0..0 constrain category to 0..0 diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index da0c30e8..75651307 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -4,8 +4,10 @@ Target: FHIR_STU_3 AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: Patient maps to patient -// Signed.Value.EntityOrRole maps to recorder - _Entry.CreationTime maps to assertedDate + Patient maps to patient + Metadata.OriginatorOrSource maps to asserter + Metadata.InformationRecorder maps to recorder + Metadata.AuthoredDateTime maps to assertedDate FindingResult maps to code AllergyIntoleranceType maps to type SubstanceCategory maps to category diff --git a/spec/shr_base.txt b/spec/shr_base.txt index d27e1814..0eba2d0f 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -9,54 +9,30 @@ CodeSystem: SCT = http://snomed.info/sct CodeSystem: NCI = https://evs.nci.nih.gov/ftp1/CDISC/SDTM/ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category -Element: InformationItem -Concept: MTH#C1705654 -Description: "Parent class for any entry in clinical or administrative health-related system, including information about organizations, providers, patients, services, payments, decision support artifacts, etc." - Element: Entry Concept: MTH#C1705654 -Description: "Metadata attributes that apply to any item represented in the standard health record. An Entry may not belong exclusively to a single person's health record, but could represent an entity that surfaces in multiple records, such as organizations or practitioners. If the entry belongs to a single person's record, then the identity of the person of record must be recorded." -0..1 ShrId -1..1 EntryId -0..1 Version - Version value is type id -1..1 EntryType -1..1 CreationTime -1..1 LastUpdated -0..1 RecordStatus -0..1 Narrative -0..1 Language -0..* SecurityLabel -0..* Tag -0..* DerivedFrom -0..1 RecordedBy -0..1 SignedBy // Author -//0..* CosignedBy -//0..* VerifiedBy +Description: "Obsolete. Use InformationItem" + +/*0..1 ShrId Element: ShrId Concept: TBD Description: "A unique, persistent, permanent identifier for the overall health record belonging to the Patient." - Value: id + Value: id */ + +Abstract Element: InformationItem +Concept: MTH#C1705654 +Description: "Parent class for any item in clinical or administrative health-related system. Contains metadata attributes that apply to any item represented in the standard health record. An InformationItem can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." +1..1 EntryId +0..1 Narrative +0..1 Language +0..1 Metadata + Element: EntryId Concept: MTH#C0600091 Description: "A persistent, permanent identifier for an entry in a health record, unique within the scope of the health record." Value: id - - Element: EntryType // Would EntryClass be clearer? - Concept: TBD - Description: "SHR data element identifier, as a URI." - Value: uri - - Element: LastUpdated - Concept: TBD - Description: "The most recent date the entry was changed." - Value: instant - - Element: RecordStatus - Description: "Concept indicating the state of this record, e.g., 'entered in error'." - Value: CodeableConcept Element: Narrative Concept: TBD @@ -73,6 +49,29 @@ Description: "Metadata attributes that apply to any item represented in the stan Concept: TBD Description: "Additional information on how the narrative was generated, and the scope of information contained." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/narrative-status + + +Element: Metadata +Concept: TBD +Description: "Elements that belong to all information items." +0..1 VersionId +1..1 EntryType // would EntryConformance be clearer? +0..1 RecordStatus +0..* SecurityLabel +0..* Tag +0..1 OriginatorOrSource +0..1 InformationRecorder +0..1 AuthoredDateTime +1..1 LastUpdated + + Element: EntryType // Would EntryClass be clearer? + Concept: TBD + Description: "The class of the item, as a URI." + Value: uri + + Element: RecordStatus + Description: "Concept indicating the state of this record, e.g., 'entered in error'." + Value: CodeableConcept Element: SecurityLabel Concept: TBD @@ -83,37 +82,57 @@ Description: "Metadata attributes that apply to any item represented in the stan Concept: TBD Description: "A code used to relate entries to categories or workflows. Applications are not required to consider the tags when interpreting the meaning of an entry." Value: CodeableConcept - - Element: DerivedFrom + + Element: OriginatorOrSource Concept: TBD - Description: "Indicates the source of information in the case the Entry has been created by logical extension or modification of one or more source entries." - Value: ref(InformationItem) - - Element: RecordedBy - Description: "The person who entered the order on behalf of another individual for example in the case of a verbal or a telephone order." - Value: Attribution - - Element: SignedBy - Description: "Provenance information specific to the signing of the clinical statement." + Description: "The origin or source of the information or request: a practitioner, patient, related person, organization, another health record, an algorithm, device, etc." Value: Attribution - Element: CosignedBy - Description: "Provenance information specific to the cosigning of the clinical statement." + Element: InformationRecorder + Concept: TBD + Description: "The recorder of the information, if other than the information originator. For example, the nurse taking a list of medications reported by the patient." Value: Attribution - Element: VerifiedBy - Description: "Provenance information specific to the verification process associated with this statement (e.g., verifier, when verified, etc.)" - Value: Attribution - Element: Attribution Description: "Information ascribing the record to a particular contributor or responsible person." - 1..1 EntityOrRole // TODO: change to Participant - 0..1 RecordedOn - 0..1 Signature + Value: ref(EntityOrRole) + + Element: PatientOrPractitioner + Based on: Attribution + Description: "A choice of Patient or Practitioner. Needed for mapping to FHIR." + Value: ref(Patient) or ref(Practitioner) + + Element: PatientOrPractitionerOrRelatedPerson + Based on: Attribution + Description: "A choice of Patient, Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping AdverseEvent.SignedBy to FHIR AdverseEvent." + Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) + + Element: PractitionerOrRelatedPerson + Based on: Attribution + Description: "A choice of Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping EncounterPerformed.Participant to FHIR Encounter.participant.individual" + Value: ref(Practitioner) or ref(RelatedPerson) + + Element: PersonOrOrganization + Based on: Attribution + Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." + Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Organization) + + Element: PersonOrDevice + Based on: Attribution + Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." + Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Device) + + + Element: AuthoredDateTime + Concept: TBD + Description: "The time the information was recorded; usually, when the information item was created." + Value: dateTime + + Element: LastUpdated + Concept: TBD + Description: "The most recent date the information item was changed." + Value: instant - Element: RecordedOn - Description: "The time of the attribution action." - Value: instant EntryElement: Composition Based on: InformationItem @@ -131,9 +150,43 @@ Description: "A composition represents a set of Entries sharing common provenanc /* + Element: ShrId + Concept: TBD + Description: "A unique, persistent, permanent identifier for the overall health record belonging to the Patient." + Value: id + Element: HealthRecordId Concept: MTH#C1549718 Description: "A unique, persistent, permanent identifier for a health record." Value: id + + Element: DerivedFrom + Concept: TBD + Description: "Indicates the source of information in the case the Entry has been created by logical extension or modification of one or more source entries." + Value: ref(InformationItem) + + Element: SignedBy + Description: "Provenance information specific to the signing of the clinical statement." + Value: Attribution + + Element: CosignedBy + Description: "Provenance information specific to the cosigning of the clinical statement." + Value: Attribution + + Element: VerifiedBy + Description: "Provenance information specific to the verification process associated with this statement (e.g., verifier, when verified, etc.)" + Value: Attribution + + Element: Attribution + Description: "Information ascribing the record to a particular contributor or responsible person." + 1..1 EntityOrRole // TODO: change to Participant + 0..1 RecordedOn + 0..1 Signature + + Element: RecordedOn + Description: "The time of the attribution action." + Value: instant + + */ diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 03f1fe84..94b35b2e 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -9,7 +9,7 @@ Abstract Element: ActionStatement Based on: InformationItem Description: "Abstract class representing any type of action." 0..1 Category // Might not need this -1..1 Patient // constrain from 0..1 to 1..1 +1..1 Patient // Change to 0..1? Not all actions involve a patient 0..1 Encounter // actions often take place during an encounter 0..* Reason diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 8b6605d2..c82543e8 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -106,7 +106,6 @@ For an Observation, the FindingTopicCode describes the aspect or property of the 0..1 Interpretation 0..1 Device 0..1 Specimen -//0..* Precondition MK - avoid clutter 0..* Media // needed in Wound assessment 0..1 PanelMembers @@ -264,7 +263,7 @@ EntryElement: ConditionPresentAssertion Based on: PresenceAssertion Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." -//0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson + Metadata.OriginatorOrSource value is type ref(PatientOrPractitionerOrRelatedPerson) 1..1 Patient 0..0 SpecificFocusOfFinding // maybe a family member? 0..1 FindingMethod diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 88e3500c..81e1ff5e 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -2,18 +2,18 @@ Grammar: Map 5.1 Namespace: shr.base Target: FHIR_DSTU_2 -Entry maps to DomainResource: +//Entry maps to DomainResource: + +InformationItem maps to DomainResource: EntryId maps to id - constrain meta to 1..1 - Version maps to meta.versionId - EntryType maps to meta.profile - LastUpdated maps to meta.lastUpdated Language maps to language Narrative maps to text - SecurityLabel maps to meta.security - Tag maps to meta.tag - -InformationItem maps to DomainResource: + constrain meta to 1..1 + Metadata.VersionId maps to meta.versionId + Metadata.EntryType maps to meta.profile + Metadata.LastUpdated maps to meta.lastUpdated + Metadata.SecurityLabel maps to meta.security + Metadata.Tag maps to meta.tag Composition maps to Composition: Section maps to section @@ -25,7 +25,7 @@ Narrative maps to Narrative: Observation maps to Observation: Patient maps to subject -// SourceOfInformation.Value maps to performer +// Metadata.OriginatorOrSource maps to performer FindingTopicCode maps to code FindingMethod maps to method // dstu 2 change (name change) @@ -68,7 +68,7 @@ Observation maps to Observation: LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-observationresults: // dstu2 different mapping target Patient maps to subject -// SourceOfInformation.Value maps to performer +// Metadata.OriginatorOrSource maps to performer FindingTopicCode maps to code FindingMethod maps to method // dstu 2 change (name change) @@ -111,8 +111,8 @@ LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinitio ConditionPresentAssertion maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-condition: // dstu 2 change (different mapping target) -// _Entry.CreationTime maps to assertedDate // why doesn't this work? -// SourceOfInformation.Value maps to asserter // why doesn't this work? + Metadata.AuthoredDateTime maps to assertedDate + Metadata.OriginatorOrSource maps to asserter Patient maps to patient Category maps to category ObjectIdentifier maps to identifier diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 176ce118..ef012595 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -2,18 +2,18 @@ Grammar: Map 5.1 Namespace: shr.base Target: FHIR_STU_3 -Entry maps to DomainResource: +//Entry maps to DomainResource: + +InformationItem maps to DomainResource: EntryId maps to id - constrain meta to 1..1 - Version maps to meta.versionId - EntryType maps to meta.profile - LastUpdated maps to meta.lastUpdated Language maps to language Narrative maps to text - SecurityLabel maps to meta.security - Tag maps to meta.tag - -InformationItem maps to DomainResource: + constrain meta to 1..1 + Metadata.VersionId maps to meta.versionId + Metadata.EntryType maps to meta.profile + Metadata.LastUpdated maps to meta.lastUpdated + Metadata.SecurityLabel maps to meta.security + Metadata.Tag maps to meta.tag Composition maps to Composition: Section maps to section @@ -26,7 +26,7 @@ Narrative maps to Narrative: // do not map Observation to US Core Results -- Brett says that's only for labs Observation maps to Observation: // TODO: observationresults is only for labs Patient maps to subject -// SourceOfInformation.Value maps to performer // Why doesn't this work??? +// Metadata.OriginatorOrSource maps to performer FindingTopicCode maps to code FindingMethod maps to method CommentOrDescription maps to comment @@ -60,9 +60,9 @@ Observation maps to Observation: // TODO: observationresults is only for labs DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta -LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: // TODO: observationresults is only for labs +LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: Patient maps to subject -// SourceOfInformation.Value maps to performer // Why doesn't this work??? +// Metadata.OriginatorOrSource maps to performer FindingTopicCode maps to code FindingMethod maps to method CommentOrDescription maps to comment @@ -96,9 +96,8 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: -// _Entry.CreationTime maps to assertedDate // why doesn't this work? -// Patient maps to subject -// SourceOfInformation.Value maps to asserter // why doesn't this work? + Metadata.AuthoredDateTime maps to assertedDate + Metadata.OriginatorOrSource maps to asserter Patient maps to subject Category maps to category ObjectIdentifier maps to identifier diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 5bad413c..7ba1da1d 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -74,7 +74,6 @@ Description: "HER2 receptor status. HER2 is a member of the human epidermal grow FindingTopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" DiagnosticService is #pathology Specimen is type BreastSpecimen -//0..0 Precondition 0..0 FindingMethod 0..0 NonIndependentFinding PanelMembers.Observation @@ -92,7 +91,7 @@ Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (I FindingTopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" 0..0 FindingMethod // pre-coordinated in the FindingTopicCode DiagnosticService is #pathology -//0..0 Precondition + Specimen is type BreastSpecimen NonIndependentFinding includes 0..1 CompleteMembraneStainingPercent @@ -117,7 +116,7 @@ Description: "HER2 receptor status as determined by single-probe or dual-probe F FindingMethod from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS DiagnosticService is #pathology -//0..0 Precondition + Specimen is type BreastSpecimen NonIndependentFinding includes 0..1 AverageHER2SignalsPerCell @@ -399,7 +398,6 @@ Description: "Whether a subject carries a mutation in a particular gene." Value: CodeableConcept from PositiveNegativeVS // SpecificFocusOfFinding.CodeableConcept from GeneIdentifierVS DiagnosticService is #genetics -//0..0 Precondition 0..0 ReferenceRange 0..0 DeltaFlag 0..0 AnatomicalLocationd diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 16937fd9..12db25a7 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -609,10 +609,15 @@ Concept: MTH#C1548311 Description: "A string meant for reading by a person, for example, accompanying a code." Value: string -Element: Version +Element: VersionId Concept: MTH#C0333052 -Description: "A number or code associated with the product that identifies a particular release iteration." -Value: string or id +Description: "An identifier associated with the product that denotes a particular release iteration." +Value: id + +Element: VersionString +Concept: MTH#C0333052 +Description: "A string associated with the product that identifies a particular release iteration." +Value: string Element: Title Concept: TBD diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 96dab86e..d09c00f2 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -90,28 +90,6 @@ Description: "A person in a role defined in relationship to a patient" Description: "The relationship to the person of record." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype // DSTU 2 change -- change from extensible to required since this value set is required in DSTU 2 -Element: PatientOrPractitioner -Based on: EntityOrRole -Description: "A choice of Patient or Practitioner. Needed for mapping to FHIR." -Value: ref(Patient) or ref(Practitioner) - -Element: PatientOrPractitionerOrRelatedPerson -Based on: EntityOrRole -Description: "A choice of Patient, Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping AdverseEvent.SignedBy to FHIR AdverseEvent." -Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) - -Element: PractitionerOrRelatedPerson -Based on: EntityOrRole -Description: "A choice of Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping EncounterPerformed.Participant to FHIR Encounter.participant.individual" -Value: ref(Practitioner) or ref(RelatedPerson) - -/* -Element: AnyPersonOrOrganization -Based on: EntityOrRole -Description: "Needed for mapping to FHIR, for example, mapping to FHIR MedicationStatement.informationSource." -Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) //or ref(Organization) -*/ - EntryElement: Group Based on: Entity Concept: MTH#C0441833 @@ -553,7 +531,7 @@ Description: "A specific durable physical device used in diagnosis or treatment. 0..1 ManufacturerName // string, not ref(Organization) - only because of mapping to FHIR 0..1 ManufactureDate 0..1 ExpirationDate -0..1 Version +0..1 VersionString 0..1 Url Element: DeviceUdi diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index be84e447..bed0b7c7 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -141,5 +141,5 @@ Device maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-device: ManufactureDate maps to manufactureDate // dstu 2 change (different attribute) ExpirationDate maps to expiry - Version maps to version + VersionString maps to version Url maps to url diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index 5c328dcc..dec0ede4 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -132,7 +132,7 @@ Device maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-device: ManufacturerName maps to manufacturer ManufactureDate maps to manufactureDate ExpirationDate maps to expirationDate - Version maps to version + VersionString maps to version Url maps to url diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 910b8c73..f38b74ea 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -68,7 +68,9 @@ EntryElement: MedicationStatement Based on: ActionPerformed Concept: SCT#416608005 "Drug therapy (procedure)" // TODO: investigate whether we need a new code or use a drug concept. Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." -// SourceOfInformation value is type AnyPersonOrOrganization + Metadata.OriginatorOrSource value is type PersonOrOrganization +1..1 Metadata // if 0..1, then AuthoredDateTime could still be 0..1 +1..1 Metadata.AuthoredDateTime // us-core required 1..1 Medication 0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category @@ -80,7 +82,7 @@ EntryElement: MedicationAdministered Based on: ActionPerformed Concept: TBD Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." -// SourceOfInformation value is type AnyPersonOrOrganization + Metadata.OriginatorOrSource value is type PersonOrDevice 1..1 Medication 0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category @@ -119,7 +121,7 @@ Based on: ActionNotPerformed Concept: TBD Description: "A record of a medication NOT used. Although usually not required, a medication not used is sometimes reported when deviating from normal expectation or care plan." 1..1 Medication -0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category +0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category Reason from MedicationNotUsedReasonVS EntryElement: MedicationRequested diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index 6d68c023..e03f960c 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -16,8 +16,8 @@ Dosage maps to Dosage: */ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationstatement: -// SourceOfInformation.Value maps to informationSource -// _Entry.CreationTime maps to dateAsserted // however, date asserted and date recorded may not be the same + Metadata.OriginatorOrSource maps to informationSource + Metadata.AuthoredDateTime maps to dateAsserted // slight semantic difference? Patient maps to patient constrain wasNotTaken to 0..0 constrain reasonNotTaken to 0..0 @@ -45,7 +45,7 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ Dosage.MaximumDosePerTimePeriod maps to dosage.maxDosePerPeriod MedicationAdministered maps to MedicationAdministration: -// SourceOfInformation.Value maps to informationSource + Metadata.OriginatorOrSource maps to perfomer.actor Patient maps to patient // DSTU 2 change (name change) Encounter maps to encounter @@ -75,7 +75,7 @@ MedicationAdministered maps to MedicationAdministration: MedicationNotAdministered maps to MedicationAdministration: -// SourceOfInformation.Value maps to informationSource + constrain performer to 0..0 Medication maps to medication[x] // DSTU 2 change (no such attribute) // Category maps to category diff --git a/spec/shr_medication_map_stu3.txt b/spec/shr_medication_map_stu3.txt index ba8686b6..0789eecb 100644 --- a/spec/shr_medication_map_stu3.txt +++ b/spec/shr_medication_map_stu3.txt @@ -14,8 +14,8 @@ Dosage maps to Dosage: MaximumDosePerTimePeriod maps to maxDosePerPeriod MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: -// SourceOfInformation.Value maps to informationSource -// _Entry.CreationTime maps to dateAsserted // however, date asserted and date recorded may not be the same + Metadata.OriginatorOrSource maps to informationSource + Metadata.AuthoredDateTime maps to dateAsserted Patient maps to subject constrain reasonNotTaken to 0..0 constrain dosage to 0..1 @@ -28,7 +28,7 @@ MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c Status maps to status MedicationAdministered maps to MedicationAdministration: -// SourceOfInformation.Value maps to informationSource + Metadata.OriginatorOrSource maps to performer.actor Patient maps to subject Encounter maps to context RelatedRequest maps to prescription @@ -46,7 +46,7 @@ MedicationAdministered maps to MedicationAdministration: Participation.OnBehalfOf maps to performer.onBehalfOf MedicationNotAdministered maps to MedicationAdministration: -// SourceOfInformation.Value maps to informationSource + constrain performer to 0..0 Medication maps to medication[x] Category maps to category fix notGiven to true diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 4ce5ed3f..904fcf7a 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -209,10 +209,8 @@ Based on: Observation Description: "A simplified observation for social histories." Category is OBSCAT#social-history 0..1 FocalSubjectModifier -//0..0 SourceOfInformation 0..0 FindingMethod 0..0 AnatomicalLocation -//0..0 Precondition 0..0 ReferenceRange 0..0 PanelMembers 0..0 Device diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 4b5093e6..be8021fe 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -15,8 +15,7 @@ Description: "A procedure that has been performed." 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation 0..1 Reason -0..1 Method -//0..* Precondition +0..1 Method 0..* InputFinding 0..* Indication 0..* ref(Device) @@ -73,7 +72,6 @@ Based on: ActionRequested 0..* Annotation 0..1 Reason 0..1 Method -//0..* Precondition 0..* InputFinding 0..* Indication 0..* ref(Device) diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 61881556..dd0632bb 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -58,8 +58,8 @@ SurgicalProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefi ProcedureRequested maps to ProcedureRequest: -// _Entry.CreationTime maps to authoredOn -// _Entry.SignedBy.Value.EntityOrRole maps to requester + Metadata.AuthoredDateTime maps to authoredOn + Metadata.OriginatorOrSource maps to requester ProcedureCode maps to code // DSTU 2 change (no such attribute) // Category maps to category @@ -83,8 +83,8 @@ ProcedureRequestedAgainst maps to Basic: /* In DSTU 2, there is not way to specify a procedure NOT to perform using Procedure resource fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal - _Entry.CreationTime maps to authoredOn - _Entry.SignedBy.Value.EntityOrRole maps to requester + Metadata.AuthoredDateTime maps to authoredOn + Metadata.OriginatorOrSource maps to requester ProcedureCode maps to code Category maps to category Patient maps to subject diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index 6a803101..e71efa7e 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -54,8 +54,8 @@ SurgicalProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefiniti ProcedureRequested maps to ProcedureRequest: -// _Entry.CreationTime maps to authoredOn -// _Entry.SignedBy.Value.EntityOrRole maps to requester + Metadata.AuthoredDateTime maps to authoredOn + Metadata.OriginatorOrSource maps to requester ProcedureCode maps to code Category maps to category constrain doNotPerform to 0..0 @@ -73,8 +73,8 @@ ProcedureRequested maps to ProcedureRequest: ProcedureRequestedAgainst maps to ProcedureRequest: fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal - _Entry.CreationTime maps to authoredOn - _Entry.SignedBy.Value.EntityOrRole maps to requester + Metadata.AuthoredDateTime maps to authoredOn + Metadata.OriginatorOrSource maps to requester ProcedureCode maps to code Category maps to category Patient maps to subject diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 2b7aa938..599f6ef4 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -80,7 +80,6 @@ The WoundIdentifier serves as a link between this assertion and assessments of t 0..0 Criticality 0..0 Certainty 0..0 Device -//0..0 Precondition Element: WoundIdentifier Based on: ObjectIdentifier From a58f2c3ad4df5ca84a6db630740241b816affc5d Mon Sep 17 00:00:00 2001 From: May Terry Date: Sat, 8 Dec 2018 22:45:49 -0500 Subject: [PATCH 127/289] expanded tumor marker value set. --- spec/shr_genetics.txt | 4 +- spec/shr_genetics_vs.txt | 138 +++++++++++++++++++++++++++++++++++---- 2 files changed, 126 insertions(+), 16 deletions(-) diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index e0bf43e6..cfa03b28 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -63,9 +63,9 @@ Description: "A DNA Marker identifier conveys a universal or standard repository Element: DNASequenceVariantName Concept: LNC#48004-6 "DNA change (c.HGVS)" Based on: NonIndependentFinding -Description: "Human Genome Variation Society (HGVS) nomenclature for a single DNA marker. The use of the nomenclature must be extended to describe non-variations (aka. wild types) see samples for wild type examples. (source: LOINC)" +Description: "Human Genome Variation Society (HGVS) nomenclature for a single DNA marker. The use of the nomenclature must be extended to describe non-variations (aka. wild types) see samples for wild type examples. (source: LOINC). Further information on the HGVS nomenclature can be found at http://varnomen.hgvs.org" FindingTopicCode is LNC#48004-6 "DNA change (c.HGVS)" - FindingResult value is type string + FindingResult value is type string // following the HGVS simple format at http://varnomen.hgvs.org/bg-material/simple/ EntryElement: TumorMarker Based on: CodedLaboratoryObservation diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index 3f2c473f..c899d37d 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -31,17 +31,127 @@ Description: "A tumor marker is a substance found in tissue or blood or other // as a prototype, only a couple of examples of tumor markers will be included in this list. // An automated script which imports tumor markers from LOINC (similar to the way eCQMs are bulk imported) // can easily be created. -LNC#17842-6 "Cancer Ag 27-29 [Units/volume] in Serum or Plasma" -LNC#2012-3 "Cancer Ag 27-29 [Presence] in Serum or Plasma" -LNC#2039-6 "Carcinoembryonic Ag [Mass/volume] in Serum or Plasma" -LNC#83085-1 "Carcinoembryonic Ag [Mass/volume] in Serum or Plasma by Immunoassay" -LNC#10334-1 "Cancer Ag 125 [Units/volume] in Serum or Plasma" -LNC#83082-8 "Cancer Ag 125 [Units/volume] in Serum or Plasma by Immunoassay" -LNC#2006-5 "Cancer Ag 125 [Presence] in Serum or Plasma" -LNC#6875-9 "Cancer Ag 15-3 [Units/volume] in Serum or Plasma" -LNC#83083-6 "Cancer Ag 15-3 [Units/volume] in Serum or Plasma by Immunoassay" -LNC#2007-3 "Cancer Ag 15-3 [Presence] in Serum or Plasma" -LNC#2857-1 "Prostate specific Ag [Mass/volume] in Serum or Plasma" -LNC#19198-1 "Prostate specific Ag [Units/volume] in Semen" -// and hundreds of others markers... - +LNC#1695-6 "5-Hydroxyindoleacetate [Mass/time] in 24 hour Urine" +LNC#31203-3 "5-Hydroxyindoleacetate [Mass/volume] in 24 hour Urine" +LNC#1692-3 "5-Hydroxyindoleacetate [Mass/volume] in Cerebral spinal fluid" +LNC#1693-1 "5-Hydroxyindoleacetate [Mass/volume] in Serum or Plasma" +LNC#1694-9 "5-Hydroxyindoleacetate [Mass/volume] in Urine" +LNC#72820-4 "5-Hydroxyindoleacetate [Mass/volume] in Urine by Confirmatory method" +LNC#14573-0 "5-Hydroxyindoleacetate [Moles/time] in 24 hour Urine" +LNC#25971-3 "5-Hydroxyindoleacetate [Moles/volume] in 24 hour Urine" +LNC#47544-2 "5-Hydroxyindoleacetate [Moles/volume] in Cerebral spinal fluid" +LNC#74769-1 "5-Hydroxyindoleacetate [Moles/volume] in Platelet rich plasma" +LNC#50149-4 "5-Hydroxyindoleacetate [Moles/volume] in Serum or Plasma" +LNC#15009-4 "5-Hydroxyindoleacetate [Moles/volume] in Urine" +LNC#12172-3 "5-Hydroxyindoleacetate [Presence] in 24 hour Urine" +LNC#48168-9 "5-Hydroxyindoleacetate [Presence] in Urine" +LNC#44907-4 "5-Hydroxyindoleacetate panel - 24 hour Urine" +LNC#10459-6 "Alpha-1-Fetoprotein Ag [Presence] in Tissue by Immune stain" +// LNC#42332-7 "Alpha-1-Fetoprotein L3/Alpha-1-fetoprotein.total in Serum or Plasma" +LNC#11207-8 "Alpha-1-Fetoprotein [Mass/volume] in Body fluid" +LNC#1833-3 "Alpha-1-Fetoprotein [Mass/volume] in Cerebral spinal fluid" +LNC#54348-8 "Alpha-1-Fetoprotein [Mass/volume] in Cord blood" +LNC#49761-0 "Alpha-1-Fetoprotein [Mass/volume] in Peritoneal fluid" +LNC#49762-8 "Alpha-1-Fetoprotein [Mass/volume] in Pleural fluid" +LNC#1834-1 "Alpha-1-Fetoprotein [Mass/volume] in Serum or Plasma" +LNC#83073-7 "Alpha-1-Fetoprotein [Mass/volume] in Serum or Plasma by Immunoassay" +LNC#19173-4 "Alpha-1-Fetoprotein [Moles/volume] in Pleural fluid" +LNC#19177-5 "Alpha-1-Fetoprotein [Moles/volume] in Serum or Plasma" +// LNC#50610-5 "Alpha-1-Fetoprotein [Multiple of the median] adjusted for multiple gestations in Serum or Plasma" +// LNC#43997-6 "Alpha-1-Fetoprotein [Multiple of the median] adjusted for weight in Serum or Plasma" +// LNC#23811-3 "Alpha-1-Fetoprotein [Multiple of the median] adjusted in Serum or Plasma" +// LNC#20450-3 "Alpha-1-Fetoprotein [Multiple of the median] in Serum or Plasma" +// LNC#23812-1 "Alpha-1-Fetoprotein [Multiple of the median] unadjusted in Serum or Plasma" +LNC#31993-9 "Alpha-1-Fetoprotein [Presence] in Serum or Plasma" +LNC#44910-8 "Alpha-1-Fetoprotein [Units/volume] in Body fluid" +LNC#59564-5 "Alpha-1-Fetoprotein [Units/volume] in Cerebral spinal fluid" +LNC#19172-6 "Alpha-1-Fetoprotein [Units/volume] in Pleural fluid" +LNC#19176-7 "Alpha-1-Fetoprotein [Units/volume] in Serum or Plasma" +LNC#83072-9 "Alpha-1-Fetoprotein [Units/volume] in Serum or Plasma by Immunoassay" +LNC#41274-2 "Alpha-1-Fetoprotein interpretation in Serum or Plasma" +LNC#49246-2 "Alpha-1-Fetoprotein interpretation in Serum or Plasma Narrative" +LNC#49585-3 "Alpha-1-Fetoprotein multiple of the median cutoff [Multiple of the median] in Serum or Plasma" +LNC#48802-3 "Alpha-1-Fetoprotein panel - Serum or Plasma" +LNC#53962-7 "Alpha-1-fetoprotein.tumor marker [Mass/volume] in Serum or Plasma" +LNC#53960-1 "Alpha-1-fetoprotein.tumor marker [Moles/volume] in Serum or Plasma" +LNC#53961-9 "Alpha-1-fetoprotein.tumor marker [Units/volume] in Serum or Plasma" +LNC#2006-5 "Cancer Ag 125 [Presence] in Serum or Plasma" +LNC#48677-9 "Cancer Ag 125 [Presence] in Tissue by Immune stain" +LNC#11210-2 "Cancer Ag 125 [Units/volume] in Body fluid" +LNC#15156-3 "Cancer Ag 125 [Units/volume] in Body fluid by Dilution" +LNC#50775-6 "Cancer Ag 125 [Units/volume] in Cerebral spinal fluid" +LNC#68923-2 "Cancer Ag 125 [Units/volume] in Pericardial fluid" +LNC#59040-6 "Cancer Ag 125 [Units/volume] in Peritoneal dialysis fluid" +LNC#40618-1 "Cancer Ag 125 [Units/volume] in Peritoneal fluid" +LNC#19165-0 "Cancer Ag 125 [Units/volume] in Pleural fluid" +LNC#10334-1 "Cancer Ag 125 [Units/volume] in Serum or Plasma" +LNC#15157-1 "Cancer Ag 125 [Units/volume] in Serum or Plasma by Dilution" +LNC#83082-8 "Cancer Ag 125 [Units/volume] in Serum or Plasma by Immunoassay" +LNC#2007-3 "Cancer Ag 15-3 [Presence] in Serum or Plasma" +LNC#29153-4 "Cancer Ag 15-3 [Units/volume] in Body fluid" +LNC#50776-4 "Cancer Ag 15-3 [Units/volume] in Cerebral spinal fluid" +LNC#50777-2 "Cancer Ag 15-3 [Units/volume] in Pericardial fluid" +LNC#50778-0 "Cancer Ag 15-3 [Units/volume] in Peritoneal fluid" +LNC#19186-6 "Cancer Ag 15-3 [Units/volume] in Pleural fluid" +LNC#6875-9 "Cancer Ag 15-3 [Units/volume] in Serum or Plasma" +LNC#83083-6 "Cancer Ag 15-3 [Units/volume] in Serum or Plasma by Immunoassay" +LNC#2009-9 "Cancer Ag 19-9 [Presence] in Serum or Plasma" +LNC#26924-1 "Cancer Ag 19-9 [Units/volume] in Body fluid" +LNC#50779-8 "Cancer Ag 19-9 [Units/volume] in Cerebral spinal fluid" +LNC#50780-6 "Cancer Ag 19-9 [Units/volume] in Pericardial fluid" +LNC#50781-4 "Cancer Ag 19-9 [Units/volume] in Peritoneal fluid" +LNC#19163-5 "Cancer Ag 19-9 [Units/volume] in Pleural fluid" +LNC#24108-3 "Cancer Ag 19-9 [Units/volume] in Serum or Plasma" +LNC#83084-4 "Cancer Ag 19-9 [Units/volume] in Serum or Plasma by Immunoassay" +LNC#2012-3 "Cancer Ag 27-29 [Presence] in Serum or Plasma" +LNC#50782-2 "Cancer Ag 27-29 [Units/volume] in Cerebral spinal fluid" +LNC#19187-4 "Cancer Ag 27-29 [Units/volume] in Pleural fluid" +LNC#17842-6 "Cancer Ag 27-29 [Units/volume] in Serum or Plasma" +LNC#12515-3 "Carcinoembryonic Ag [Mass/volume] in Body fluid" +LNC#2037-0 "Carcinoembryonic Ag [Mass/volume] in Cerebral spinal fluid" +LNC#40621-5 "Carcinoembryonic Ag [Mass/volume] in Pericardial fluid" +LNC#40622-3 "Carcinoembryonic Ag [Mass/volume] in Peritoneal fluid" +LNC#19169-2 "Carcinoembryonic Ag [Mass/volume] in Pleural fluid" +LNC#2038-8 "Carcinoembryonic Ag [Mass/volume] in Semen" +LNC#2039-6 "Carcinoembryonic Ag [Mass/volume] in Serum or Plasma" +LNC#83085-1 "Carcinoembryonic Ag [Mass/volume] in Serum or Plasma by Immunoassay" +LNC#19170-0 "Carcinoembryonic Ag [Moles/volume] in Pleural fluid" +LNC#19167-6 "Carcinoembryonic Ag [Moles/volume] in Serum or Plasma" +LNC#10469-5 "Carcinoembryonic Ag [Presence] in Tissue by Immune stain" +LNC#19168-4 "Carcinoembryonic Ag [Units/volume] in Pleural fluid" +LNC#10560-1 "Carcinoembryonic Ag [Units/volume] in Semen" +LNC#19166-8 "Carcinoembryonic Ag [Units/volume] in Serum or Plasma" +// LNC#85325-9 "Cells.progesterone receptor/100 cells in Breast cancer specimen by Immune stain" +// LNC#14230-7 "Cells.progesterone receptor/100 cells in Tissue by Immune stain" +LNC#2010-7 "Deprecated Cancer Ag 19-9 [Presence] in Serum or Plasma" +LNC#85337-4 "Estrogen receptor Ag [Presence] in Breast cancer specimen by Immune stain" +LNC#40556-3 "Estrogen receptor Ag [Presence] in Tissue by Immune stain" +LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" +LNC#14130-9 "Estrogen receptor [Moles/mass] in Tissue" +LNC#85310-1 "Estrogen receptor fluorescence intensity [Type] in Breast cancer specimen by Immune stain" +LNC#10480-2 "Estrogen+Progesterone receptor Ag [Presence] in Tissue by Immune stain" +LNC#85339-0 "Progesterone receptor Ag [Presence] in Breast cancer specimen by Immune stain" +LNC#40557-1 "Progesterone receptor Ag [Presence] in Tissue by Immune stain" +LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" +LNC#10861-3 "Progesterone receptor [Mass/mass] in Tissue" +LNC#31207-4 "Progesterone receptor [Moles/mass] in Tissue" +LNC#85331-7 "Progesterone receptor fluorescence intensity [Type] in Breast cancer specimen by Immune stain" +LNC#47738-0 "Prostate specific Ag [Mass/volume] in Body fluid" +LNC#59230-3 "Prostate specific Ag [Mass/volume] in Cerebral spinal fluid" +LNC#59223-8 "Prostate specific Ag [Mass/volume] in Peritoneal fluid" +LNC#59221-2 "Prostate specific Ag [Mass/volume] in Pleural fluid" +LNC#19199-9 "Prostate specific Ag [Mass/volume] in Semen" +LNC#2857-1 "Prostate specific Ag [Mass/volume] in Serum or Plasma" +LNC#35741-8 "Prostate specific Ag [Mass/volume] in Serum or Plasma by Detection limit <= 0.01 ng/mL" +LNC#83112-3 "Prostate specific Ag [Mass/volume] in Serum or Plasma by Immunoassay" +LNC#34611-4 "Prostate specific Ag [Mass/volume] in Urine" +LNC#19200-5 "Prostate specific Ag [Moles/volume] in Semen" +LNC#19197-3 "Prostate specific Ag [Moles/volume] in Serum or Plasma" +LNC#10508-0 "Prostate specific Ag [Presence] in Tissue by Immune stain" +LNC#19198-1 "Prostate specific Ag [Units/volume] in Semen" +LNC#19195-7 "Prostate specific Ag [Units/volume] in Serum or Plasma" +// LNC#53764-7 "Prostate specific Ag panel - Serum or Plasma" +// LNC#33667-7 "Prostate specific Ag.protein bound [Mass/volume] in Serum or Plasma" +LNC#15325-4 "Prostate specific Ag/Prostate volume calculated" +LNC#15323-9 "Prostate specific Ag/Prostate volume calculated from height, width and length" +LNC#15324-7 "Prostate specific Ag/Prostate volume calculated from planimetry" \ No newline at end of file From 00f0c4453dc87169f80b195f24edcf7b6f07ef5e Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sun, 9 Dec 2018 13:06:37 -0500 Subject: [PATCH 128/289] Fixed to genetics --- spec/shr_base_finding.txt | 1 - spec/shr_core.txt | 2 +- spec/shr_entity.txt | 7 +-- spec/shr_entity_map_dstu2.txt | 6 +-- spec/shr_entity_map_stu3.txt | 6 +-- spec/shr_genetics.txt | 75 +++++++++++++++++---------------- spec/shr_genetics_map_dstu2.txt | 12 ------ spec/shr_genetics_map_stu3.txt | 13 +++--- spec/shr_genetics_vs.txt | 10 +++++ spec/shr_occupation.txt | 1 - spec/shr_oncologycore.txt | 9 ---- spec/shr_wound.txt | 2 +- 12 files changed, 65 insertions(+), 79 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index c82543e8..df55c9d2 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -106,7 +106,6 @@ For an Observation, the FindingTopicCode describes the aspect or property of the 0..1 Interpretation 0..1 Device 0..1 Specimen -0..* Media // needed in Wound assessment 0..1 PanelMembers Element: Observer diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 12db25a7..ddfa203d 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -690,7 +690,7 @@ Description: "A file that contains audio, video, image, or similar content." Element: PhotographicImage Based on: Media -Concept: LNC#72170-4 +Concept: LNC#72170-4 "Photographic image [Media]" // ContentType from ImageMimeTypeVS if covered Element: Annotation diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index d09c00f2..72f085d3 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -276,7 +276,7 @@ Description: "A person relevant to the health or social situation of the subject 0..1 DateOfBirth 1..1 AdministrativeGender 0..* Address -0..* Photo +0..* PhotographicImage 0..* ContactPoint 0..* LanguageUsed 0..1 ActiveFlag @@ -435,11 +435,6 @@ Description: "A person relevant to the health or social situation of the subject Concept: MTH#C1550327 Description: "A gender classification used for administrative purposes. Administrative gender is not necessarily the same as a biological description or a gender identity. This attribute does not include terms related to clinical gender." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/administrative-gender - - Element: Photo - Concept: TBD - Description: "A photograph showing a person's face." - Value: Media Element: LanguageUsed // needs to be aligned with CCDA 2.1 Concept: TBD diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index bed0b7c7..bdc663a4 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -6,7 +6,7 @@ Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient Person.ActiveFlag maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender - Person.Photo maps to photo + Person.PhotographicImage maps to photo Person.Address maps to address Person.ContactPoint maps to telecom Person.LanguageUsed.Language maps to communication @@ -27,7 +27,7 @@ Practitioner maps to Practitioner: // dstu 2 change (different mapping target) Person.ActiveFlag maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender - Person.Photo maps to photo + Person.PhotographicImage maps to photo Person.Address maps to address Person.ContactPoint maps to telecom Person.LanguageUsed.Language maps to communication @@ -43,7 +43,7 @@ RelatedPerson maps to RelatedPerson: Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender Person.Address maps to address - Person.Photo maps to photo + Person.PhotographicImage maps to photo Person.ContactPoint maps to telecom RelationshipToPersonOfRecord maps to relationship EffectiveTimePeriod maps to period diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index dec0ede4..7580e89c 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -6,7 +6,7 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: Person.ActiveFlag maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender - Person.Photo maps to photo + Person.PhotographicImage maps to photo Person.Address maps to address Person.ContactPoint maps to telecom Person.LanguageUsed.Language maps to communication @@ -27,7 +27,7 @@ Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-pra Person.ActiveFlag maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender - Person.Photo maps to photo + Person.PhotographicImage maps to photo Person.Address maps to address Person.ContactPoint maps to telecom Person.LanguageUsed.Language maps to communication @@ -43,7 +43,7 @@ RelatedPerson maps to RelatedPerson: Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender Person.Address maps to address - Person.Photo maps to photo + Person.PhotographicImage maps to photo Person.ContactPoint maps to telecom RelationshipToPersonOfRecord maps to relationship EffectiveTimePeriod maps to period diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index e0bf43e6..2833efa9 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -13,59 +13,62 @@ CodeSystem: UCUM = http://unitsofmeasure.org * Markers can apply to multiple cancer types, and potentially other non-cancer diseases. * Must model this in a way that constrains biomarkers by cancer type in each value set. */ -EntryElement: GeneticMarker -Based on: Observation -Concept: MTH#C0017393 -Description: "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Thesaurus)" +EntryElement: GeneticVariantTestResult +Based on: LaboratoryObservation +Concept: MTH#C0017393 // should be a finding (Q+A), not an observable +Description: "A finding with respect to variation in a segment of DNA with an identifiable physical location on a chromosome." FindingTopicCode is MTH#C0017393 "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Metathesaurus)" - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) - Interpretation from PositiveNegativeEquivocalVS // this might not be true for all markers. -0..0 Media +0..0 FindingResult // panel, no numerical or coded result + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) // maybe. More likely just the specimen +// What gene are we looking at? +0..1 GenomicSourceClass +0..1 GeneName +0..1 DNARegionName +// Results, interpretation + Interpretation from PositiveNegativeEquivocalVS // this might not be appropriate for all markers. Could this be the clinical significance? +0..1 DNASequenceVariantName +0..1 DNASequenceVariantId +0..1 DNASequenceVariantType 0..0 AnatomicalLocation -0..1 CommentOrDescription - NonIndependentFinding -includes 0..1 Gene // aligning property names with the FHIR Cancer Genomics IG -includes 0..1 GenomicSourceClass -includes 0..1 DNARegionName -includes 0..1 DNASequenceVariantId -includes 0..1 DNASequenceVariantName 0..0 PanelMembers.Observation -Element: Gene -Concept: LNC#48018-6 "Gene studied [ID]" -Based on: CodedNonIndependentFinding -Description: "HUGO Gene Nomenclature Committee (HGNC) identifier for a gene. (source: LOINC)" - FindingTopicCode is LNC#48018-6 "Gene studied [ID]" - FindingResult from http://www.genenames.org - // interpretation LOINC preferred answer list LL378-1 for LNC#48018-6. - Element: GenomicSourceClass Concept: LNC#48002-0 "Genomic source class [Type]" -Based on: CodedNonIndependentFinding Description: "The genomic class of the specimen being analyzed: Germline for inherited genome, somatic for cancer genome, and prenatal for fetal genome. (source: LOINC)" - FindingTopicCode is LNC#48002-0 "Genomic source class [Type]" - FindingResult from GenomicSourceClassVS // LOINC preferred answer list for LNC#48002-0. +Value: CodeableConcept from GenomicSourceClassVS // LOINC preferred answer list for LNC#48002-0. + +Element: GeneName +Concept: LNC#48018-6 "Gene studied [ID]" +Description: "HUGO Gene Nomenclature Committee (HGNC) identifier for a gene. (source: LOINC)" +Value: CodeableConcept from http://www.genenames.org + // interpretation LOINC preferred answer list LL378-1 for LNC#48018-6. Element: DNARegionName Concept: LNC#47999-8 "DNA region name [Identifier]" +Description: "A human readable name for the region of interest. Typically Exon #, Intron # or other. NOTE: This is not standardized and is mainly for convenience and display purposes." +Value: string + +Element: DNASequenceVariantName Based on: NonIndependentFinding -Description: "A human readable name for the region of interest. Typically Exon #, Intron # or other. (source: LOINC)" - FindingTopicCode is LNC#47999-8 "DNA region name [Identifier]" - FindingResult value is type string +Concept: LNC#48004-6 "DNA change (c.HGVS)" +Description: "Human Genome Variation Society (HGVS) nomenclature for a single DNA marker. The use of the nomenclature must be extended to describe non-variations (aka. wild types) see samples for wild type examples. (source: LOINC)" + FindingTopicCode is LNC#48004-6 "DNA change (c.HGVS)" + FindingResult value is type string Element: DNASequenceVariantId -Concept: LNC#48003-8 "DNA sequence variation identifier [Identifier]" Based on: NonIndependentFinding +Concept: LNC#48003-8 "DNA sequence variation identifier [Identifier]" Description: "A DNA Marker identifier conveys a universal or standard repository identifier for definitive characterstics of a DNA Marker. (recommend using NCBI dbSNP ids - rs#) (source: LOINC)" FindingTopicCode is LNC#48003-8 "DNA sequence variation identifier [Identifier]" - FindingResult value is type string + FindingResult value is type string + +Element: DNASequenceVariantType +Based on: CodedNonIndependentFinding +Concept: LNC#48005-3 "DNA change type" +Description: "Codified type for associated DNA Marker. DNA Marker's use the HGVS notation which implies the DNA Marker Type, but the concurrent use of this code will allow a standard and explicit type for technical and display convenience." + FindingTopicCode is LNC#48005-3 "DNA change type" + FindingResult from DNAChangeTypeVS -Element: DNASequenceVariantName -Concept: LNC#48004-6 "DNA change (c.HGVS)" -Based on: NonIndependentFinding -Description: "Human Genome Variation Society (HGVS) nomenclature for a single DNA marker. The use of the nomenclature must be extended to describe non-variations (aka. wild types) see samples for wild type examples. (source: LOINC)" - FindingTopicCode is LNC#48004-6 "DNA change (c.HGVS)" - FindingResult value is type string EntryElement: TumorMarker Based on: CodedLaboratoryObservation diff --git a/spec/shr_genetics_map_dstu2.txt b/spec/shr_genetics_map_dstu2.txt index 01a8fa37..85db91bd 100644 --- a/spec/shr_genetics_map_dstu2.txt +++ b/spec/shr_genetics_map_dstu2.txt @@ -1,15 +1,3 @@ Grammar: Map 5.1 Namespace: oncocore Target: FHIR_DSTU_2 - -GeneticMarker maps to http://hl7.org/fhir/StructureDefinition/genetics: - Patient maps to subject - Category maps to category - CommentOrDescription maps to comments - -Gene maps to http://hl7.org/fhir/StructureDefinition/geneticsGene: - // FindingResult maps to extension.valueCodeableConcept (slice at = extension; slice # = 15) - FindingResult maps to value[x] - -// GenomicSourceClass maps to http://hl7.org/fhir/StructureDefinition/geneticsGenomicSourceClass: -// FindingResult maps to valueCodeableConcept \ No newline at end of file diff --git a/spec/shr_genetics_map_stu3.txt b/spec/shr_genetics_map_stu3.txt index 2bb9443e..f4bb9180 100644 --- a/spec/shr_genetics_map_stu3.txt +++ b/spec/shr_genetics_map_stu3.txt @@ -2,10 +2,11 @@ Grammar: Map 5.1 Namespace: oncocore Target: FHIR_STU_3 -GeneticMarker maps to http://hl7.org/fhir/StructureDefinition/genetics: - Patient maps to subject - Category maps to category -Gene maps to http://hl7.org/fhir/StructureDefinition/geneticsGene: - // FindingResult maps to extension.valueCodeableConcept (slice at = extension; slice # = 15) - FindingResult maps to value[x] \ No newline at end of file +GeneticVariantTestResult maps to http://hl7.org/fhir/StructureDefinition/observation-genetics: + GenomicSourceClass maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsGenomicSourceClass + GeneName maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsGene + DNARegionName maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsDNARegionName + DNASequenceVariantName maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsDNASequenceVariantName + DNASequenceVariantId maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsDNAVariantId + DNASequenceVariantType maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsDNASequenceVariantType diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index 3f2c473f..7156ebc1 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -26,6 +26,16 @@ LNC#LA18196-8 "Likely fetal" LNC#LA18197-6 "Unknown genomic origin" LNC#LA26807-0 "De novo" +ValueSet: DNAChangeTypeVS +Description: "Codified type for associated DNA Marker. DNA Marker's use the HGVS notation which implies the DNA Marker Type, but the concurrent use of this code will allow a standard and explicit type for technical and display convenience. Corresponds to LOINC preferred answer list LL379-9." +LNC#LA9658-1 "WildType" +LNC#LA6692-3 "Deletion" +LNC#LA6686-5 "Duplication" +LNC#LA6687-3 "Insertion" +LNC#LA6688-1 "Insertion/Deletion" +LNC#LA6689-9 "Inversion" +LNC#LA6690-7 "Substitution" + ValueSet: TumorMarkerVS Description: "A tumor marker is a substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. This value set of LOINC codes will include a comprehensive list of tumor markers across all cancers, and regardless of method or specimen type. Subsets specific to a cancer type will be created as needed." // as a prototype, only a couple of examples of tumor markers will be included in this list. diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 904fcf7a..33d4cf84 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -215,7 +215,6 @@ Description: "A simplified observation for social histories." 0..0 PanelMembers 0..0 Device 0..0 Specimen -0..0 Media 0..0 ExceptionValue 0..0 Interpretation 0..0 Encounter diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index d4b8e208..35314fbc 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -68,7 +68,6 @@ Concept: SCT#258232002 "Cancer staging (tumor staging)" 0..0 ExceptionValue 0..0 DeltaFlag 0..0 ReferenceRange - 0..0 Media 0..0 AnatomicalLocation 0..0 Specimen 0..0 Device @@ -128,7 +127,6 @@ Description: "Detailed site-specific codes for the clinical tumor (T) as defi SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange 0..0 DeltaFlag -0..0 Media 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered @@ -145,7 +143,6 @@ Description: "" //TODO: pull from LOINC SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange 0..0 DeltaFlag -0..0 Media 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered @@ -162,7 +159,6 @@ Description: "" //TODO: pull from LOINC FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" 0..0 ReferenceRange 0..0 DeltaFlag -0..0 Media 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered SpecificFocusOfFinding value is type ref(CancerDisorderPresent) @@ -178,7 +174,6 @@ Description: "" //TODO: pull from LOINC FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" 0..0 ReferenceRange 0..0 DeltaFlag -0..0 Media 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered @@ -196,7 +191,6 @@ Description: "" //TODO: pull from LOINC SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange 0..0 DeltaFlag -0..0 Media 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered @@ -214,7 +208,6 @@ Description: "" //TODO: pull from LOINC SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange 0..0 DeltaFlag -0..0 Media 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered @@ -258,7 +251,6 @@ Concept: LNC#89247-1 "ECOG Performance Status score" FindingResult value is type IntegerQuantity //0..0 ReferenceRange // set to 0 to 5 0..0 SpecificFocusOfFinding -0..0 Media 0..0 AnatomicalLocation 0..0 Device Interpretation from http://loinc.org/vs/LL529-9 @@ -269,7 +261,6 @@ Description: "The Karnofsky Performance Status (KPS) is a tool used to measure a Concept: LNC#89243-0 "Karnofsky Performance Status panel" FindingResult value is type IntegerQuantity 0..0 SpecificFocusOfFinding -0..0 Media 0..0 AnatomicalLocation 0..0 Device // ReferenceRange.Range.LowerBound.Quantity.Number is 0.0 diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 599f6ef4..ddf251e5 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -123,7 +123,7 @@ Description: "Group of observations regarding the properties and severity of a w 0..0 Device FindingTopicCode is LNC#39135-9 0..0 ReferenceRange - Media is type PhotographicImage // 72170-4 Photographic image [Media] +0..* Media is type PhotographicImage // 72170-4 Photographic image [Media] NonIndependentFinding includes 0..1 WoundEpisode // very similar to Episodicity or ClinicalStatus, but value set is different. includes 0..1 WoundTrend From 7addecf0eda1a7703ef1fe78c052204c5a87735d Mon Sep 17 00:00:00 2001 From: May Terry Date: Sun, 9 Dec 2018 22:04:02 -0500 Subject: [PATCH 129/289] added PD-L1 and B2M to TumorMarkerVS --- spec/shr_genetics_vs.txt | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index c899d37d..31357c36 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -27,7 +27,7 @@ LNC#LA18197-6 "Unknown genomic origin" LNC#LA26807-0 "De novo" ValueSet: TumorMarkerVS -Description: "A tumor marker is a substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. This value set of LOINC codes will include a comprehensive list of tumor markers across all cancers, and regardless of method or specimen type. Subsets specific to a cancer type will be created as needed." +Description: "A tumor marker is a substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. This value set of LOINC codes will include a comprehensive list of tumor markers across all cancers, and regardless of method or specimen type. Subsets specific to a cancer type will be created as needed. Sources vary but include https://labtestsonline.org/tests/tumor-markers." // as a prototype, only a couple of examples of tumor markers will be included in this list. // An automated script which imports tumor markers from LOINC (similar to the way eCQMs are bulk imported) // can easily be created. @@ -75,6 +75,34 @@ LNC#48802-3 "Alpha-1-Fetoprotein panel - Serum or Plasma" LNC#53962-7 "Alpha-1-fetoprotein.tumor marker [Mass/volume] in Serum or Plasma" LNC#53960-1 "Alpha-1-fetoprotein.tumor marker [Moles/volume] in Serum or Plasma" LNC#53961-9 "Alpha-1-fetoprotein.tumor marker [Units/volume] in Serum or Plasma" +LNC#10873-8 "Beta-2-Microglobulin [Mass/time] in 24 hour Urine" +LNC#54356-1 "Beta-2-Microglobulin [Mass/volume] in 24 hour Urine" +LNC#48166-3 "Beta-2-Microglobulin [Mass/volume] in Body fluid" +LNC#1951-3 "Beta-2-Microglobulin [Mass/volume] in Cerebral spinal fluid" +LNC#49081-3 "Beta-2-Microglobulin [Mass/volume] in Dialysis fluid" +LNC#88711-7 "Beta-2-Microglobulin [Mass/volume] in Peritoneal dialysis fluid" +LNC#59217-0 "Beta-2-Microglobulin [Mass/volume] in Peritoneal fluid" +LNC#59218-8 "Beta-2-Microglobulin [Mass/volume] in Pleural fluid" +LNC#1952-1 "Beta-2-Microglobulin [Mass/volume] in Serum or Plasma" +LNC#87708-4 "Beta-2-Microglobulin [Mass/volume] in Serum or Plasma --post dialysis" +LNC#83078-6 "Beta-2-Microglobulin [Mass/volume] in Serum or Plasma by Immunoassay" +LNC#1953-9 "Beta-2-Microglobulin [Mass/volume] in Urine" +LNC#83077-8 "Beta-2-Microglobulin [Mass/volume] in Urine by Immunoassay" +LNC#56662-0 "Beta-2-Microglobulin [Moles/time] in 24 hour Urine" +LNC#50824-2 "Beta-2-Microglobulin [Moles/volume] in 24 hour Urine" +LNC#39458-5 "Beta-2-Microglobulin [Moles/volume] in Body fluid" +LNC#32301-4 "Beta-2-Microglobulin [Moles/volume] in Cerebral spinal fluid" +LNC#14626-6 "Beta-2-Microglobulin [Moles/volume] in Serum" +LNC#76484-5 "Beta-2-Microglobulin [Moles/volume] in Serum or Plasma" +LNC#32302-2 "Beta-2-Microglobulin [Moles/volume] in Urine" +LNC#43919-0 "Beta-2-Microglobulin [Presence] in Cerebral spinal fluid" +LNC#43818-4 "Beta-2-Microglobulin [Presence] in Serum" +LNC#43819-2 "Beta-2-Microglobulin [Presence] in Urine" +LNC#83076-0 "Beta-2-Microglobulin [Units/volume] in Serum or Plasma by Immunoassay" +LNC#83079-4 "Beta-2-Microglobulin [Units/volume] in Urine by Immunoassay" +LNC#10467-9 "Beta-2-Microglobulin amyloid Ag [Presence] in Tissue by Immune stain" +LNC#54355-3 "Beta-2-Microglobulin in CSF/Beta-2-Microglobulin in serum" +LNC#56786-7 "Beta-2-Microglobulin.tumor marker [Mass/volume] in Serum" LNC#2006-5 "Cancer Ag 125 [Presence] in Serum or Plasma" LNC#48677-9 "Cancer Ag 125 [Presence] in Tissue by Immune stain" LNC#11210-2 "Cancer Ag 125 [Units/volume] in Body fluid" @@ -130,6 +158,14 @@ LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" LNC#14130-9 "Estrogen receptor [Moles/mass] in Tissue" LNC#85310-1 "Estrogen receptor fluorescence intensity [Type] in Breast cancer specimen by Immune stain" LNC#10480-2 "Estrogen+Progesterone receptor Ag [Presence] in Tissue by Immune stain" +LNC#83054-7 "PD-L1 by clone 22C3 [Interpretation] in Tissue by Immune stain Narrative" +LNC#83052-1 "PD-L1 by clone 22C3 [Presence] in Tissue by Immune stain" +LNC#85147-7 "PD-L1 by clone 22C3 in Tissue by Immune stain Report" +LNC#83056-2 "PD-L1 by clone 28-8 [Interpretation] in Tissue by Immune stain Narrative" +LNC#83055-4 "PD-L1 by clone 28-8 [Presence] in Tissue by Immune stain" +LNC#85148-5 "PD-L1 by clone 28-8 in Tissue by Immune stain Report" +LNC#83057-0 "PD-L1 by clone SP142 [Presence] in Tissue by Immune stain" +LNC#85149-3 "PD-L1 by clone SP142 in Tissue by Immune stain Report" LNC#85339-0 "Progesterone receptor Ag [Presence] in Breast cancer specimen by Immune stain" LNC#40557-1 "Progesterone receptor Ag [Presence] in Tissue by Immune stain" LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" From d20384155e5e23ee4eec03605e65ba4161371039 Mon Sep 17 00:00:00 2001 From: May Terry Date: Mon, 10 Dec 2018 17:22:00 -0500 Subject: [PATCH 130/289] Added GeneticTestPerformed element + GTR ID reference. --- spec/shr_genetics.txt | 28 ++++++++++++++++++---------- spec/shr_genetics_map_dstu2.txt | 2 +- spec/shr_genetics_vs.txt | 5 +++++ 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index cfa03b28..3dfd9a36 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -1,24 +1,38 @@ Grammar: DataElement 5.0 Namespace: oncocore Description: "Genetics." -Uses: shr.core, shr.base, shr.entity +Uses: shr.core, shr.base, shr.entity, shr.procedure CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: UCUM = http://unitsofmeasure.org + +/* + * Diagnostic Test Procedure + */ +EntryElement: GeneticTestPerformed +Based on: ProcedurePerformed +Concept: SCT#405824009 "Genetic test (procedure)" +Description: "Genetic testing is a type of medical test that identifies changes in chromosomes, genes, or proteins. (source: National Institute of Health Genetics Home Reference)" + ProcedureCode from https://www.ncbi.nlm.nih.gov/gtr if covered // the GTR Identifier here, assigned to the test order. + Method from GeneticTestMethodVS +0..0 OutputFinding +0..1 GeneticMarker + /* **** Modeling individual biomarkers does not scale. * Markers can apply to multiple cancer types, and potentially other non-cancer diseases. * Must model this in a way that constrains biomarkers by cancer type in each value set. */ + EntryElement: GeneticMarker Based on: Observation Concept: MTH#C0017393 Description: "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Thesaurus)" FindingTopicCode is MTH#C0017393 "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Metathesaurus)" - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) + SpecificFocusOfFinding value is type ref(ConditionPresentAssertion) Interpretation from PositiveNegativeEquivocalVS // this might not be true for all markers. 0..0 Media 0..0 AnatomicalLocation @@ -72,17 +86,11 @@ Based on: CodedLaboratoryObservation Concept: LNC#21924-6 "Tumor marker Cancer" Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Diectionary). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." FindingTopicCode from TumorMarkerVS // should we put TumorMarkerVS with the list of all possible tumor markers? + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) // FindingResult // the result is the name of the tumor marker. 0..0 NonIndependentFinding // PanelMembers.Observation // each cancer type can further narrow the value set of tumor markers as needed. -/* -Element: TumorMarkerName -Concept: LNC#TBD "TBD" -Based on: CodedNonIndependentFinding -Description: "TBD (source: LOINC)" - FindingTopicCode is LNC#TBD - FindingResult from TBD -*/ + // *** MLT: Example DCMs for an individual marker. We don't want to model each marker because that doesn't scale. /* diff --git a/spec/shr_genetics_map_dstu2.txt b/spec/shr_genetics_map_dstu2.txt index 01a8fa37..f76aed3c 100644 --- a/spec/shr_genetics_map_dstu2.txt +++ b/spec/shr_genetics_map_dstu2.txt @@ -12,4 +12,4 @@ Gene maps to http://hl7.org/fhir/StructureDefinition/geneticsGene: FindingResult maps to value[x] // GenomicSourceClass maps to http://hl7.org/fhir/StructureDefinition/geneticsGenomicSourceClass: -// FindingResult maps to valueCodeableConcept \ No newline at end of file +// FindingResult maps to extension.valueCodeableConcept diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index 31357c36..4f7384a2 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -5,6 +5,10 @@ CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org CodeSystem: HGNC = http://www.genenames.org +ValueSet: GeneticTestMethodVS +Description: "The method used to perform the genetic test. Examples include Fluorescent in situ hybridization (FISH), polymerase chain reaction-based assays (PCR), Sanger sequencing, and next-generation sequencing (NGS)." + + ValueSet: ProteinExpressionVS Description: "Interpretations of protein or gene expression as high, low, and no expression. Answer set taken from LOINC LL4167-4." LNC#LA26821-1 "No expression." @@ -166,6 +170,7 @@ LNC#83055-4 "PD-L1 by clone 28-8 [Presence] in Tissue by Immune stain" LNC#85148-5 "PD-L1 by clone 28-8 in Tissue by Immune stain Report" LNC#83057-0 "PD-L1 by clone SP142 [Presence] in Tissue by Immune stain" LNC#85149-3 "PD-L1 by clone SP142 in Tissue by Immune stain Report" +LNC#83053-9 "Cells.programmed cell death ligand 1/100 viable tumor cells in Tissue by Immune stain. (source: LOINC)" LNC#85339-0 "Progesterone receptor Ag [Presence] in Breast cancer specimen by Immune stain" LNC#40557-1 "Progesterone receptor Ag [Presence] in Tissue by Immune stain" LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" From d59365af03095f3f36ed596509f297a7769a633d Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 10 Dec 2018 18:10:58 -0500 Subject: [PATCH 131/289] A bunch of changes to promote accurate mapping --- spec/ig-breast-config.json | 6 ++-- spec/ig-odh-config.json | 9 +++--- spec/ig-oncocore-config.json | 6 ++-- spec/ig-shr-config.json | 6 ++-- spec/ig-wound-config.json | 9 +++--- spec/shr_allergy.txt | 2 +- spec/shr_allergy_map_dstu2.txt | 4 +-- spec/shr_allergy_map_stu3.txt | 2 +- spec/shr_base.txt | 52 +++++++++++++------------------ spec/shr_base_action.txt | 15 ++++++--- spec/shr_base_finding.txt | 41 +++++++++++------------- spec/shr_base_map_dstu2.txt | 13 ++++---- spec/shr_base_map_stu3.txt | 11 +++---- spec/shr_brca.txt | 20 ++---------- spec/shr_core.txt | 2 +- spec/shr_core_map_dstu2.txt | 2 +- spec/shr_core_map_stu3.txt | 2 +- spec/shr_encounter_map_dstu2.txt | 1 - spec/shr_encounter_map_stu3.txt | 1 - spec/shr_entity.txt | 10 ++---- spec/shr_entity_map_dstu2.txt | 2 -- spec/shr_entity_map_stu3.txt | 2 -- spec/shr_familyhistory.txt | 1 - spec/shr_genetics.txt | 9 +++--- spec/shr_genetics_map_dstu2.txt | 18 +++++++++++ spec/shr_intervention.txt | 2 -- spec/shr_medication.txt | 11 ++----- spec/shr_medication_map_dstu2.txt | 3 +- spec/shr_medication_map_stu3.txt | 4 +-- spec/shr_occupation.txt | 2 +- spec/shr_oncologycore.txt | 44 +++++--------------------- spec/shr_procedure.txt | 13 ++++---- spec/shr_procedure_map_dstu2.txt | 9 +++--- spec/shr_procedure_map_stu3.txt | 4 +-- spec/shr_tumor.txt | 1 - spec/shr_wound.txt | 1 - 36 files changed, 141 insertions(+), 199 deletions(-) diff --git a/spec/ig-breast-config.json b/spec/ig-breast-config.json index 7082c6af..2549f4f1 100644 --- a/spec/ig-breast-config.json +++ b/spec/ig-breast-config.json @@ -1,9 +1,9 @@ { "projectName": "HL7 FHIR Implementation Guide: Breast Cancer Data, Release 1 - US Realm (Draft for Comment 2)", "projectShorthand": "BC", - "projectURL": "http://hl7.org/fhir/us/breastcancer/", - "fhirURL": "http://hl7.org/fhir/us/breastcancer/", - "entryTypeURL": "http://hl7.org/fhir/us/breastcancer/spec/", + "projectURL": "http://hl7.org/fhir/us/projectURL/", + "fhirURL": "http://hl7.org/fhir/us/fhirURL/", + "entryTypeURL": "http://hl7.org/fhir/us/entryTypeURL/spec", "fhirTarget": "FHIR_STU_3", "implementationGuide": { diff --git a/spec/ig-odh-config.json b/spec/ig-odh-config.json index bfc12f47..8d859a19 100644 --- a/spec/ig-odh-config.json +++ b/spec/ig-odh-config.json @@ -1,9 +1,9 @@ { "projectName": "HL7 FHIR Profile: Occupational Data for Health (ODH), Release 1 (Standard for Trial Use)", "projectShorthand": "ODH", - "projectURL": "http://hl7.org/fhir/us/odh", - "fhirURL": "http://hl7.org/fhir/us/odh", - "entryTypeURL": "http://hl7.org/fhir/us/odh/spec", + "projectURL": "http://hl7.org/fhir/us/projectURL/", + "fhirURL": "http://hl7.org/fhir/us/fhirURL/", + "entryTypeURL": "http://hl7.org/fhir/us/entryTypeURL/spec", "fhirTarget": "FHIR_STU_3", "implementationGuide": { @@ -11,7 +11,8 @@ "version": "1.0.0", "includeLogicalModels": true, "includeModelDoc": false, - "indexContent": "LandingPageOccupation.html", + "indexContent": "LandingPageOccupation.html", + "historyLink": "http://hl7.org/fhir/us/odh/history.html", "primarySelectionStrategy": { "strategy": "namespace", diff --git a/spec/ig-oncocore-config.json b/spec/ig-oncocore-config.json index e209cea9..d0836daf 100644 --- a/spec/ig-oncocore-config.json +++ b/spec/ig-oncocore-config.json @@ -1,9 +1,9 @@ { "projectName": "HL7 FHIR Implementation Guide: Core Oncology Data Elements, Release 1 - US Realm (Draft for Comment 1)", "projectShorthand": "oncocore", - "projectURL": "http://hl7.org/fhir/us/oncocore/", - "fhirURL": "http://hl7.org/fhir/us/oncocore/", - "entryTypeURL": "http://hl7.org/fhir/us/oncocore/spec/", + "projectURL": "http://hl7.org/fhir/us/projectURL/", + "fhirURL": "http://hl7.org/fhir/us/fhirURL/", + "entryTypeURL": "http://hl7.org/fhir/us/entryTypeURL/spec/", "fhirTarget": "FHIR_DSTU_2", "implementationGuide": { diff --git a/spec/ig-shr-config.json b/spec/ig-shr-config.json index edb34c3d..ae16aba0 100644 --- a/spec/ig-shr-config.json +++ b/spec/ig-shr-config.json @@ -1,9 +1,9 @@ { "projectName": "Standard Health Record", "projectShorthand": "SHR", - "projectURL": "http://standardhealthrecord.org", - "fhirURL": "http://standardhealthrecord.org/fhir", - "entryTypeURL": "http://standardhealthrecord.org/spec/", + "projectURL": "http://hl7.org/fhir/us/projectURL/", + "fhirURL": "http://hl7.org/fhir/us/fhirURL/", + "entryTypeURL": "http://hl7.org/fhir/us/entryTypeURL/spec", "fhirTarget": "FHIR_DSTU_2", "implementationGuide": { diff --git a/spec/ig-wound-config.json b/spec/ig-wound-config.json index 8a2e7248..de37c11a 100644 --- a/spec/ig-wound-config.json +++ b/spec/ig-wound-config.json @@ -1,9 +1,9 @@ { "projectName": "HL7 FHIR Profile: Skin and Wound Assessment, Release 1 (For Comment)", "projectShorthand": "SW", - "projectURL": "http://hl7.org/fhir/us/sw", - "fhirURL": "http://hl7.org/fhir/us/sw", - "entryTypeURL": "http://hl7.org/fhir/us/sw/spec", + "projectURL": "http://hl7.org/fhir/us/projectURL/", + "fhirURL": "http://hl7.org/fhir/us/fhirURL/", + "entryTypeURL": "http://hl7.org/fhir/us/entryTypeURL/spec", "fhirTarget": "FHIR_STU_3", "provinenceInfo": { "leadAuthor": { @@ -38,7 +38,8 @@ "version": "1.0.0", "includeLogicalModels": true, "includeModelDoc": true, - "indexContent": "LandingPageWound.html", + "indexContent": "LandingPageWound.html", + "historyLink": "http://hl7.org/fhir/us/sw/history.html", "primarySelectionStrategy": { "strategy": "namespace", diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index b694fbcd..114d0e53 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -12,7 +12,7 @@ Based on: Finding Concept: SCT#473010000 "Hypersensitivity condition (disorder)" // or SCT#420134006 "Propensity to adverse reactions (disorder)"? Description: "A finding related to the presence of an individual's risk or sensitivity to a substance or class of substances. An AllergyIntolerancePresent finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time. Per US Core specification, the result includes SNOMED codes representing 'No known allergy'. In AllergyIntolerance, the reactions are included in-line, rather than referencing to conditions (in notable contrast to AdverseEvent)." - Metadata.OriginatorOrSource value is type PatientOrPractitionerOrRelatedPerson + Metadata.InformationSource value is type PatientOrPractitionerOrRelatedPerson Metadata.InformationRecorder value is type PatientOrPractitioner // FHIR only allows Patient or Practitioner as recorder 1..1 Patient diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index d3196126..3f1b3ac2 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -5,7 +5,7 @@ Target: FHIR_DSTU_2 AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: Patient maps to patient - Metadata.OriginatorOrSource maps to asserter + Metadata.InformationSource maps to asserter Metadata.InformationRecorder maps to recorder Metadata.AuthoredDateTime maps to assertedDate FindingResult maps to substance @@ -30,7 +30,7 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a /* NoAdverseSensitivityToSubstance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: Patient maps to patient - Metadata.OriginatorOrSource maps to asserter + Metadata.InformationSource maps to asserter Metadata.InformationRecorder maps to recorder Metadata.AuthoredDateTime maps to assertedDate AdverseSensitivityTopic.TopicCode maps to code diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index 75651307..27223a67 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: Patient maps to patient Patient maps to patient - Metadata.OriginatorOrSource maps to asserter + Metadata.InformationSource maps to asserter Metadata.InformationRecorder maps to recorder Metadata.AuthoredDateTime maps to assertedDate FindingResult maps to code diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 0eba2d0f..347580d8 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -24,7 +24,7 @@ Description: "Obsolete. Use InformationItem" Abstract Element: InformationItem Concept: MTH#C1705654 Description: "Parent class for any item in clinical or administrative health-related system. Contains metadata attributes that apply to any item represented in the standard health record. An InformationItem can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." -1..1 EntryId +0..1 EntryId 0..1 Narrative 0..1 Language 0..1 Metadata @@ -55,14 +55,14 @@ Element: Metadata Concept: TBD Description: "Elements that belong to all information items." 0..1 VersionId -1..1 EntryType // would EntryConformance be clearer? -0..1 RecordStatus +0..1 LastUpdated +0..* EntryType // would EntryConformance be clearer? 0..* SecurityLabel 0..* Tag -0..1 OriginatorOrSource +//0..1 RecordStatus +0..1 InformationSource 0..1 InformationRecorder 0..1 AuthoredDateTime -1..1 LastUpdated Element: EntryType // Would EntryClass be clearer? Concept: TBD @@ -70,7 +70,7 @@ Description: "Elements that belong to all information items." Value: uri Element: RecordStatus - Description: "Concept indicating the state of this record, e.g., 'entered in error'." + Description: "Concept indicating the state of this record, e.g., entered in error." Value: CodeableConcept Element: SecurityLabel @@ -83,46 +83,46 @@ Description: "Elements that belong to all information items." Description: "A code used to relate entries to categories or workflows. Applications are not required to consider the tags when interpreting the meaning of an entry." Value: CodeableConcept - Element: OriginatorOrSource + Element: InformationSource Concept: TBD Description: "The origin or source of the information or request: a practitioner, patient, related person, organization, another health record, an algorithm, device, etc." - Value: Attribution + Value: Participant // TODO: might have to change to Participation Element: InformationRecorder Concept: TBD Description: "The recorder of the information, if other than the information originator. For example, the nurse taking a list of medications reported by the patient." - Value: Attribution + Value: Participant // TODO: might have to change to Participation - Element: Attribution - Description: "Information ascribing the record to a particular contributor or responsible person." - Value: ref(EntityOrRole) + Element: Participant + Concept: MTH#C1550369 + Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." + Value: ref(EntityOrRole) Element: PatientOrPractitioner - Based on: Attribution + Based on: Participant Description: "A choice of Patient or Practitioner. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) Element: PatientOrPractitionerOrRelatedPerson - Based on: Attribution + Based on: Participant Description: "A choice of Patient, Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping AdverseEvent.SignedBy to FHIR AdverseEvent." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) Element: PractitionerOrRelatedPerson - Based on: Attribution + Based on: Participant Description: "A choice of Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping EncounterPerformed.Participant to FHIR Encounter.participant.individual" Value: ref(Practitioner) or ref(RelatedPerson) Element: PersonOrOrganization - Based on: Attribution + Based on: Participant Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Organization) Element: PersonOrDevice - Based on: Attribution + Based on: Participant Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Device) - Element: AuthoredDateTime Concept: TBD Description: "The time the information was recorded; usually, when the information item was created." @@ -167,25 +167,15 @@ Description: "A composition represents a set of Entries sharing common provenanc Element: SignedBy Description: "Provenance information specific to the signing of the clinical statement." - Value: Attribution + Value: Participant Element: CosignedBy Description: "Provenance information specific to the cosigning of the clinical statement." - Value: Attribution + Value: Participant Element: VerifiedBy Description: "Provenance information specific to the verification process associated with this statement (e.g., verifier, when verified, etc.)" - Value: Attribution - - Element: Attribution - Description: "Information ascribing the record to a particular contributor or responsible person." - 1..1 EntityOrRole // TODO: change to Participant - 0..1 RecordedOn - 0..1 Signature - - Element: RecordedOn - Description: "The time of the attribution action." - Value: instant + Value: Participant */ diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 94b35b2e..b28b093c 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -37,11 +37,6 @@ Description: "Abstract class representing performance of any type of action." 0..1 ParticipationType // role 0..1 ParticipationPeriod 0..1 OnBehalfOf - - Element: Participant - Concept: MTH#C1550369 - Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." - Value: ref(EntityOrRole) Element: ParticipationType Concept: MTH#C1553854 @@ -80,6 +75,7 @@ Abstract Element: ActionRequested Based on: ActionStatement Description: "Abstract class representing a request for any type of action." 1..1 Status //should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) +0..1 Requester 1..1 RequestIntent 0..1 ExpectedPerformanceTime 0..1 ExpectedPerformerType @@ -90,6 +86,11 @@ Description: "Abstract class representing a request for any type of action." 0..1 PatientInstructions 0..1 CommunicationMethod + Element: Requester + Based on: Participant + Concept: TBD + Description: "The actor making this request." + Element: RequestIntent Concept: TBD Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." @@ -130,6 +131,10 @@ Description: "Abstract class representing a request for any type of action." Description: "This is the method the provider used to communicate. Examples include: Written, Telephoned, Verbal, Electronically Entered, Policy, Service Correction, Duplicate, etc. 'Code indicating the origin of the prescription.' - NCPDP Telecommunication (Field 419-DJ, Data Dictionary 201104). Possible values include: Written; Telephone; Electronic; Facsimile; Pharmacy; Not Known." Value: CodeableConcept + Element: PractitionerOrDevice + Based on: Requester + Description: "A choice of Practitioner or Device. Needed for mapping to FHIR." + Value: ref(Practitioner) or ref(Device) Abstract Element: ActionNotPerformed Based on: ActionStatement diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index df55c9d2..08d83574 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -93,13 +93,11 @@ Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments. For an Observation, the FindingTopicCode describes the aspect or property of the subject being observed or measured. The FindingTopicCode is the 'question code' that pairs to the 'answer' contained in the Value." -//0..0 Observer 0..1 FindingMethod 0..1 RelevantTime 0..* NonIndependentFinding -// FindingStatus value is type code FindingStatus from http://hl7.org/fhir/ValueSet/observation-status -0..1 DeltaFlag +//0..1 DeltaFlag 0..1 Category from http://hl7.org/fhir/ValueSet/observation-category if covered // MK Category cardinality from 0..* to 0..1 to be compatible with DSTU 2 0..1 AnatomicalLocation 0..1 CommentOrDescription @@ -187,12 +185,6 @@ Description: "A coded finding based on a specimen collected from a patient." 1..1 Specimen 0..0 AnatomicalLocation // Location is determined indirectly from Specimen.CollectionSite Category is OBSCAT#laboratory -0..* DiagnosticService - - Element: DiagnosticService - Concept: TBD - Description: "The service completing the observations, e.g. biochemistry, microbiology, blood bank." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/diagnostic-service-sections if covered EntryElement: CodedLaboratoryObservation Based on: LaboratoryObservation @@ -219,12 +211,11 @@ Based on: Finding Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place. For assertions, the FindingTopicCode represents the thing asserted to be present or absent; i.e., the type of condition, event, relationship or phenomenon that is being asserted to exist or not exist." FindingTopicCode is type ConditionOrDiagnosisCode - FindingResult value is type CodeableConcept - FindingResult from PresentAbsentVS + FindingResult is type PresentOrAbsent // Leave ExceptionValue in, to represent the case where the presence or absence of something was not evaluated 0..0 ReferenceRange 0..1 ObjectIdentifier // TODO: 0..* business identifier? -0..1 Certainty +//0..1 Certainty FindingStatus value is type CodeableConcept Element: ConditionOrDiagnosisCode @@ -232,6 +223,11 @@ For assertions, the FindingTopicCode represents the thing asserted to be present Description: "A specific code for the condition being determined to be present or absent." Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make the binding weaker because US Core requires an extensible binding + Element: PresentOrAbsent + Based on: FindingResult + Description: "A specific code for the condition being determined to be present or absent." + Value: CodeableConcept from PresentAbsentVS + Element: ObjectIdentifier Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." Value: Identifier @@ -245,38 +241,39 @@ Abstract Element: PresenceAssertion Based on: ExistenceAssertion Description: "Finding that a phenomena is present." // TODO: Not sure we should have to say .CodeableConcept for the constraint below to work (currently causes error) -1..1 FindingResult.CodeableConcept is SCT#52101004 "Present (qualifier value)" +1..1 PresentOrAbsent is SCT#52101004 "Present (qualifier value)" 0..0 ExceptionValue -0..1 Certainty from PresenceCertaintyVS +//0..1 Certainty from PresenceCertaintyVS Abstract Element: AbsenceAssertion Based on: ExistenceAssertion Description: "Finding that an entity, person, role, condition, or phenomenon is absent." -1..1 FindingResult.CodeableConcept is SCT#2667000 "Absent (qualifier value)" +1..1 PresentOrAbsent is SCT#2667000 "Absent (qualifier value)" 0..0 ExceptionValue -0..1 Certainty from AbsenceCertaintyVS +//0..1 Certainty from AbsenceCertaintyVS EntryElement: ConditionPresentAssertion Based on: PresenceAssertion Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." - Metadata.OriginatorOrSource value is type ref(PatientOrPractitionerOrRelatedPerson) + Metadata.InformationSource value is type ref(PatientOrPractitionerOrRelatedPerson) 1..1 Patient 0..0 SpecificFocusOfFinding // maybe a family member? -0..1 FindingMethod 1..1 Category from ConditionCategoryVS // DSTU 2 change - category is 1..1 in Argonaut 0..* AnatomicalLocation -//0..* ConditionCause MK - reduce clutter 1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical -//0..1 WhenClinicallyRecognized MK - reduce clutter -//0..1 PresentOnAdmission 0..1 Severity from http://hl7.org/fhir/ValueSet/condition-severity -0..1 Criticality 0..1 StageInformation 0..1 Onset 0..1 Abatement // TODO: change abatement to an Observation +// Stuff from CIMI eliminated +//0..1 FindingMethod +//0..1 WhenClinicallyRecognized +//0..1 PresentOnAdmission +//0..* ConditionCause +//0..1 Criticality Element: ConditionCause Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 81e1ff5e..71553a48 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -8,7 +8,6 @@ InformationItem maps to DomainResource: EntryId maps to id Language maps to language Narrative maps to text - constrain meta to 1..1 Metadata.VersionId maps to meta.versionId Metadata.EntryType maps to meta.profile Metadata.LastUpdated maps to meta.lastUpdated @@ -25,7 +24,7 @@ Narrative maps to Narrative: Observation maps to Observation: Patient maps to subject -// Metadata.OriginatorOrSource maps to performer +// Metadata.InformationSource maps to performer FindingTopicCode maps to code FindingMethod maps to method // dstu 2 change (name change) @@ -63,12 +62,12 @@ Observation maps to Observation: RelevantTime maps to effective[x] // dstu 2 change (name change) Encounter maps to encounter - DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta +// DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-observationresults: // dstu2 different mapping target Patient maps to subject -// Metadata.OriginatorOrSource maps to performer +// Metadata.InformationSource maps to performer FindingTopicCode maps to code FindingMethod maps to method // dstu 2 change (name change) @@ -107,12 +106,12 @@ LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinitio RelevantTime maps to effective[x] // dstu 2 change (name change) Encounter maps to encounter - DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta +// DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta ConditionPresentAssertion maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-condition: // dstu 2 change (different mapping target) - Metadata.AuthoredDateTime maps to assertedDate - Metadata.OriginatorOrSource maps to asserter + Metadata.AuthoredDateTime maps to dateRecorded + Metadata.InformationSource maps to asserter Patient maps to patient Category maps to category ObjectIdentifier maps to identifier diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index ef012595..56a18f36 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -8,7 +8,6 @@ InformationItem maps to DomainResource: EntryId maps to id Language maps to language Narrative maps to text - constrain meta to 1..1 Metadata.VersionId maps to meta.versionId Metadata.EntryType maps to meta.profile Metadata.LastUpdated maps to meta.lastUpdated @@ -26,7 +25,7 @@ Narrative maps to Narrative: // do not map Observation to US Core Results -- Brett says that's only for labs Observation maps to Observation: // TODO: observationresults is only for labs Patient maps to subject -// Metadata.OriginatorOrSource maps to performer +// Metadata.InformationSource maps to performer FindingTopicCode maps to code FindingMethod maps to method CommentOrDescription maps to comment @@ -57,12 +56,12 @@ Observation maps to Observation: // TODO: observationresults is only for labs FindingStatus maps to status RelevantTime maps to effective[x] Encounter maps to context - DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta +// DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: Patient maps to subject -// Metadata.OriginatorOrSource maps to performer +// Metadata.InformationSource maps to performer FindingTopicCode maps to code FindingMethod maps to method CommentOrDescription maps to comment @@ -93,11 +92,11 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us FindingStatus maps to status RelevantTime maps to effective[x] Encounter maps to context - DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta +// DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: Metadata.AuthoredDateTime maps to assertedDate - Metadata.OriginatorOrSource maps to asserter + Metadata.InformationSource maps to asserter Patient maps to subject Category maps to category ObjectIdentifier maps to identifier diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 7ba1da1d..3136e795 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -72,7 +72,6 @@ Concept: LNC#48676-1 "HER2 [Interpretation] in Tissue" Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." FindingResult from PositiveNegativeEquivocalVS FindingTopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" - DiagnosticService is #pathology Specimen is type BreastSpecimen 0..0 FindingMethod 0..0 NonIndependentFinding @@ -90,8 +89,6 @@ Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (I Interpretation from PositiveNegativeEquivocalVS FindingTopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" 0..0 FindingMethod // pre-coordinated in the FindingTopicCode - DiagnosticService is #pathology - Specimen is type BreastSpecimen NonIndependentFinding includes 0..1 CompleteMembraneStainingPercent @@ -115,8 +112,6 @@ Description: "HER2 receptor status as determined by single-probe or dual-probe F FindingTopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" FindingMethod from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS - DiagnosticService is #pathology - Specimen is type BreastSpecimen NonIndependentFinding includes 0..1 AverageHER2SignalsPerCell @@ -149,7 +144,6 @@ Description: "Estrogen receptor alpha is the predominant estrogen receptor expre The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." FindingTopicCode is LNC#16112-5 FindingResult from PositiveNegativeVS - DiagnosticService is #pathology Specimen is type BreastSpecimen NonIndependentFinding includes 0..1 NuclearPositivity @@ -163,7 +157,6 @@ Description: "Progesterone receptor status is a factor in determining prognosis Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." FindingTopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" FindingResult from PositiveNegativeVS - DiagnosticService is #pathology Specimen is type BreastSpecimen NonIndependentFinding includes 0..1 NuclearPositivity @@ -190,7 +183,7 @@ Description: "An evaluation of the size and shape of the nucleus in tumor cells FindingResult from NuclearGradeVS Specimen is type BreastSpecimen FindingTopicCode is MTH#C18513 - DiagnosticService is #pathology + EntryElement: BreastCancerHistologicGrade Concept: LNC#44648-4 @@ -200,7 +193,6 @@ Description: "The Elston Grade/Nottingham Score, representative of the aggressiv FindingResult from NottinghamCombinedGradeVS ExceptionValue from NottinghamNullVS Specimen is type BreastSpecimen - DiagnosticService is #pathology NonIndependentFinding includes 0..1 TubuleFormationScore includes 0..1 NuclearPleomorphismScore @@ -238,7 +230,6 @@ No LOINC code currently exists for this test. We are seeking feedback on the val FindingResult value is type IntegerQuantity FindingTopicCode is MTH#C1709318 Interpretation from RecurrenceRiskScoreInterpretationVS - DiagnosticService is #pathology Specimen is type ref(BreastSpecimen) @@ -250,7 +241,6 @@ No LOINC code currently exists for this test. We are seeking feedback on the val FindingResult value is type IntegerQuantity FindingTopicCode is MTH#C3898101 Interpretation from RecurrenceRiskScoreInterpretationVS - DiagnosticService is #pathology Specimen is type BreastSpecimen EntryElement: ProsignaRecurrenceScore @@ -261,7 +251,6 @@ The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Ris FindingResult value is type IntegerQuantity FindingTopicCode is LNC#76544-6 Interpretation from RecurrenceRiskScoreInterpretationVS - DiagnosticService is #pathology Specimen is type BreastSpecimen EntryElement: MammaprintRecurrenceScore @@ -273,7 +262,6 @@ The is currently no LOINC code for Mammaprint test." FindingResult value is type Quantity FindingTopicCode is MTH#C2827401 Interpretation from RecurrenceRiskScoreInterpretationVS - DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -379,7 +367,6 @@ includes 0..1 OtherReceptorScoringSystem Description: "Ki-67 is a protein phosphatase whose expression is strongly associated with cell proliferation and encoded by the MKI67 gene. The Ki67 labeling index is the fraction of Ki-67-positive cells to total cells in a tumor specimen and may be useful for determining prognosis with respect to survival and disease recurrence. The more positive cells there are, the more quickly they are dividing and forming new cells. ReferenceRange: Low <10, Intermediate 10-20, >20 High" Value: Quantity with units UCUM#% FindingTopicCode is LNC#29593-1 - DiagnosticService is #pathology NonIndependentFinding includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered @@ -388,7 +375,6 @@ includes 0..1 OtherReceptorScoringSystem Concept: MTH#C0812425 Description: "An expression of the number of mitoses found in a stated number of cells. The S-phase fraction number tells you what percentage of cells in the tissue sample are in the process of copying their genetic information (DNA). This S-phase, short for synthesis phase, happens just before a cell divides into two new cells. ReferenceRange: Low <6, Intermediate 6-10, >10 High." Value: Quantity with units UCUM#% - DiagnosticService is #pathology FindingTopicCode is LNC#29593-1 EntryElement: GeneticVariant @@ -397,9 +383,8 @@ Concept: MTH#C0678941 Description: "Whether a subject carries a mutation in a particular gene." Value: CodeableConcept from PositiveNegativeVS // SpecificFocusOfFinding.CodeableConcept from GeneIdentifierVS - DiagnosticService is #genetics 0..0 ReferenceRange -0..0 DeltaFlag +//0..0 DeltaFlag 0..0 AnatomicalLocationd NonIndependentFinding includes 0..1 Refseq @@ -415,7 +400,6 @@ Concept: TBD Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." Observation.FindingTopicCode is TBD#TBD - DiagnosticService is #genetics 0..0 NonIndependentFinding PanelMembers.EvaluationresultRecorded includes 1..1 BRCA1Variant diff --git a/spec/shr_core.txt b/spec/shr_core.txt index ddfa203d..abadc5d6 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -789,7 +789,7 @@ Description: "A unique string that identifies a specific person or thing." 0..1 Type from http://hl7.org/fhir/ValueSet/identifier-type if covered 0..1 CodeSystem 0..1 EffectiveTimePeriod -0..1 Issuer +//0..1 Issuer -- commented out to prevent generating a profile on identifier caused by having profile on Organization (which is unavoidable in DSTU 2, because US Core changes some cardinalities to 1..) Element: Issuer Concept: TBD diff --git a/spec/shr_core_map_dstu2.txt b/spec/shr_core_map_dstu2.txt index 8b47cbf6..39fbfe7c 100644 --- a/spec/shr_core_map_dstu2.txt +++ b/spec/shr_core_map_dstu2.txt @@ -141,7 +141,7 @@ Identifier maps to Identifier: Type maps to type CodeSystem maps to system EffectiveTimePeriod maps to period - Issuer maps to assigner +// Issuer maps to assigner MK - this causes a profile on Identifier because Organization is also profiled Signature maps to Signature: SignatureType maps to type diff --git a/spec/shr_core_map_stu3.txt b/spec/shr_core_map_stu3.txt index e04bae48..7a3e1ea4 100644 --- a/spec/shr_core_map_stu3.txt +++ b/spec/shr_core_map_stu3.txt @@ -135,7 +135,7 @@ Identifier maps to Identifier: Type maps to type CodeSystem maps to system EffectiveTimePeriod maps to period - Issuer maps to assigner +// Issuer maps to assigner MK - this causes a profile on Identifier because Organization is also profiled Signature maps to Signature: SignatureType maps to type diff --git a/spec/shr_encounter_map_dstu2.txt b/spec/shr_encounter_map_dstu2.txt index 7aa0cdb2..f6582c59 100644 --- a/spec/shr_encounter_map_dstu2.txt +++ b/spec/shr_encounter_map_dstu2.txt @@ -24,7 +24,6 @@ Encounter maps to Encounter: /* EncounterRequested maps to ReferralRequest: - SignedBy.EntityOrRole maps to requester.agent Patient maps to subject ReferralDate maps to authoredOn //ReferralSourceType diff --git a/spec/shr_encounter_map_stu3.txt b/spec/shr_encounter_map_stu3.txt index cc3b6ab2..3349e910 100644 --- a/spec/shr_encounter_map_stu3.txt +++ b/spec/shr_encounter_map_stu3.txt @@ -23,7 +23,6 @@ Encounter maps to Encounter: /* EncounterRequested maps to ReferralRequest: - SignedBy.EntityOrRole maps to requester.agent Patient maps to subject ReferralDate maps to authoredOn //ReferralSourceType diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 72f085d3..ebf39471 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -485,11 +485,10 @@ EntryElement: Organization Based on: Entity Concept: MTH#C1561598 Description: "A social or legal structure formed by human beings." +// Required attributes come from STU 3 mapping to us-core-organization 1..1 OrganizationName -0..* OrganizationAlias -1..* OrganizationIdentifier -1..1 Type from http://hl7.org/fhir/ValueSet/organization-type 1..* OrganizationIdentifier +0..1 Type could be from http://hl7.org/fhir/ValueSet/organization-type 1..* Address 1..* ContactPoint 1..1 ActiveFlag @@ -499,11 +498,6 @@ Description: "A social or legal structure formed by human beings." Concept: TBD Description: "The name of the organization." Value: string - - Element: OrganizationAlias - Concept: TBD - Description: "A list of alternate names that the organization is known as, or was known as in the past." - Value: string Element: OrganizationIdentifier Based on: Identifier diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index bdc663a4..d2e5946b 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -50,12 +50,10 @@ RelatedPerson maps to RelatedPerson: Organization maps to Organization: OrganizationName maps to name -// OrganizationAlias maps to alias // dstu 2 change (no such attribute) Type maps to type OrganizationIdentifier maps to identifier Address maps to address ContactPoint maps to telecom - constrain contact to 0..0 ActiveFlag maps to active PartOf maps to partOf diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index 7580e89c..02a4e749 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -50,14 +50,12 @@ RelatedPerson maps to RelatedPerson: Organization maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization: OrganizationName maps to name - OrganizationAlias maps to alias // I wish FHIR allowed multiple names, but it doesn't Type maps to type OrganizationIdentifier maps to identifier Address maps to address ContactPoint maps to telecom ActiveFlag maps to active PartOf maps to partOf - constrain contact to 0..0 Group maps to Group: ActiveFlag maps to active diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index a062a7a0..eaade601 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -25,7 +25,6 @@ Based on: PresenceAssertion Concept: LNC#8670-2 "History of family member diseases" 0..1 Onset 0..1 ConditionOutcome -0..0 FindingMethod FindingTopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered SpecificFocusOfFinding value is type ref(FamilyMember) Element: ConditionOutcome diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index 2833efa9..1f542427 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -74,10 +74,11 @@ EntryElement: TumorMarker Based on: CodedLaboratoryObservation Concept: LNC#21924-6 "Tumor marker Cancer" Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Diectionary). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." - FindingTopicCode from TumorMarkerVS // should we put TumorMarkerVS with the list of all possible tumor markers? -// FindingResult // the result is the name of the tumor marker. + FindingTopicCode is LNC#21924-6 "Tumor marker Cancer" + FindingResult from TumorMarkerVS // should we populate TumorMarkerVS with the list of all possible tumor markers? 0..0 NonIndependentFinding -// PanelMembers.Observation // each cancer type can further narrow the value set of tumor markers as needed. +0..0 AnatomicalLocation +0..0 PanelMembers.Observation // each cancer type can further narrow the value set of tumor markers as needed. /* Element: TumorMarkerName Concept: LNC#TBD "TBD" @@ -95,7 +96,6 @@ Description: "TBD (source: LOINC)" Description: "The degree of PD-L1 (CD274) protein expression in tumor cells as determined by immune staining with anti-PD-L1 clone SP142. (source: LOINC)" FindingTopicCode is LNC#83057-0 "PD-L1 by clone SP142 [Presence] in Tissue by Immune stain." FindingResult from ProteinExpressionVS - DiagnosticService is #PAT // Specimen is type BreastSpecimen 0..0 NonIndependentFinding PanelMembers.Observation @@ -106,7 +106,6 @@ Description: "TBD (source: LOINC)" Concept: LNC#83053-9 Description: "Cells.programmed cell death ligand 1/100 viable tumor cells in Tissue by Immune stain. (source: LOINC)" FindingTopicCode is LNC#83053-9 "Cells.programmed cell death ligand 1/100 viable tumor cells in Tissue by Immune stain." - DiagnosticService is #PAT FindingResult.Quantity with units UCUM#% // Specimen is type BreastSpecimen */ \ No newline at end of file diff --git a/spec/shr_genetics_map_dstu2.txt b/spec/shr_genetics_map_dstu2.txt index 85db91bd..c9132f0c 100644 --- a/spec/shr_genetics_map_dstu2.txt +++ b/spec/shr_genetics_map_dstu2.txt @@ -1,3 +1,21 @@ Grammar: Map 5.1 Namespace: oncocore Target: FHIR_DSTU_2 + +//GeneticVariantTestResult maps to http://hl7.org/fhir/StructureDefinition/genetics: + +GeneticVariantTestResult maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-observationresults: + GenomicSourceClass maps to http://hl7.org/fhir/StructureDefinition/geneticsGenomicSourceClass + GeneName maps to http://hl7.org/fhir/StructureDefinition/geneticsGene + DNARegionName maps to http://hl7.org/fhir/StructureDefinition/geneticsDNARegionName + DNASequenceVariantName maps to http://hl7.org/fhir/StructureDefinition/geneticsDNASequenceVariation + DNASequenceVariantId maps to http://hl7.org/fhir/StructureDefinition/geneticsVariationId + DNASequenceVariantType maps to http://hl7.org/fhir/StructureDefinition/geneticsDNASequenceVariationType + + +// GenomicSourceClass maps to extension.geneticsGenomicSourceClass +// GeneName maps to geneticsGene +// DNARegionName maps to geneticsDNARegionName +// DNASequenceVariantName maps to geneticsDNASequenceVariation +// DNASequenceVariantId maps to geneticsVariationId +// DNASequenceVariantType maps to geneticsDNASequenceVariationType diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index e579fc28..91aade84 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -40,7 +40,6 @@ Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure Value: CodeableConcept from LineOfTherapyVS - EntryElement: RadiationTreatmentPerformed Based on: ProcedurePerformed Description: "A radiation oncology procedure. If the treatment is part of a course of treatment, the PartOf attribute should indicate the CourseOfTreatment." @@ -51,7 +50,6 @@ Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure 0..1 RadiationFractionsDelivered 0..1 TotalRadiationDoseDelivered - Element: RadiationModality Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" Description: "A specific manner, characteristic, pattern of application or the employment of, a method of treatment involving radiation, especially involving the physical treatment of a condition." diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index f38b74ea..b780df11 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -68,7 +68,7 @@ EntryElement: MedicationStatement Based on: ActionPerformed Concept: SCT#416608005 "Drug therapy (procedure)" // TODO: investigate whether we need a new code or use a drug concept. Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." - Metadata.OriginatorOrSource value is type PersonOrOrganization + Metadata.InformationSource value is type PersonOrOrganization 1..1 Metadata // if 0..1, then AuthoredDateTime could still be 0..1 1..1 Metadata.AuthoredDateTime // us-core required 1..1 Medication @@ -82,21 +82,15 @@ EntryElement: MedicationAdministered Based on: ActionPerformed Concept: TBD Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." - Metadata.OriginatorOrSource value is type PersonOrDevice 1..1 Medication 0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category Status from http://hl7.org/fhir/ValueSet/medication-admin-status 0..0 Method // because of Dosage.Method 0..1 Participation - Participation.Participant is type FHIRMedicationAdministrationParticipant // DSTU 2 change (max cardinality = 1) + Participation.Participant is type PatientOrPractitionerOrRelatedPerson // DSTU 2 change (max cardinality = 1), also, DSTU 2 participant excludes Device 0..0 Participation.ParticipationType RelatedRequest value is type ref(MedicationRequested) - - Element: FHIRMedicationAdministrationParticipant - Based on: Participant - Description: "Constraints participants to classes that are accepted by FHIR as actors in procedures in STU 3." - Value: ref(Practitioner) or ref(Patient) or ref(RelatedPerson) or ref(Device) EntryElement: MedicationAdherence @@ -128,6 +122,7 @@ EntryElement: MedicationRequested Based on: ActionRequested Concept: TBD Description: "An order for a medication to be dispensed and instructions for use." +1..1 Requester value is type ref(Practitioner) Status //from http://hl7.org/fhir/ValueSet/medication-request-status DSTU 2 change (incompatible required value sets) PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority 1..1 Medication diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index e03f960c..b2b34fa1 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -16,7 +16,7 @@ Dosage maps to Dosage: */ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationstatement: - Metadata.OriginatorOrSource maps to informationSource + Metadata.InformationSource maps to informationSource Metadata.AuthoredDateTime maps to dateAsserted // slight semantic difference? Patient maps to patient constrain wasNotTaken to 0..0 @@ -45,7 +45,6 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ Dosage.MaximumDosePerTimePeriod maps to dosage.maxDosePerPeriod MedicationAdministered maps to MedicationAdministration: - Metadata.OriginatorOrSource maps to perfomer.actor Patient maps to patient // DSTU 2 change (name change) Encounter maps to encounter diff --git a/spec/shr_medication_map_stu3.txt b/spec/shr_medication_map_stu3.txt index 0789eecb..27c900d0 100644 --- a/spec/shr_medication_map_stu3.txt +++ b/spec/shr_medication_map_stu3.txt @@ -14,7 +14,7 @@ Dosage maps to Dosage: MaximumDosePerTimePeriod maps to maxDosePerPeriod MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: - Metadata.OriginatorOrSource maps to informationSource + Metadata.InformationSource maps to informationSource Metadata.AuthoredDateTime maps to dateAsserted Patient maps to subject constrain reasonNotTaken to 0..0 @@ -28,7 +28,6 @@ MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c Status maps to status MedicationAdministered maps to MedicationAdministration: - Metadata.OriginatorOrSource maps to performer.actor Patient maps to subject Encounter maps to context RelatedRequest maps to prescription @@ -56,6 +55,7 @@ MedicationNotAdministered maps to MedicationAdministration: MedicationRequested maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest: + Requester maps to requester Medication maps to medication[x] NumberOfRefillsAllowed maps to dispenseRequest.numberOfRepeatsAllowed QuantityPerDispense maps to dispenseRequest.quantity diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 33d4cf84..6e7aa300 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -218,7 +218,7 @@ Description: "A simplified observation for social histories." 0..0 ExceptionValue 0..0 Interpretation 0..0 Encounter -0..0 DeltaFlag +//0..0 DeltaFlag 0..0 CommentOrDescription //0..0 FindingStatus diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 35314fbc..5cd1fed0 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -29,7 +29,7 @@ Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LO FindingTopicCode is SCT#371441004 "Histologic type (observable entity)" 0..0 AnatomicalLocation 0..0 Device -0..0 DeltaFlag +//0..0 DeltaFlag EntryElement: CancerHistologicGrade // did not use precoordinated codes because only available for clinical and pathologic. @@ -65,8 +65,8 @@ Description: "The extent a cancer has spread in the body (source: NCI Diction Concept: SCT#258232002 "Cancer staging (tumor staging)" FindingTopicCode is SCT#258232002 "Cancer staging (tumor staging)" 0..0 FindingResult + 0..1 StageTiming // not a component since it is not a finding, but a further description of the circumstances of the observation 0..0 ExceptionValue - 0..0 DeltaFlag 0..0 ReferenceRange 0..0 AnatomicalLocation 0..0 Specimen @@ -75,8 +75,7 @@ Concept: SCT#258232002 "Cancer staging (tumor staging)" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) NonIndependentFinding includes 0..1 StageGroup // MK - should this be the FindingResult? - includes 0..1 StageTiming // retained StageTiming because if using TNM staging, the StageGroup still needs a prefix (even if we're using precoordinated categories). There are LOINC codes for clinical and pathologic stage groups in LOINC, but we back ourselves into TNM for stage group if we use them. - PanelMembers.Observation // MK - could these be components? + PanelMembers.Observation includes 0..1 TNMClinicalPrimaryTumorClassification includes 0..1 TNMClinicalRegionalNodesClassification includes 0..1 TNMClinicalDistantMetastasesClassification @@ -85,24 +84,9 @@ Concept: SCT#258232002 "Cancer staging (tumor staging)" includes 0..1 TNMPathologicDistantMetastasesClassification Element: StageTiming -Based on: CodedNonIndependentFinding Concept: SCT#260869008 "Timing of stage" Description: "Indicates when the staging was done, in terms of treatment landmarks." - FindingResult from StageTimingPrefixVS - FindingTopicCode is SCT#260869008 "Timing of stage" - - Element: ClinicalStageTiming - Based on: StageTiming - Concept: SCT#260869008 "Timing of stage" - Description: "Indicates staging was done from clinical evidence." - FindingResult.CodeableConcept is SCT#385349001 "Clinical stage (observable entity)" - - Element: PathologicStageTiming - Based on: StageTiming - Concept: SCT#260869008 "Timing of stage" - Description: "Indicates when the staging was done using pathologic evidence." - FindingResult.CodeableConcept is SCT#405978005 "Pathologic stage (observable entity)" - +Value: CodeableConcept from StageTimingPrefixVS Element: StageGroup // did not use precoordinated codes because only available for clinical and pathologic. @@ -126,13 +110,11 @@ Description: "Detailed site-specific codes for the clinical tumor (T) as defi FindingResult from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange -0..0 DeltaFlag 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 ClinicalStageTiming EntryElement: TNMClinicalRegionalNodesClassification Based on: CodedNonLaboratoryObservation @@ -142,29 +124,25 @@ Description: "" //TODO: pull from LOINC FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange -0..0 DeltaFlag 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 ClinicalStageTiming EntryElement: TNMClinicalDistantMetastasesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC FindingResult from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 -0..0 ReferenceRange FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" 0..0 ReferenceRange -0..0 DeltaFlag 0..0 Device -0..1 FindingMethod from TNMTumorStagingSystemVS if covered +0..1 FindingMethod from TNMTumorStagingSystemVS if covered SpecificFocusOfFinding value is type ref(CancerDisorderPresent) NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 ClinicalStageTiming + EntryElement: TNMPathologicPrimaryTumorClassification Based on: CodedNonLaboratoryObservation @@ -173,14 +151,12 @@ Description: "" //TODO: pull from LOINC FindingResult from http://loinc.org/vs/LL232-0 // normative FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" 0..0 ReferenceRange -0..0 DeltaFlag 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered SpecificFocusOfFinding value is type ref(CancerDisorderPresent) NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 PathologicStageTiming EntryElement: TNMPathologicRegionalNodesClassification Based on: CodedNonLaboratoryObservation @@ -190,13 +166,11 @@ Description: "" //TODO: pull from LOINC FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange -0..0 DeltaFlag 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 PathologicStageTiming EntryElement: TNMPathologicDistantMetastasesClassification Based on: CodedNonLaboratoryObservation @@ -207,13 +181,11 @@ Description: "" //TODO: pull from LOINC FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange -0..0 DeltaFlag 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 PathologicStageTiming EntryElement: TumorPresent @@ -226,8 +198,8 @@ Concept: SCT#395557000 "Tumor finding (finding)" Element: IsPrimaryTumor Concept: TBD - Description: "Whether the tumor is the original, or first, tumor in the body, for a particular cancer." - Value: CodeableConcept from YesNoUnknownVS // could be boolean but VS allows for unknown + Description: "Whether the tumor is the original or first tumor in the body, for a particular cancer." + Value: CodeableConcept from YesNoUnknownVS // could be boolean but this VS allows for unknown /**** replaced by Onset of CancerDisorderPresent diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index be8021fe..5cd02275 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -16,8 +16,8 @@ Description: "A procedure that has been performed." 0..* Annotation 0..1 Reason 0..1 Method -0..* InputFinding -0..* Indication +//0..* InputFinding +//0..* Indication 0..* ref(Device) 0..1 Location Participation.OnBehalfOf value is type ref(Organization) @@ -25,7 +25,7 @@ Description: "A procedure that has been performed." // Participation.Participant.EntityOrRole is type ref(Practitioner) Participation.Participant is type FHIRProcedureParticipant RelatedRequest value is type ref(ProcedureRequested) -0..* OutputFinding // in CIMI, this is part of ProcedureTopic, but the definition hinges on performance, so it belongs here, not there. +//0..* OutputFinding // in CIMI, this is part of ProcedureTopic, but the definition hinges on performance, so it belongs here, not there. Element: ProcedureCode Concept: TBD @@ -55,7 +55,7 @@ Based on: ActionNotPerformed 0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason 1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* AnatomicalLocation -//0..1 PartOf value is type ref(ProcedurePerformed) ??? +//0..1 PartOf value is type ref(ProcedurePerformed or Not Performed) ??? 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation 1..1 Status // must be from http://hl7.org/fhir/ValueSet/event-status // DSTU 2 change (different required value sets in v2 and v3) @@ -65,6 +65,7 @@ EntryElement: ProcedureRequested Based on: ActionRequested PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) Status // must be from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) +0..1 Requester is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. 1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* AnatomicalLocation 0..1 PartOf value is type ref(ProcedurePerformed) @@ -72,8 +73,8 @@ Based on: ActionRequested 0..* Annotation 0..1 Reason 0..1 Method -0..* InputFinding -0..* Indication +//0..* InputFinding covered by Reason +//0..* Indication 0..* ref(Device) 0..1 Location diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index dd0632bb..eb91250b 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -58,8 +58,8 @@ SurgicalProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefi ProcedureRequested maps to ProcedureRequest: - Metadata.AuthoredDateTime maps to authoredOn - Metadata.OriginatorOrSource maps to requester + Metadata.AuthoredDateTime maps to orderedOn + Requester maps to orderer ProcedureCode maps to code // DSTU 2 change (no such attribute) // Category maps to category @@ -71,7 +71,7 @@ ProcedureRequested maps to ProcedureRequest: Reason maps to reason[x] Status maps to status // DSTU 2 change (no such attribute) -// RequestIntent maps to intent +// RequestIntent maps to intent // DSTU 2 change (name change) ExpectedPerformanceTime maps to scheduled[x] // DSTU 2 change (no such attribute) @@ -83,8 +83,7 @@ ProcedureRequestedAgainst maps to Basic: /* In DSTU 2, there is not way to specify a procedure NOT to perform using Procedure resource fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal - Metadata.AuthoredDateTime maps to authoredOn - Metadata.OriginatorOrSource maps to requester + // who is the requester? ProcedureCode maps to code Category maps to category Patient maps to subject diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index e71efa7e..e15a3461 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -55,7 +55,7 @@ SurgicalProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefiniti ProcedureRequested maps to ProcedureRequest: Metadata.AuthoredDateTime maps to authoredOn - Metadata.OriginatorOrSource maps to requester + Requester maps to requester.agent ProcedureCode maps to code Category maps to category constrain doNotPerform to 0..0 @@ -74,7 +74,7 @@ ProcedureRequestedAgainst maps to ProcedureRequest: fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal Metadata.AuthoredDateTime maps to authoredOn - Metadata.OriginatorOrSource maps to requester + // who is the requester? ProcedureCode maps to code Category maps to category Patient maps to subject diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt index 942901f5..7f89ea19 100644 --- a/spec/shr_tumor.txt +++ b/spec/shr_tumor.txt @@ -52,7 +52,6 @@ Concept: MTH#C4086369 Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." FindingResult from PositiveNegativeVS FindingTopicCode is MTH#C4086369 - DiagnosticService is #pathology 0..0 PanelMembers NonIndependentFinding includes 0..1 TumorMarginDescription diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index ddf251e5..8b98c189 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -78,7 +78,6 @@ The WoundIdentifier serves as a link between this assertion and assessments of t 1..1 AnatomicalLocationStructured is type WoundAnatomicalLocation 0..0 Severity // not sure if zeroing it out is wise, but severity is not part of LOINC panel 0..0 Criticality -0..0 Certainty 0..0 Device Element: WoundIdentifier From 59df41a97eb8d0c7e0d0c6159a45e10a625f9197 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sat, 8 Dec 2018 22:13:39 -0500 Subject: [PATCH 132/289] Fixed Metadata attributes --- spec/shr_adverse.txt | 2 +- spec/shr_adverse_map_dstu2.txt | 5 +- spec/shr_adverse_map_stu3.txt | 3 +- spec/shr_allergy.txt | 4 +- spec/shr_allergy_map_dstu2.txt | 21 ++-- spec/shr_allergy_map_stu3.txt | 6 +- spec/shr_base.txt | 173 +++++++++++++++++++----------- spec/shr_base_action.txt | 2 +- spec/shr_base_finding.txt | 3 +- spec/shr_base_map_dstu2.txt | 26 ++--- spec/shr_base_map_stu3.txt | 29 +++-- spec/shr_brca.txt | 6 +- spec/shr_core.txt | 11 +- spec/shr_entity.txt | 24 +---- spec/shr_entity_map_dstu2.txt | 2 +- spec/shr_entity_map_stu3.txt | 2 +- spec/shr_medication.txt | 8 +- spec/shr_medication_map_dstu2.txt | 8 +- spec/shr_medication_map_stu3.txt | 8 +- spec/shr_occupation.txt | 2 - spec/shr_procedure.txt | 4 +- spec/shr_procedure_map_dstu2.txt | 8 +- spec/shr_procedure_map_stu3.txt | 8 +- spec/shr_wound.txt | 1 - 24 files changed, 198 insertions(+), 168 deletions(-) diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt index 1260648f..472ae682 100644 --- a/spec/shr_adverse.txt +++ b/spec/shr_adverse.txt @@ -12,7 +12,7 @@ CodeSystem: MTH = http://ncimeta.nci.nih.gov Element: AdverseEvent Based on: InformationItem Description: "A record of an untoward or unexpected event in a patient under treatment, and which does not necessarily have to have a causal relationship with that treatment. Adverse events may capture either a workflow breach that may or may not result in harm, but must be documented for quality improvement purposes, or an adverse finding whether or not it can be traceable to an actual workflow breach." -// SignedBy.Attribution.EntityOrRole is type PatientOrPractitionerOrRelatedPerson <--to facilitate mapping to FHIR, which only allows Patient, Practitioner, or RelatedPerson as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) + Metadata.InformationRecorder value is type PatientOrPractitionerOrRelatedPerson 1..1 Patient 0..1 Type from MedDRAVS 1..1 OccurrenceTime diff --git a/spec/shr_adverse_map_dstu2.txt b/spec/shr_adverse_map_dstu2.txt index 5a92e154..814cd03d 100644 --- a/spec/shr_adverse_map_dstu2.txt +++ b/spec/shr_adverse_map_dstu2.txt @@ -3,8 +3,7 @@ Namespace: shr.adverse Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: -// _Entry.SignedBy.Value.EntityOrRole maps to recorder ?? -// EntityOrRole is the name of the property; don't say Signed.Value.Role + Metadata.InformationRecorder maps to recorder Type maps to type CommentOrDescription maps to description Patient maps to subject @@ -14,7 +13,7 @@ AdverseEvent maps to AdverseEvent: Outcome maps to outcome // FHIR TODO: AdverseEvent.eventParticipant is underdefined (no role) CausalAttribution.PossibleCause maps to suspectEntity.instance - CausalAttribution.Certainty maps to suspectEntity.causalityAssessment + CausalAttribution.Certainty maps to suspectEntity.causalityAssessment AdverseDrugReaction maps to AdverseEvent: constrain suspectEntity to 1..* \ No newline at end of file diff --git a/spec/shr_adverse_map_stu3.txt b/spec/shr_adverse_map_stu3.txt index 5a92e154..b0bb1b83 100644 --- a/spec/shr_adverse_map_stu3.txt +++ b/spec/shr_adverse_map_stu3.txt @@ -3,8 +3,7 @@ Namespace: shr.adverse Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: -// _Entry.SignedBy.Value.EntityOrRole maps to recorder ?? -// EntityOrRole is the name of the property; don't say Signed.Value.Role + Metadata.InformationRecorder maps to recorder Type maps to type CommentOrDescription maps to description Patient maps to subject diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index 3edb0f3f..b694fbcd 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -12,8 +12,8 @@ Based on: Finding Concept: SCT#473010000 "Hypersensitivity condition (disorder)" // or SCT#420134006 "Propensity to adverse reactions (disorder)"? Description: "A finding related to the presence of an individual's risk or sensitivity to a substance or class of substances. An AllergyIntolerancePresent finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time. Per US Core specification, the result includes SNOMED codes representing 'No known allergy'. In AllergyIntolerance, the reactions are included in-line, rather than referencing to conditions (in notable contrast to AdverseEvent)." -// SourceOfInformation value is type PatientOrPractitionerOrRelatedPerson -// Signed.Attribution.EntityOrRole is type PatientOrPractitioner // to facilitate mapping to FHIR, which only allows Patient or Practitioner as recorder (note: CLI crashes if we write this as Signed.Value.EntityOrRole) + Metadata.OriginatorOrSource value is type PatientOrPractitionerOrRelatedPerson + Metadata.InformationRecorder value is type PatientOrPractitioner // FHIR only allows Patient or Practitioner as recorder 1..1 Patient 1..1 FindingStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index 277a9fba..d3196126 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -5,15 +5,16 @@ Target: FHIR_DSTU_2 AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: Patient maps to patient -// SourceOfInformation.Value maps to asserter -// Signed.Value.EntityOrRole maps to recorder - _Entry.CreationTime maps to recordedDate + Metadata.OriginatorOrSource maps to asserter + Metadata.InformationRecorder maps to recorder + Metadata.AuthoredDateTime maps to assertedDate FindingResult maps to substance AllergyIntoleranceType maps to type SubstanceCategory maps to category -// DSTU 2 change (FindingStatus and ClinicalStatus map to one DSTU 2 attribute, status. Eliminate mappings so native DSTU 2 status is supported. Admittedly, not a great solution.) -// FindingStatus maps to verificationStatus -// ClinicalStatus maps to status +/* DSTU 2: FindingStatus and ClinicalStatus map to one attribute, status. This is a problem. For now, eliminating mappings so native DSTU 2 status is supported. + FindingStatus maps to verificationStatus + ClinicalStatus maps to status +*/ Criticality maps to criticality // DSTU 2 change (onset only dateTime, not a choice [x]) Onset maps to onset @@ -28,10 +29,10 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a /* NoAdverseSensitivityToSubstance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: -// Patient maps to patient -// SourceOfInformation.Value maps to asserter -// Signed.Value.EntityOrRole maps to recorder - _Entry.CreationTime maps to assertedDate + Patient maps to patient + Metadata.OriginatorOrSource maps to asserter + Metadata.InformationRecorder maps to recorder + Metadata.AuthoredDateTime maps to assertedDate AdverseSensitivityTopic.TopicCode maps to code constrain type to 0..0 constrain category to 0..0 diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index da0c30e8..75651307 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -4,8 +4,10 @@ Target: FHIR_STU_3 AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: Patient maps to patient -// Signed.Value.EntityOrRole maps to recorder - _Entry.CreationTime maps to assertedDate + Patient maps to patient + Metadata.OriginatorOrSource maps to asserter + Metadata.InformationRecorder maps to recorder + Metadata.AuthoredDateTime maps to assertedDate FindingResult maps to code AllergyIntoleranceType maps to type SubstanceCategory maps to category diff --git a/spec/shr_base.txt b/spec/shr_base.txt index d27e1814..0eba2d0f 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -9,54 +9,30 @@ CodeSystem: SCT = http://snomed.info/sct CodeSystem: NCI = https://evs.nci.nih.gov/ftp1/CDISC/SDTM/ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category -Element: InformationItem -Concept: MTH#C1705654 -Description: "Parent class for any entry in clinical or administrative health-related system, including information about organizations, providers, patients, services, payments, decision support artifacts, etc." - Element: Entry Concept: MTH#C1705654 -Description: "Metadata attributes that apply to any item represented in the standard health record. An Entry may not belong exclusively to a single person's health record, but could represent an entity that surfaces in multiple records, such as organizations or practitioners. If the entry belongs to a single person's record, then the identity of the person of record must be recorded." -0..1 ShrId -1..1 EntryId -0..1 Version - Version value is type id -1..1 EntryType -1..1 CreationTime -1..1 LastUpdated -0..1 RecordStatus -0..1 Narrative -0..1 Language -0..* SecurityLabel -0..* Tag -0..* DerivedFrom -0..1 RecordedBy -0..1 SignedBy // Author -//0..* CosignedBy -//0..* VerifiedBy +Description: "Obsolete. Use InformationItem" + +/*0..1 ShrId Element: ShrId Concept: TBD Description: "A unique, persistent, permanent identifier for the overall health record belonging to the Patient." - Value: id + Value: id */ + +Abstract Element: InformationItem +Concept: MTH#C1705654 +Description: "Parent class for any item in clinical or administrative health-related system. Contains metadata attributes that apply to any item represented in the standard health record. An InformationItem can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." +1..1 EntryId +0..1 Narrative +0..1 Language +0..1 Metadata + Element: EntryId Concept: MTH#C0600091 Description: "A persistent, permanent identifier for an entry in a health record, unique within the scope of the health record." Value: id - - Element: EntryType // Would EntryClass be clearer? - Concept: TBD - Description: "SHR data element identifier, as a URI." - Value: uri - - Element: LastUpdated - Concept: TBD - Description: "The most recent date the entry was changed." - Value: instant - - Element: RecordStatus - Description: "Concept indicating the state of this record, e.g., 'entered in error'." - Value: CodeableConcept Element: Narrative Concept: TBD @@ -73,6 +49,29 @@ Description: "Metadata attributes that apply to any item represented in the stan Concept: TBD Description: "Additional information on how the narrative was generated, and the scope of information contained." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/narrative-status + + +Element: Metadata +Concept: TBD +Description: "Elements that belong to all information items." +0..1 VersionId +1..1 EntryType // would EntryConformance be clearer? +0..1 RecordStatus +0..* SecurityLabel +0..* Tag +0..1 OriginatorOrSource +0..1 InformationRecorder +0..1 AuthoredDateTime +1..1 LastUpdated + + Element: EntryType // Would EntryClass be clearer? + Concept: TBD + Description: "The class of the item, as a URI." + Value: uri + + Element: RecordStatus + Description: "Concept indicating the state of this record, e.g., 'entered in error'." + Value: CodeableConcept Element: SecurityLabel Concept: TBD @@ -83,37 +82,57 @@ Description: "Metadata attributes that apply to any item represented in the stan Concept: TBD Description: "A code used to relate entries to categories or workflows. Applications are not required to consider the tags when interpreting the meaning of an entry." Value: CodeableConcept - - Element: DerivedFrom + + Element: OriginatorOrSource Concept: TBD - Description: "Indicates the source of information in the case the Entry has been created by logical extension or modification of one or more source entries." - Value: ref(InformationItem) - - Element: RecordedBy - Description: "The person who entered the order on behalf of another individual for example in the case of a verbal or a telephone order." - Value: Attribution - - Element: SignedBy - Description: "Provenance information specific to the signing of the clinical statement." + Description: "The origin or source of the information or request: a practitioner, patient, related person, organization, another health record, an algorithm, device, etc." Value: Attribution - Element: CosignedBy - Description: "Provenance information specific to the cosigning of the clinical statement." + Element: InformationRecorder + Concept: TBD + Description: "The recorder of the information, if other than the information originator. For example, the nurse taking a list of medications reported by the patient." Value: Attribution - Element: VerifiedBy - Description: "Provenance information specific to the verification process associated with this statement (e.g., verifier, when verified, etc.)" - Value: Attribution - Element: Attribution Description: "Information ascribing the record to a particular contributor or responsible person." - 1..1 EntityOrRole // TODO: change to Participant - 0..1 RecordedOn - 0..1 Signature + Value: ref(EntityOrRole) + + Element: PatientOrPractitioner + Based on: Attribution + Description: "A choice of Patient or Practitioner. Needed for mapping to FHIR." + Value: ref(Patient) or ref(Practitioner) + + Element: PatientOrPractitionerOrRelatedPerson + Based on: Attribution + Description: "A choice of Patient, Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping AdverseEvent.SignedBy to FHIR AdverseEvent." + Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) + + Element: PractitionerOrRelatedPerson + Based on: Attribution + Description: "A choice of Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping EncounterPerformed.Participant to FHIR Encounter.participant.individual" + Value: ref(Practitioner) or ref(RelatedPerson) + + Element: PersonOrOrganization + Based on: Attribution + Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." + Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Organization) + + Element: PersonOrDevice + Based on: Attribution + Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." + Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Device) + + + Element: AuthoredDateTime + Concept: TBD + Description: "The time the information was recorded; usually, when the information item was created." + Value: dateTime + + Element: LastUpdated + Concept: TBD + Description: "The most recent date the information item was changed." + Value: instant - Element: RecordedOn - Description: "The time of the attribution action." - Value: instant EntryElement: Composition Based on: InformationItem @@ -131,9 +150,43 @@ Description: "A composition represents a set of Entries sharing common provenanc /* + Element: ShrId + Concept: TBD + Description: "A unique, persistent, permanent identifier for the overall health record belonging to the Patient." + Value: id + Element: HealthRecordId Concept: MTH#C1549718 Description: "A unique, persistent, permanent identifier for a health record." Value: id + + Element: DerivedFrom + Concept: TBD + Description: "Indicates the source of information in the case the Entry has been created by logical extension or modification of one or more source entries." + Value: ref(InformationItem) + + Element: SignedBy + Description: "Provenance information specific to the signing of the clinical statement." + Value: Attribution + + Element: CosignedBy + Description: "Provenance information specific to the cosigning of the clinical statement." + Value: Attribution + + Element: VerifiedBy + Description: "Provenance information specific to the verification process associated with this statement (e.g., verifier, when verified, etc.)" + Value: Attribution + + Element: Attribution + Description: "Information ascribing the record to a particular contributor or responsible person." + 1..1 EntityOrRole // TODO: change to Participant + 0..1 RecordedOn + 0..1 Signature + + Element: RecordedOn + Description: "The time of the attribution action." + Value: instant + + */ diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 03f1fe84..94b35b2e 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -9,7 +9,7 @@ Abstract Element: ActionStatement Based on: InformationItem Description: "Abstract class representing any type of action." 0..1 Category // Might not need this -1..1 Patient // constrain from 0..1 to 1..1 +1..1 Patient // Change to 0..1? Not all actions involve a patient 0..1 Encounter // actions often take place during an encounter 0..* Reason diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 8b6605d2..c82543e8 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -106,7 +106,6 @@ For an Observation, the FindingTopicCode describes the aspect or property of the 0..1 Interpretation 0..1 Device 0..1 Specimen -//0..* Precondition MK - avoid clutter 0..* Media // needed in Wound assessment 0..1 PanelMembers @@ -264,7 +263,7 @@ EntryElement: ConditionPresentAssertion Based on: PresenceAssertion Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." -//0..0 SourceOfInformation //value is type PatientOrPractitionerOrRelatedPerson + Metadata.OriginatorOrSource value is type ref(PatientOrPractitionerOrRelatedPerson) 1..1 Patient 0..0 SpecificFocusOfFinding // maybe a family member? 0..1 FindingMethod diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 88e3500c..81e1ff5e 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -2,18 +2,18 @@ Grammar: Map 5.1 Namespace: shr.base Target: FHIR_DSTU_2 -Entry maps to DomainResource: +//Entry maps to DomainResource: + +InformationItem maps to DomainResource: EntryId maps to id - constrain meta to 1..1 - Version maps to meta.versionId - EntryType maps to meta.profile - LastUpdated maps to meta.lastUpdated Language maps to language Narrative maps to text - SecurityLabel maps to meta.security - Tag maps to meta.tag - -InformationItem maps to DomainResource: + constrain meta to 1..1 + Metadata.VersionId maps to meta.versionId + Metadata.EntryType maps to meta.profile + Metadata.LastUpdated maps to meta.lastUpdated + Metadata.SecurityLabel maps to meta.security + Metadata.Tag maps to meta.tag Composition maps to Composition: Section maps to section @@ -25,7 +25,7 @@ Narrative maps to Narrative: Observation maps to Observation: Patient maps to subject -// SourceOfInformation.Value maps to performer +// Metadata.OriginatorOrSource maps to performer FindingTopicCode maps to code FindingMethod maps to method // dstu 2 change (name change) @@ -68,7 +68,7 @@ Observation maps to Observation: LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-observationresults: // dstu2 different mapping target Patient maps to subject -// SourceOfInformation.Value maps to performer +// Metadata.OriginatorOrSource maps to performer FindingTopicCode maps to code FindingMethod maps to method // dstu 2 change (name change) @@ -111,8 +111,8 @@ LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinitio ConditionPresentAssertion maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-condition: // dstu 2 change (different mapping target) -// _Entry.CreationTime maps to assertedDate // why doesn't this work? -// SourceOfInformation.Value maps to asserter // why doesn't this work? + Metadata.AuthoredDateTime maps to assertedDate + Metadata.OriginatorOrSource maps to asserter Patient maps to patient Category maps to category ObjectIdentifier maps to identifier diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 176ce118..ef012595 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -2,18 +2,18 @@ Grammar: Map 5.1 Namespace: shr.base Target: FHIR_STU_3 -Entry maps to DomainResource: +//Entry maps to DomainResource: + +InformationItem maps to DomainResource: EntryId maps to id - constrain meta to 1..1 - Version maps to meta.versionId - EntryType maps to meta.profile - LastUpdated maps to meta.lastUpdated Language maps to language Narrative maps to text - SecurityLabel maps to meta.security - Tag maps to meta.tag - -InformationItem maps to DomainResource: + constrain meta to 1..1 + Metadata.VersionId maps to meta.versionId + Metadata.EntryType maps to meta.profile + Metadata.LastUpdated maps to meta.lastUpdated + Metadata.SecurityLabel maps to meta.security + Metadata.Tag maps to meta.tag Composition maps to Composition: Section maps to section @@ -26,7 +26,7 @@ Narrative maps to Narrative: // do not map Observation to US Core Results -- Brett says that's only for labs Observation maps to Observation: // TODO: observationresults is only for labs Patient maps to subject -// SourceOfInformation.Value maps to performer // Why doesn't this work??? +// Metadata.OriginatorOrSource maps to performer FindingTopicCode maps to code FindingMethod maps to method CommentOrDescription maps to comment @@ -60,9 +60,9 @@ Observation maps to Observation: // TODO: observationresults is only for labs DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta -LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: // TODO: observationresults is only for labs +LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: Patient maps to subject -// SourceOfInformation.Value maps to performer // Why doesn't this work??? +// Metadata.OriginatorOrSource maps to performer FindingTopicCode maps to code FindingMethod maps to method CommentOrDescription maps to comment @@ -96,9 +96,8 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: -// _Entry.CreationTime maps to assertedDate // why doesn't this work? -// Patient maps to subject -// SourceOfInformation.Value maps to asserter // why doesn't this work? + Metadata.AuthoredDateTime maps to assertedDate + Metadata.OriginatorOrSource maps to asserter Patient maps to subject Category maps to category ObjectIdentifier maps to identifier diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 5bad413c..7ba1da1d 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -74,7 +74,6 @@ Description: "HER2 receptor status. HER2 is a member of the human epidermal grow FindingTopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" DiagnosticService is #pathology Specimen is type BreastSpecimen -//0..0 Precondition 0..0 FindingMethod 0..0 NonIndependentFinding PanelMembers.Observation @@ -92,7 +91,7 @@ Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (I FindingTopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" 0..0 FindingMethod // pre-coordinated in the FindingTopicCode DiagnosticService is #pathology -//0..0 Precondition + Specimen is type BreastSpecimen NonIndependentFinding includes 0..1 CompleteMembraneStainingPercent @@ -117,7 +116,7 @@ Description: "HER2 receptor status as determined by single-probe or dual-probe F FindingMethod from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS DiagnosticService is #pathology -//0..0 Precondition + Specimen is type BreastSpecimen NonIndependentFinding includes 0..1 AverageHER2SignalsPerCell @@ -399,7 +398,6 @@ Description: "Whether a subject carries a mutation in a particular gene." Value: CodeableConcept from PositiveNegativeVS // SpecificFocusOfFinding.CodeableConcept from GeneIdentifierVS DiagnosticService is #genetics -//0..0 Precondition 0..0 ReferenceRange 0..0 DeltaFlag 0..0 AnatomicalLocationd diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 16937fd9..12db25a7 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -609,10 +609,15 @@ Concept: MTH#C1548311 Description: "A string meant for reading by a person, for example, accompanying a code." Value: string -Element: Version +Element: VersionId Concept: MTH#C0333052 -Description: "A number or code associated with the product that identifies a particular release iteration." -Value: string or id +Description: "An identifier associated with the product that denotes a particular release iteration." +Value: id + +Element: VersionString +Concept: MTH#C0333052 +Description: "A string associated with the product that identifies a particular release iteration." +Value: string Element: Title Concept: TBD diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 96dab86e..d09c00f2 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -90,28 +90,6 @@ Description: "A person in a role defined in relationship to a patient" Description: "The relationship to the person of record." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype // DSTU 2 change -- change from extensible to required since this value set is required in DSTU 2 -Element: PatientOrPractitioner -Based on: EntityOrRole -Description: "A choice of Patient or Practitioner. Needed for mapping to FHIR." -Value: ref(Patient) or ref(Practitioner) - -Element: PatientOrPractitionerOrRelatedPerson -Based on: EntityOrRole -Description: "A choice of Patient, Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping AdverseEvent.SignedBy to FHIR AdverseEvent." -Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) - -Element: PractitionerOrRelatedPerson -Based on: EntityOrRole -Description: "A choice of Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping EncounterPerformed.Participant to FHIR Encounter.participant.individual" -Value: ref(Practitioner) or ref(RelatedPerson) - -/* -Element: AnyPersonOrOrganization -Based on: EntityOrRole -Description: "Needed for mapping to FHIR, for example, mapping to FHIR MedicationStatement.informationSource." -Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) //or ref(Organization) -*/ - EntryElement: Group Based on: Entity Concept: MTH#C0441833 @@ -553,7 +531,7 @@ Description: "A specific durable physical device used in diagnosis or treatment. 0..1 ManufacturerName // string, not ref(Organization) - only because of mapping to FHIR 0..1 ManufactureDate 0..1 ExpirationDate -0..1 Version +0..1 VersionString 0..1 Url Element: DeviceUdi diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index be84e447..bed0b7c7 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -141,5 +141,5 @@ Device maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-device: ManufactureDate maps to manufactureDate // dstu 2 change (different attribute) ExpirationDate maps to expiry - Version maps to version + VersionString maps to version Url maps to url diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index 5c328dcc..dec0ede4 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -132,7 +132,7 @@ Device maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-device: ManufacturerName maps to manufacturer ManufactureDate maps to manufactureDate ExpirationDate maps to expirationDate - Version maps to version + VersionString maps to version Url maps to url diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 910b8c73..f38b74ea 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -68,7 +68,9 @@ EntryElement: MedicationStatement Based on: ActionPerformed Concept: SCT#416608005 "Drug therapy (procedure)" // TODO: investigate whether we need a new code or use a drug concept. Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." -// SourceOfInformation value is type AnyPersonOrOrganization + Metadata.OriginatorOrSource value is type PersonOrOrganization +1..1 Metadata // if 0..1, then AuthoredDateTime could still be 0..1 +1..1 Metadata.AuthoredDateTime // us-core required 1..1 Medication 0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category @@ -80,7 +82,7 @@ EntryElement: MedicationAdministered Based on: ActionPerformed Concept: TBD Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." -// SourceOfInformation value is type AnyPersonOrOrganization + Metadata.OriginatorOrSource value is type PersonOrDevice 1..1 Medication 0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category @@ -119,7 +121,7 @@ Based on: ActionNotPerformed Concept: TBD Description: "A record of a medication NOT used. Although usually not required, a medication not used is sometimes reported when deviating from normal expectation or care plan." 1..1 Medication -0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category +0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category Reason from MedicationNotUsedReasonVS EntryElement: MedicationRequested diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index 6d68c023..e03f960c 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -16,8 +16,8 @@ Dosage maps to Dosage: */ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationstatement: -// SourceOfInformation.Value maps to informationSource -// _Entry.CreationTime maps to dateAsserted // however, date asserted and date recorded may not be the same + Metadata.OriginatorOrSource maps to informationSource + Metadata.AuthoredDateTime maps to dateAsserted // slight semantic difference? Patient maps to patient constrain wasNotTaken to 0..0 constrain reasonNotTaken to 0..0 @@ -45,7 +45,7 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ Dosage.MaximumDosePerTimePeriod maps to dosage.maxDosePerPeriod MedicationAdministered maps to MedicationAdministration: -// SourceOfInformation.Value maps to informationSource + Metadata.OriginatorOrSource maps to perfomer.actor Patient maps to patient // DSTU 2 change (name change) Encounter maps to encounter @@ -75,7 +75,7 @@ MedicationAdministered maps to MedicationAdministration: MedicationNotAdministered maps to MedicationAdministration: -// SourceOfInformation.Value maps to informationSource + constrain performer to 0..0 Medication maps to medication[x] // DSTU 2 change (no such attribute) // Category maps to category diff --git a/spec/shr_medication_map_stu3.txt b/spec/shr_medication_map_stu3.txt index ba8686b6..0789eecb 100644 --- a/spec/shr_medication_map_stu3.txt +++ b/spec/shr_medication_map_stu3.txt @@ -14,8 +14,8 @@ Dosage maps to Dosage: MaximumDosePerTimePeriod maps to maxDosePerPeriod MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: -// SourceOfInformation.Value maps to informationSource -// _Entry.CreationTime maps to dateAsserted // however, date asserted and date recorded may not be the same + Metadata.OriginatorOrSource maps to informationSource + Metadata.AuthoredDateTime maps to dateAsserted Patient maps to subject constrain reasonNotTaken to 0..0 constrain dosage to 0..1 @@ -28,7 +28,7 @@ MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c Status maps to status MedicationAdministered maps to MedicationAdministration: -// SourceOfInformation.Value maps to informationSource + Metadata.OriginatorOrSource maps to performer.actor Patient maps to subject Encounter maps to context RelatedRequest maps to prescription @@ -46,7 +46,7 @@ MedicationAdministered maps to MedicationAdministration: Participation.OnBehalfOf maps to performer.onBehalfOf MedicationNotAdministered maps to MedicationAdministration: -// SourceOfInformation.Value maps to informationSource + constrain performer to 0..0 Medication maps to medication[x] Category maps to category fix notGiven to true diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 4ce5ed3f..904fcf7a 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -209,10 +209,8 @@ Based on: Observation Description: "A simplified observation for social histories." Category is OBSCAT#social-history 0..1 FocalSubjectModifier -//0..0 SourceOfInformation 0..0 FindingMethod 0..0 AnatomicalLocation -//0..0 Precondition 0..0 ReferenceRange 0..0 PanelMembers 0..0 Device diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 4b5093e6..be8021fe 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -15,8 +15,7 @@ Description: "A procedure that has been performed." 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation 0..1 Reason -0..1 Method -//0..* Precondition +0..1 Method 0..* InputFinding 0..* Indication 0..* ref(Device) @@ -73,7 +72,6 @@ Based on: ActionRequested 0..* Annotation 0..1 Reason 0..1 Method -//0..* Precondition 0..* InputFinding 0..* Indication 0..* ref(Device) diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 61881556..dd0632bb 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -58,8 +58,8 @@ SurgicalProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefi ProcedureRequested maps to ProcedureRequest: -// _Entry.CreationTime maps to authoredOn -// _Entry.SignedBy.Value.EntityOrRole maps to requester + Metadata.AuthoredDateTime maps to authoredOn + Metadata.OriginatorOrSource maps to requester ProcedureCode maps to code // DSTU 2 change (no such attribute) // Category maps to category @@ -83,8 +83,8 @@ ProcedureRequestedAgainst maps to Basic: /* In DSTU 2, there is not way to specify a procedure NOT to perform using Procedure resource fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal - _Entry.CreationTime maps to authoredOn - _Entry.SignedBy.Value.EntityOrRole maps to requester + Metadata.AuthoredDateTime maps to authoredOn + Metadata.OriginatorOrSource maps to requester ProcedureCode maps to code Category maps to category Patient maps to subject diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index 6a803101..e71efa7e 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -54,8 +54,8 @@ SurgicalProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefiniti ProcedureRequested maps to ProcedureRequest: -// _Entry.CreationTime maps to authoredOn -// _Entry.SignedBy.Value.EntityOrRole maps to requester + Metadata.AuthoredDateTime maps to authoredOn + Metadata.OriginatorOrSource maps to requester ProcedureCode maps to code Category maps to category constrain doNotPerform to 0..0 @@ -73,8 +73,8 @@ ProcedureRequested maps to ProcedureRequest: ProcedureRequestedAgainst maps to ProcedureRequest: fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal - _Entry.CreationTime maps to authoredOn - _Entry.SignedBy.Value.EntityOrRole maps to requester + Metadata.AuthoredDateTime maps to authoredOn + Metadata.OriginatorOrSource maps to requester ProcedureCode maps to code Category maps to category Patient maps to subject diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 2b7aa938..599f6ef4 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -80,7 +80,6 @@ The WoundIdentifier serves as a link between this assertion and assessments of t 0..0 Criticality 0..0 Certainty 0..0 Device -//0..0 Precondition Element: WoundIdentifier Based on: ObjectIdentifier From 51c3555b1182e2d0316f3557ab687fa898ac9ccc Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sun, 9 Dec 2018 13:06:37 -0500 Subject: [PATCH 133/289] Fixed to genetics --- spec/shr_base_finding.txt | 1 - spec/shr_core.txt | 2 +- spec/shr_entity.txt | 7 +-- spec/shr_entity_map_dstu2.txt | 6 +-- spec/shr_entity_map_stu3.txt | 6 +-- spec/shr_genetics.txt | 75 +++++++++++++++++---------------- spec/shr_genetics_map_dstu2.txt | 12 ------ spec/shr_genetics_map_stu3.txt | 13 +++--- spec/shr_genetics_vs.txt | 10 +++++ spec/shr_occupation.txt | 1 - spec/shr_oncologycore.txt | 9 ---- spec/shr_wound.txt | 2 +- 12 files changed, 65 insertions(+), 79 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index c82543e8..df55c9d2 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -106,7 +106,6 @@ For an Observation, the FindingTopicCode describes the aspect or property of the 0..1 Interpretation 0..1 Device 0..1 Specimen -0..* Media // needed in Wound assessment 0..1 PanelMembers Element: Observer diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 12db25a7..ddfa203d 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -690,7 +690,7 @@ Description: "A file that contains audio, video, image, or similar content." Element: PhotographicImage Based on: Media -Concept: LNC#72170-4 +Concept: LNC#72170-4 "Photographic image [Media]" // ContentType from ImageMimeTypeVS if covered Element: Annotation diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index d09c00f2..72f085d3 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -276,7 +276,7 @@ Description: "A person relevant to the health or social situation of the subject 0..1 DateOfBirth 1..1 AdministrativeGender 0..* Address -0..* Photo +0..* PhotographicImage 0..* ContactPoint 0..* LanguageUsed 0..1 ActiveFlag @@ -435,11 +435,6 @@ Description: "A person relevant to the health or social situation of the subject Concept: MTH#C1550327 Description: "A gender classification used for administrative purposes. Administrative gender is not necessarily the same as a biological description or a gender identity. This attribute does not include terms related to clinical gender." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/administrative-gender - - Element: Photo - Concept: TBD - Description: "A photograph showing a person's face." - Value: Media Element: LanguageUsed // needs to be aligned with CCDA 2.1 Concept: TBD diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index bed0b7c7..bdc663a4 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -6,7 +6,7 @@ Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient Person.ActiveFlag maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender - Person.Photo maps to photo + Person.PhotographicImage maps to photo Person.Address maps to address Person.ContactPoint maps to telecom Person.LanguageUsed.Language maps to communication @@ -27,7 +27,7 @@ Practitioner maps to Practitioner: // dstu 2 change (different mapping target) Person.ActiveFlag maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender - Person.Photo maps to photo + Person.PhotographicImage maps to photo Person.Address maps to address Person.ContactPoint maps to telecom Person.LanguageUsed.Language maps to communication @@ -43,7 +43,7 @@ RelatedPerson maps to RelatedPerson: Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender Person.Address maps to address - Person.Photo maps to photo + Person.PhotographicImage maps to photo Person.ContactPoint maps to telecom RelationshipToPersonOfRecord maps to relationship EffectiveTimePeriod maps to period diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index dec0ede4..7580e89c 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -6,7 +6,7 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: Person.ActiveFlag maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender - Person.Photo maps to photo + Person.PhotographicImage maps to photo Person.Address maps to address Person.ContactPoint maps to telecom Person.LanguageUsed.Language maps to communication @@ -27,7 +27,7 @@ Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-pra Person.ActiveFlag maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender - Person.Photo maps to photo + Person.PhotographicImage maps to photo Person.Address maps to address Person.ContactPoint maps to telecom Person.LanguageUsed.Language maps to communication @@ -43,7 +43,7 @@ RelatedPerson maps to RelatedPerson: Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender Person.Address maps to address - Person.Photo maps to photo + Person.PhotographicImage maps to photo Person.ContactPoint maps to telecom RelationshipToPersonOfRecord maps to relationship EffectiveTimePeriod maps to period diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index e0bf43e6..2833efa9 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -13,59 +13,62 @@ CodeSystem: UCUM = http://unitsofmeasure.org * Markers can apply to multiple cancer types, and potentially other non-cancer diseases. * Must model this in a way that constrains biomarkers by cancer type in each value set. */ -EntryElement: GeneticMarker -Based on: Observation -Concept: MTH#C0017393 -Description: "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Thesaurus)" +EntryElement: GeneticVariantTestResult +Based on: LaboratoryObservation +Concept: MTH#C0017393 // should be a finding (Q+A), not an observable +Description: "A finding with respect to variation in a segment of DNA with an identifiable physical location on a chromosome." FindingTopicCode is MTH#C0017393 "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Metathesaurus)" - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) - Interpretation from PositiveNegativeEquivocalVS // this might not be true for all markers. -0..0 Media +0..0 FindingResult // panel, no numerical or coded result + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) // maybe. More likely just the specimen +// What gene are we looking at? +0..1 GenomicSourceClass +0..1 GeneName +0..1 DNARegionName +// Results, interpretation + Interpretation from PositiveNegativeEquivocalVS // this might not be appropriate for all markers. Could this be the clinical significance? +0..1 DNASequenceVariantName +0..1 DNASequenceVariantId +0..1 DNASequenceVariantType 0..0 AnatomicalLocation -0..1 CommentOrDescription - NonIndependentFinding -includes 0..1 Gene // aligning property names with the FHIR Cancer Genomics IG -includes 0..1 GenomicSourceClass -includes 0..1 DNARegionName -includes 0..1 DNASequenceVariantId -includes 0..1 DNASequenceVariantName 0..0 PanelMembers.Observation -Element: Gene -Concept: LNC#48018-6 "Gene studied [ID]" -Based on: CodedNonIndependentFinding -Description: "HUGO Gene Nomenclature Committee (HGNC) identifier for a gene. (source: LOINC)" - FindingTopicCode is LNC#48018-6 "Gene studied [ID]" - FindingResult from http://www.genenames.org - // interpretation LOINC preferred answer list LL378-1 for LNC#48018-6. - Element: GenomicSourceClass Concept: LNC#48002-0 "Genomic source class [Type]" -Based on: CodedNonIndependentFinding Description: "The genomic class of the specimen being analyzed: Germline for inherited genome, somatic for cancer genome, and prenatal for fetal genome. (source: LOINC)" - FindingTopicCode is LNC#48002-0 "Genomic source class [Type]" - FindingResult from GenomicSourceClassVS // LOINC preferred answer list for LNC#48002-0. +Value: CodeableConcept from GenomicSourceClassVS // LOINC preferred answer list for LNC#48002-0. + +Element: GeneName +Concept: LNC#48018-6 "Gene studied [ID]" +Description: "HUGO Gene Nomenclature Committee (HGNC) identifier for a gene. (source: LOINC)" +Value: CodeableConcept from http://www.genenames.org + // interpretation LOINC preferred answer list LL378-1 for LNC#48018-6. Element: DNARegionName Concept: LNC#47999-8 "DNA region name [Identifier]" +Description: "A human readable name for the region of interest. Typically Exon #, Intron # or other. NOTE: This is not standardized and is mainly for convenience and display purposes." +Value: string + +Element: DNASequenceVariantName Based on: NonIndependentFinding -Description: "A human readable name for the region of interest. Typically Exon #, Intron # or other. (source: LOINC)" - FindingTopicCode is LNC#47999-8 "DNA region name [Identifier]" - FindingResult value is type string +Concept: LNC#48004-6 "DNA change (c.HGVS)" +Description: "Human Genome Variation Society (HGVS) nomenclature for a single DNA marker. The use of the nomenclature must be extended to describe non-variations (aka. wild types) see samples for wild type examples. (source: LOINC)" + FindingTopicCode is LNC#48004-6 "DNA change (c.HGVS)" + FindingResult value is type string Element: DNASequenceVariantId -Concept: LNC#48003-8 "DNA sequence variation identifier [Identifier]" Based on: NonIndependentFinding +Concept: LNC#48003-8 "DNA sequence variation identifier [Identifier]" Description: "A DNA Marker identifier conveys a universal or standard repository identifier for definitive characterstics of a DNA Marker. (recommend using NCBI dbSNP ids - rs#) (source: LOINC)" FindingTopicCode is LNC#48003-8 "DNA sequence variation identifier [Identifier]" - FindingResult value is type string + FindingResult value is type string + +Element: DNASequenceVariantType +Based on: CodedNonIndependentFinding +Concept: LNC#48005-3 "DNA change type" +Description: "Codified type for associated DNA Marker. DNA Marker's use the HGVS notation which implies the DNA Marker Type, but the concurrent use of this code will allow a standard and explicit type for technical and display convenience." + FindingTopicCode is LNC#48005-3 "DNA change type" + FindingResult from DNAChangeTypeVS -Element: DNASequenceVariantName -Concept: LNC#48004-6 "DNA change (c.HGVS)" -Based on: NonIndependentFinding -Description: "Human Genome Variation Society (HGVS) nomenclature for a single DNA marker. The use of the nomenclature must be extended to describe non-variations (aka. wild types) see samples for wild type examples. (source: LOINC)" - FindingTopicCode is LNC#48004-6 "DNA change (c.HGVS)" - FindingResult value is type string EntryElement: TumorMarker Based on: CodedLaboratoryObservation diff --git a/spec/shr_genetics_map_dstu2.txt b/spec/shr_genetics_map_dstu2.txt index 01a8fa37..85db91bd 100644 --- a/spec/shr_genetics_map_dstu2.txt +++ b/spec/shr_genetics_map_dstu2.txt @@ -1,15 +1,3 @@ Grammar: Map 5.1 Namespace: oncocore Target: FHIR_DSTU_2 - -GeneticMarker maps to http://hl7.org/fhir/StructureDefinition/genetics: - Patient maps to subject - Category maps to category - CommentOrDescription maps to comments - -Gene maps to http://hl7.org/fhir/StructureDefinition/geneticsGene: - // FindingResult maps to extension.valueCodeableConcept (slice at = extension; slice # = 15) - FindingResult maps to value[x] - -// GenomicSourceClass maps to http://hl7.org/fhir/StructureDefinition/geneticsGenomicSourceClass: -// FindingResult maps to valueCodeableConcept \ No newline at end of file diff --git a/spec/shr_genetics_map_stu3.txt b/spec/shr_genetics_map_stu3.txt index 2bb9443e..f4bb9180 100644 --- a/spec/shr_genetics_map_stu3.txt +++ b/spec/shr_genetics_map_stu3.txt @@ -2,10 +2,11 @@ Grammar: Map 5.1 Namespace: oncocore Target: FHIR_STU_3 -GeneticMarker maps to http://hl7.org/fhir/StructureDefinition/genetics: - Patient maps to subject - Category maps to category -Gene maps to http://hl7.org/fhir/StructureDefinition/geneticsGene: - // FindingResult maps to extension.valueCodeableConcept (slice at = extension; slice # = 15) - FindingResult maps to value[x] \ No newline at end of file +GeneticVariantTestResult maps to http://hl7.org/fhir/StructureDefinition/observation-genetics: + GenomicSourceClass maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsGenomicSourceClass + GeneName maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsGene + DNARegionName maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsDNARegionName + DNASequenceVariantName maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsDNASequenceVariantName + DNASequenceVariantId maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsDNAVariantId + DNASequenceVariantType maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsDNASequenceVariantType diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index 3f2c473f..7156ebc1 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -26,6 +26,16 @@ LNC#LA18196-8 "Likely fetal" LNC#LA18197-6 "Unknown genomic origin" LNC#LA26807-0 "De novo" +ValueSet: DNAChangeTypeVS +Description: "Codified type for associated DNA Marker. DNA Marker's use the HGVS notation which implies the DNA Marker Type, but the concurrent use of this code will allow a standard and explicit type for technical and display convenience. Corresponds to LOINC preferred answer list LL379-9." +LNC#LA9658-1 "WildType" +LNC#LA6692-3 "Deletion" +LNC#LA6686-5 "Duplication" +LNC#LA6687-3 "Insertion" +LNC#LA6688-1 "Insertion/Deletion" +LNC#LA6689-9 "Inversion" +LNC#LA6690-7 "Substitution" + ValueSet: TumorMarkerVS Description: "A tumor marker is a substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. This value set of LOINC codes will include a comprehensive list of tumor markers across all cancers, and regardless of method or specimen type. Subsets specific to a cancer type will be created as needed." // as a prototype, only a couple of examples of tumor markers will be included in this list. diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 904fcf7a..33d4cf84 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -215,7 +215,6 @@ Description: "A simplified observation for social histories." 0..0 PanelMembers 0..0 Device 0..0 Specimen -0..0 Media 0..0 ExceptionValue 0..0 Interpretation 0..0 Encounter diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index d4b8e208..35314fbc 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -68,7 +68,6 @@ Concept: SCT#258232002 "Cancer staging (tumor staging)" 0..0 ExceptionValue 0..0 DeltaFlag 0..0 ReferenceRange - 0..0 Media 0..0 AnatomicalLocation 0..0 Specimen 0..0 Device @@ -128,7 +127,6 @@ Description: "Detailed site-specific codes for the clinical tumor (T) as defi SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange 0..0 DeltaFlag -0..0 Media 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered @@ -145,7 +143,6 @@ Description: "" //TODO: pull from LOINC SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange 0..0 DeltaFlag -0..0 Media 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered @@ -162,7 +159,6 @@ Description: "" //TODO: pull from LOINC FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" 0..0 ReferenceRange 0..0 DeltaFlag -0..0 Media 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered SpecificFocusOfFinding value is type ref(CancerDisorderPresent) @@ -178,7 +174,6 @@ Description: "" //TODO: pull from LOINC FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" 0..0 ReferenceRange 0..0 DeltaFlag -0..0 Media 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered @@ -196,7 +191,6 @@ Description: "" //TODO: pull from LOINC SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange 0..0 DeltaFlag -0..0 Media 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered @@ -214,7 +208,6 @@ Description: "" //TODO: pull from LOINC SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange 0..0 DeltaFlag -0..0 Media 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered @@ -258,7 +251,6 @@ Concept: LNC#89247-1 "ECOG Performance Status score" FindingResult value is type IntegerQuantity //0..0 ReferenceRange // set to 0 to 5 0..0 SpecificFocusOfFinding -0..0 Media 0..0 AnatomicalLocation 0..0 Device Interpretation from http://loinc.org/vs/LL529-9 @@ -269,7 +261,6 @@ Description: "The Karnofsky Performance Status (KPS) is a tool used to measure a Concept: LNC#89243-0 "Karnofsky Performance Status panel" FindingResult value is type IntegerQuantity 0..0 SpecificFocusOfFinding -0..0 Media 0..0 AnatomicalLocation 0..0 Device // ReferenceRange.Range.LowerBound.Quantity.Number is 0.0 diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 599f6ef4..ddf251e5 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -123,7 +123,7 @@ Description: "Group of observations regarding the properties and severity of a w 0..0 Device FindingTopicCode is LNC#39135-9 0..0 ReferenceRange - Media is type PhotographicImage // 72170-4 Photographic image [Media] +0..* Media is type PhotographicImage // 72170-4 Photographic image [Media] NonIndependentFinding includes 0..1 WoundEpisode // very similar to Episodicity or ClinicalStatus, but value set is different. includes 0..1 WoundTrend From 894a484b99e68168ad7672b381053e4ed50dff5a Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 10 Dec 2018 18:10:58 -0500 Subject: [PATCH 134/289] A bunch of changes to promote accurate mapping --- spec/ig-breast-config.json | 6 ++-- spec/ig-odh-config.json | 9 +++--- spec/ig-oncocore-config.json | 6 ++-- spec/ig-shr-config.json | 6 ++-- spec/ig-wound-config.json | 9 +++--- spec/shr_allergy.txt | 2 +- spec/shr_allergy_map_dstu2.txt | 4 +-- spec/shr_allergy_map_stu3.txt | 2 +- spec/shr_base.txt | 52 +++++++++++++------------------ spec/shr_base_action.txt | 15 ++++++--- spec/shr_base_finding.txt | 41 +++++++++++------------- spec/shr_base_map_dstu2.txt | 13 ++++---- spec/shr_base_map_stu3.txt | 11 +++---- spec/shr_brca.txt | 20 ++---------- spec/shr_core.txt | 2 +- spec/shr_core_map_dstu2.txt | 2 +- spec/shr_core_map_stu3.txt | 2 +- spec/shr_encounter_map_dstu2.txt | 1 - spec/shr_encounter_map_stu3.txt | 1 - spec/shr_entity.txt | 10 ++---- spec/shr_entity_map_dstu2.txt | 2 -- spec/shr_entity_map_stu3.txt | 2 -- spec/shr_familyhistory.txt | 1 - spec/shr_genetics.txt | 9 +++--- spec/shr_genetics_map_dstu2.txt | 18 +++++++++++ spec/shr_intervention.txt | 2 -- spec/shr_medication.txt | 11 ++----- spec/shr_medication_map_dstu2.txt | 3 +- spec/shr_medication_map_stu3.txt | 4 +-- spec/shr_occupation.txt | 2 +- spec/shr_oncologycore.txt | 44 +++++--------------------- spec/shr_procedure.txt | 13 ++++---- spec/shr_procedure_map_dstu2.txt | 9 +++--- spec/shr_procedure_map_stu3.txt | 4 +-- spec/shr_tumor.txt | 1 - spec/shr_wound.txt | 1 - 36 files changed, 141 insertions(+), 199 deletions(-) diff --git a/spec/ig-breast-config.json b/spec/ig-breast-config.json index 7082c6af..2549f4f1 100644 --- a/spec/ig-breast-config.json +++ b/spec/ig-breast-config.json @@ -1,9 +1,9 @@ { "projectName": "HL7 FHIR Implementation Guide: Breast Cancer Data, Release 1 - US Realm (Draft for Comment 2)", "projectShorthand": "BC", - "projectURL": "http://hl7.org/fhir/us/breastcancer/", - "fhirURL": "http://hl7.org/fhir/us/breastcancer/", - "entryTypeURL": "http://hl7.org/fhir/us/breastcancer/spec/", + "projectURL": "http://hl7.org/fhir/us/projectURL/", + "fhirURL": "http://hl7.org/fhir/us/fhirURL/", + "entryTypeURL": "http://hl7.org/fhir/us/entryTypeURL/spec", "fhirTarget": "FHIR_STU_3", "implementationGuide": { diff --git a/spec/ig-odh-config.json b/spec/ig-odh-config.json index bfc12f47..8d859a19 100644 --- a/spec/ig-odh-config.json +++ b/spec/ig-odh-config.json @@ -1,9 +1,9 @@ { "projectName": "HL7 FHIR Profile: Occupational Data for Health (ODH), Release 1 (Standard for Trial Use)", "projectShorthand": "ODH", - "projectURL": "http://hl7.org/fhir/us/odh", - "fhirURL": "http://hl7.org/fhir/us/odh", - "entryTypeURL": "http://hl7.org/fhir/us/odh/spec", + "projectURL": "http://hl7.org/fhir/us/projectURL/", + "fhirURL": "http://hl7.org/fhir/us/fhirURL/", + "entryTypeURL": "http://hl7.org/fhir/us/entryTypeURL/spec", "fhirTarget": "FHIR_STU_3", "implementationGuide": { @@ -11,7 +11,8 @@ "version": "1.0.0", "includeLogicalModels": true, "includeModelDoc": false, - "indexContent": "LandingPageOccupation.html", + "indexContent": "LandingPageOccupation.html", + "historyLink": "http://hl7.org/fhir/us/odh/history.html", "primarySelectionStrategy": { "strategy": "namespace", diff --git a/spec/ig-oncocore-config.json b/spec/ig-oncocore-config.json index e209cea9..d0836daf 100644 --- a/spec/ig-oncocore-config.json +++ b/spec/ig-oncocore-config.json @@ -1,9 +1,9 @@ { "projectName": "HL7 FHIR Implementation Guide: Core Oncology Data Elements, Release 1 - US Realm (Draft for Comment 1)", "projectShorthand": "oncocore", - "projectURL": "http://hl7.org/fhir/us/oncocore/", - "fhirURL": "http://hl7.org/fhir/us/oncocore/", - "entryTypeURL": "http://hl7.org/fhir/us/oncocore/spec/", + "projectURL": "http://hl7.org/fhir/us/projectURL/", + "fhirURL": "http://hl7.org/fhir/us/fhirURL/", + "entryTypeURL": "http://hl7.org/fhir/us/entryTypeURL/spec/", "fhirTarget": "FHIR_DSTU_2", "implementationGuide": { diff --git a/spec/ig-shr-config.json b/spec/ig-shr-config.json index edb34c3d..ae16aba0 100644 --- a/spec/ig-shr-config.json +++ b/spec/ig-shr-config.json @@ -1,9 +1,9 @@ { "projectName": "Standard Health Record", "projectShorthand": "SHR", - "projectURL": "http://standardhealthrecord.org", - "fhirURL": "http://standardhealthrecord.org/fhir", - "entryTypeURL": "http://standardhealthrecord.org/spec/", + "projectURL": "http://hl7.org/fhir/us/projectURL/", + "fhirURL": "http://hl7.org/fhir/us/fhirURL/", + "entryTypeURL": "http://hl7.org/fhir/us/entryTypeURL/spec", "fhirTarget": "FHIR_DSTU_2", "implementationGuide": { diff --git a/spec/ig-wound-config.json b/spec/ig-wound-config.json index 8a2e7248..de37c11a 100644 --- a/spec/ig-wound-config.json +++ b/spec/ig-wound-config.json @@ -1,9 +1,9 @@ { "projectName": "HL7 FHIR Profile: Skin and Wound Assessment, Release 1 (For Comment)", "projectShorthand": "SW", - "projectURL": "http://hl7.org/fhir/us/sw", - "fhirURL": "http://hl7.org/fhir/us/sw", - "entryTypeURL": "http://hl7.org/fhir/us/sw/spec", + "projectURL": "http://hl7.org/fhir/us/projectURL/", + "fhirURL": "http://hl7.org/fhir/us/fhirURL/", + "entryTypeURL": "http://hl7.org/fhir/us/entryTypeURL/spec", "fhirTarget": "FHIR_STU_3", "provinenceInfo": { "leadAuthor": { @@ -38,7 +38,8 @@ "version": "1.0.0", "includeLogicalModels": true, "includeModelDoc": true, - "indexContent": "LandingPageWound.html", + "indexContent": "LandingPageWound.html", + "historyLink": "http://hl7.org/fhir/us/sw/history.html", "primarySelectionStrategy": { "strategy": "namespace", diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index b694fbcd..114d0e53 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -12,7 +12,7 @@ Based on: Finding Concept: SCT#473010000 "Hypersensitivity condition (disorder)" // or SCT#420134006 "Propensity to adverse reactions (disorder)"? Description: "A finding related to the presence of an individual's risk or sensitivity to a substance or class of substances. An AllergyIntolerancePresent finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time. Per US Core specification, the result includes SNOMED codes representing 'No known allergy'. In AllergyIntolerance, the reactions are included in-line, rather than referencing to conditions (in notable contrast to AdverseEvent)." - Metadata.OriginatorOrSource value is type PatientOrPractitionerOrRelatedPerson + Metadata.InformationSource value is type PatientOrPractitionerOrRelatedPerson Metadata.InformationRecorder value is type PatientOrPractitioner // FHIR only allows Patient or Practitioner as recorder 1..1 Patient diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index d3196126..3f1b3ac2 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -5,7 +5,7 @@ Target: FHIR_DSTU_2 AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: Patient maps to patient - Metadata.OriginatorOrSource maps to asserter + Metadata.InformationSource maps to asserter Metadata.InformationRecorder maps to recorder Metadata.AuthoredDateTime maps to assertedDate FindingResult maps to substance @@ -30,7 +30,7 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a /* NoAdverseSensitivityToSubstance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: Patient maps to patient - Metadata.OriginatorOrSource maps to asserter + Metadata.InformationSource maps to asserter Metadata.InformationRecorder maps to recorder Metadata.AuthoredDateTime maps to assertedDate AdverseSensitivityTopic.TopicCode maps to code diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index 75651307..27223a67 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: Patient maps to patient Patient maps to patient - Metadata.OriginatorOrSource maps to asserter + Metadata.InformationSource maps to asserter Metadata.InformationRecorder maps to recorder Metadata.AuthoredDateTime maps to assertedDate FindingResult maps to code diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 0eba2d0f..347580d8 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -24,7 +24,7 @@ Description: "Obsolete. Use InformationItem" Abstract Element: InformationItem Concept: MTH#C1705654 Description: "Parent class for any item in clinical or administrative health-related system. Contains metadata attributes that apply to any item represented in the standard health record. An InformationItem can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." -1..1 EntryId +0..1 EntryId 0..1 Narrative 0..1 Language 0..1 Metadata @@ -55,14 +55,14 @@ Element: Metadata Concept: TBD Description: "Elements that belong to all information items." 0..1 VersionId -1..1 EntryType // would EntryConformance be clearer? -0..1 RecordStatus +0..1 LastUpdated +0..* EntryType // would EntryConformance be clearer? 0..* SecurityLabel 0..* Tag -0..1 OriginatorOrSource +//0..1 RecordStatus +0..1 InformationSource 0..1 InformationRecorder 0..1 AuthoredDateTime -1..1 LastUpdated Element: EntryType // Would EntryClass be clearer? Concept: TBD @@ -70,7 +70,7 @@ Description: "Elements that belong to all information items." Value: uri Element: RecordStatus - Description: "Concept indicating the state of this record, e.g., 'entered in error'." + Description: "Concept indicating the state of this record, e.g., entered in error." Value: CodeableConcept Element: SecurityLabel @@ -83,46 +83,46 @@ Description: "Elements that belong to all information items." Description: "A code used to relate entries to categories or workflows. Applications are not required to consider the tags when interpreting the meaning of an entry." Value: CodeableConcept - Element: OriginatorOrSource + Element: InformationSource Concept: TBD Description: "The origin or source of the information or request: a practitioner, patient, related person, organization, another health record, an algorithm, device, etc." - Value: Attribution + Value: Participant // TODO: might have to change to Participation Element: InformationRecorder Concept: TBD Description: "The recorder of the information, if other than the information originator. For example, the nurse taking a list of medications reported by the patient." - Value: Attribution + Value: Participant // TODO: might have to change to Participation - Element: Attribution - Description: "Information ascribing the record to a particular contributor or responsible person." - Value: ref(EntityOrRole) + Element: Participant + Concept: MTH#C1550369 + Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." + Value: ref(EntityOrRole) Element: PatientOrPractitioner - Based on: Attribution + Based on: Participant Description: "A choice of Patient or Practitioner. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) Element: PatientOrPractitionerOrRelatedPerson - Based on: Attribution + Based on: Participant Description: "A choice of Patient, Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping AdverseEvent.SignedBy to FHIR AdverseEvent." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) Element: PractitionerOrRelatedPerson - Based on: Attribution + Based on: Participant Description: "A choice of Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping EncounterPerformed.Participant to FHIR Encounter.participant.individual" Value: ref(Practitioner) or ref(RelatedPerson) Element: PersonOrOrganization - Based on: Attribution + Based on: Participant Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Organization) Element: PersonOrDevice - Based on: Attribution + Based on: Participant Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Device) - Element: AuthoredDateTime Concept: TBD Description: "The time the information was recorded; usually, when the information item was created." @@ -167,25 +167,15 @@ Description: "A composition represents a set of Entries sharing common provenanc Element: SignedBy Description: "Provenance information specific to the signing of the clinical statement." - Value: Attribution + Value: Participant Element: CosignedBy Description: "Provenance information specific to the cosigning of the clinical statement." - Value: Attribution + Value: Participant Element: VerifiedBy Description: "Provenance information specific to the verification process associated with this statement (e.g., verifier, when verified, etc.)" - Value: Attribution - - Element: Attribution - Description: "Information ascribing the record to a particular contributor or responsible person." - 1..1 EntityOrRole // TODO: change to Participant - 0..1 RecordedOn - 0..1 Signature - - Element: RecordedOn - Description: "The time of the attribution action." - Value: instant + Value: Participant */ diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 94b35b2e..b28b093c 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -37,11 +37,6 @@ Description: "Abstract class representing performance of any type of action." 0..1 ParticipationType // role 0..1 ParticipationPeriod 0..1 OnBehalfOf - - Element: Participant - Concept: MTH#C1550369 - Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." - Value: ref(EntityOrRole) Element: ParticipationType Concept: MTH#C1553854 @@ -80,6 +75,7 @@ Abstract Element: ActionRequested Based on: ActionStatement Description: "Abstract class representing a request for any type of action." 1..1 Status //should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) +0..1 Requester 1..1 RequestIntent 0..1 ExpectedPerformanceTime 0..1 ExpectedPerformerType @@ -90,6 +86,11 @@ Description: "Abstract class representing a request for any type of action." 0..1 PatientInstructions 0..1 CommunicationMethod + Element: Requester + Based on: Participant + Concept: TBD + Description: "The actor making this request." + Element: RequestIntent Concept: TBD Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." @@ -130,6 +131,10 @@ Description: "Abstract class representing a request for any type of action." Description: "This is the method the provider used to communicate. Examples include: Written, Telephoned, Verbal, Electronically Entered, Policy, Service Correction, Duplicate, etc. 'Code indicating the origin of the prescription.' - NCPDP Telecommunication (Field 419-DJ, Data Dictionary 201104). Possible values include: Written; Telephone; Electronic; Facsimile; Pharmacy; Not Known." Value: CodeableConcept + Element: PractitionerOrDevice + Based on: Requester + Description: "A choice of Practitioner or Device. Needed for mapping to FHIR." + Value: ref(Practitioner) or ref(Device) Abstract Element: ActionNotPerformed Based on: ActionStatement diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index df55c9d2..08d83574 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -93,13 +93,11 @@ Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments. For an Observation, the FindingTopicCode describes the aspect or property of the subject being observed or measured. The FindingTopicCode is the 'question code' that pairs to the 'answer' contained in the Value." -//0..0 Observer 0..1 FindingMethod 0..1 RelevantTime 0..* NonIndependentFinding -// FindingStatus value is type code FindingStatus from http://hl7.org/fhir/ValueSet/observation-status -0..1 DeltaFlag +//0..1 DeltaFlag 0..1 Category from http://hl7.org/fhir/ValueSet/observation-category if covered // MK Category cardinality from 0..* to 0..1 to be compatible with DSTU 2 0..1 AnatomicalLocation 0..1 CommentOrDescription @@ -187,12 +185,6 @@ Description: "A coded finding based on a specimen collected from a patient." 1..1 Specimen 0..0 AnatomicalLocation // Location is determined indirectly from Specimen.CollectionSite Category is OBSCAT#laboratory -0..* DiagnosticService - - Element: DiagnosticService - Concept: TBD - Description: "The service completing the observations, e.g. biochemistry, microbiology, blood bank." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/diagnostic-service-sections if covered EntryElement: CodedLaboratoryObservation Based on: LaboratoryObservation @@ -219,12 +211,11 @@ Based on: Finding Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place. For assertions, the FindingTopicCode represents the thing asserted to be present or absent; i.e., the type of condition, event, relationship or phenomenon that is being asserted to exist or not exist." FindingTopicCode is type ConditionOrDiagnosisCode - FindingResult value is type CodeableConcept - FindingResult from PresentAbsentVS + FindingResult is type PresentOrAbsent // Leave ExceptionValue in, to represent the case where the presence or absence of something was not evaluated 0..0 ReferenceRange 0..1 ObjectIdentifier // TODO: 0..* business identifier? -0..1 Certainty +//0..1 Certainty FindingStatus value is type CodeableConcept Element: ConditionOrDiagnosisCode @@ -232,6 +223,11 @@ For assertions, the FindingTopicCode represents the thing asserted to be present Description: "A specific code for the condition being determined to be present or absent." Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make the binding weaker because US Core requires an extensible binding + Element: PresentOrAbsent + Based on: FindingResult + Description: "A specific code for the condition being determined to be present or absent." + Value: CodeableConcept from PresentAbsentVS + Element: ObjectIdentifier Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." Value: Identifier @@ -245,38 +241,39 @@ Abstract Element: PresenceAssertion Based on: ExistenceAssertion Description: "Finding that a phenomena is present." // TODO: Not sure we should have to say .CodeableConcept for the constraint below to work (currently causes error) -1..1 FindingResult.CodeableConcept is SCT#52101004 "Present (qualifier value)" +1..1 PresentOrAbsent is SCT#52101004 "Present (qualifier value)" 0..0 ExceptionValue -0..1 Certainty from PresenceCertaintyVS +//0..1 Certainty from PresenceCertaintyVS Abstract Element: AbsenceAssertion Based on: ExistenceAssertion Description: "Finding that an entity, person, role, condition, or phenomenon is absent." -1..1 FindingResult.CodeableConcept is SCT#2667000 "Absent (qualifier value)" +1..1 PresentOrAbsent is SCT#2667000 "Absent (qualifier value)" 0..0 ExceptionValue -0..1 Certainty from AbsenceCertaintyVS +//0..1 Certainty from AbsenceCertaintyVS EntryElement: ConditionPresentAssertion Based on: PresenceAssertion Concept: TBD Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." - Metadata.OriginatorOrSource value is type ref(PatientOrPractitionerOrRelatedPerson) + Metadata.InformationSource value is type ref(PatientOrPractitionerOrRelatedPerson) 1..1 Patient 0..0 SpecificFocusOfFinding // maybe a family member? -0..1 FindingMethod 1..1 Category from ConditionCategoryVS // DSTU 2 change - category is 1..1 in Argonaut 0..* AnatomicalLocation -//0..* ConditionCause MK - reduce clutter 1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical -//0..1 WhenClinicallyRecognized MK - reduce clutter -//0..1 PresentOnAdmission 0..1 Severity from http://hl7.org/fhir/ValueSet/condition-severity -0..1 Criticality 0..1 StageInformation 0..1 Onset 0..1 Abatement // TODO: change abatement to an Observation +// Stuff from CIMI eliminated +//0..1 FindingMethod +//0..1 WhenClinicallyRecognized +//0..1 PresentOnAdmission +//0..* ConditionCause +//0..1 Criticality Element: ConditionCause Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 81e1ff5e..71553a48 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -8,7 +8,6 @@ InformationItem maps to DomainResource: EntryId maps to id Language maps to language Narrative maps to text - constrain meta to 1..1 Metadata.VersionId maps to meta.versionId Metadata.EntryType maps to meta.profile Metadata.LastUpdated maps to meta.lastUpdated @@ -25,7 +24,7 @@ Narrative maps to Narrative: Observation maps to Observation: Patient maps to subject -// Metadata.OriginatorOrSource maps to performer +// Metadata.InformationSource maps to performer FindingTopicCode maps to code FindingMethod maps to method // dstu 2 change (name change) @@ -63,12 +62,12 @@ Observation maps to Observation: RelevantTime maps to effective[x] // dstu 2 change (name change) Encounter maps to encounter - DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta +// DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-observationresults: // dstu2 different mapping target Patient maps to subject -// Metadata.OriginatorOrSource maps to performer +// Metadata.InformationSource maps to performer FindingTopicCode maps to code FindingMethod maps to method // dstu 2 change (name change) @@ -107,12 +106,12 @@ LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinitio RelevantTime maps to effective[x] // dstu 2 change (name change) Encounter maps to encounter - DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta +// DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta ConditionPresentAssertion maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-condition: // dstu 2 change (different mapping target) - Metadata.AuthoredDateTime maps to assertedDate - Metadata.OriginatorOrSource maps to asserter + Metadata.AuthoredDateTime maps to dateRecorded + Metadata.InformationSource maps to asserter Patient maps to patient Category maps to category ObjectIdentifier maps to identifier diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index ef012595..56a18f36 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -8,7 +8,6 @@ InformationItem maps to DomainResource: EntryId maps to id Language maps to language Narrative maps to text - constrain meta to 1..1 Metadata.VersionId maps to meta.versionId Metadata.EntryType maps to meta.profile Metadata.LastUpdated maps to meta.lastUpdated @@ -26,7 +25,7 @@ Narrative maps to Narrative: // do not map Observation to US Core Results -- Brett says that's only for labs Observation maps to Observation: // TODO: observationresults is only for labs Patient maps to subject -// Metadata.OriginatorOrSource maps to performer +// Metadata.InformationSource maps to performer FindingTopicCode maps to code FindingMethod maps to method CommentOrDescription maps to comment @@ -57,12 +56,12 @@ Observation maps to Observation: // TODO: observationresults is only for labs FindingStatus maps to status RelevantTime maps to effective[x] Encounter maps to context - DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta +// DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: Patient maps to subject -// Metadata.OriginatorOrSource maps to performer +// Metadata.InformationSource maps to performer FindingTopicCode maps to code FindingMethod maps to method CommentOrDescription maps to comment @@ -93,11 +92,11 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us FindingStatus maps to status RelevantTime maps to effective[x] Encounter maps to context - DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta +// DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: Metadata.AuthoredDateTime maps to assertedDate - Metadata.OriginatorOrSource maps to asserter + Metadata.InformationSource maps to asserter Patient maps to subject Category maps to category ObjectIdentifier maps to identifier diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 7ba1da1d..3136e795 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -72,7 +72,6 @@ Concept: LNC#48676-1 "HER2 [Interpretation] in Tissue" Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." FindingResult from PositiveNegativeEquivocalVS FindingTopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" - DiagnosticService is #pathology Specimen is type BreastSpecimen 0..0 FindingMethod 0..0 NonIndependentFinding @@ -90,8 +89,6 @@ Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (I Interpretation from PositiveNegativeEquivocalVS FindingTopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" 0..0 FindingMethod // pre-coordinated in the FindingTopicCode - DiagnosticService is #pathology - Specimen is type BreastSpecimen NonIndependentFinding includes 0..1 CompleteMembraneStainingPercent @@ -115,8 +112,6 @@ Description: "HER2 receptor status as determined by single-probe or dual-probe F FindingTopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" FindingMethod from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS - DiagnosticService is #pathology - Specimen is type BreastSpecimen NonIndependentFinding includes 0..1 AverageHER2SignalsPerCell @@ -149,7 +144,6 @@ Description: "Estrogen receptor alpha is the predominant estrogen receptor expre The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." FindingTopicCode is LNC#16112-5 FindingResult from PositiveNegativeVS - DiagnosticService is #pathology Specimen is type BreastSpecimen NonIndependentFinding includes 0..1 NuclearPositivity @@ -163,7 +157,6 @@ Description: "Progesterone receptor status is a factor in determining prognosis Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." FindingTopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" FindingResult from PositiveNegativeVS - DiagnosticService is #pathology Specimen is type BreastSpecimen NonIndependentFinding includes 0..1 NuclearPositivity @@ -190,7 +183,7 @@ Description: "An evaluation of the size and shape of the nucleus in tumor cells FindingResult from NuclearGradeVS Specimen is type BreastSpecimen FindingTopicCode is MTH#C18513 - DiagnosticService is #pathology + EntryElement: BreastCancerHistologicGrade Concept: LNC#44648-4 @@ -200,7 +193,6 @@ Description: "The Elston Grade/Nottingham Score, representative of the aggressiv FindingResult from NottinghamCombinedGradeVS ExceptionValue from NottinghamNullVS Specimen is type BreastSpecimen - DiagnosticService is #pathology NonIndependentFinding includes 0..1 TubuleFormationScore includes 0..1 NuclearPleomorphismScore @@ -238,7 +230,6 @@ No LOINC code currently exists for this test. We are seeking feedback on the val FindingResult value is type IntegerQuantity FindingTopicCode is MTH#C1709318 Interpretation from RecurrenceRiskScoreInterpretationVS - DiagnosticService is #pathology Specimen is type ref(BreastSpecimen) @@ -250,7 +241,6 @@ No LOINC code currently exists for this test. We are seeking feedback on the val FindingResult value is type IntegerQuantity FindingTopicCode is MTH#C3898101 Interpretation from RecurrenceRiskScoreInterpretationVS - DiagnosticService is #pathology Specimen is type BreastSpecimen EntryElement: ProsignaRecurrenceScore @@ -261,7 +251,6 @@ The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Ris FindingResult value is type IntegerQuantity FindingTopicCode is LNC#76544-6 Interpretation from RecurrenceRiskScoreInterpretationVS - DiagnosticService is #pathology Specimen is type BreastSpecimen EntryElement: MammaprintRecurrenceScore @@ -273,7 +262,6 @@ The is currently no LOINC code for Mammaprint test." FindingResult value is type Quantity FindingTopicCode is MTH#C2827401 Interpretation from RecurrenceRiskScoreInterpretationVS - DiagnosticService is #pathology Specimen is type BreastSpecimen @@ -379,7 +367,6 @@ includes 0..1 OtherReceptorScoringSystem Description: "Ki-67 is a protein phosphatase whose expression is strongly associated with cell proliferation and encoded by the MKI67 gene. The Ki67 labeling index is the fraction of Ki-67-positive cells to total cells in a tumor specimen and may be useful for determining prognosis with respect to survival and disease recurrence. The more positive cells there are, the more quickly they are dividing and forming new cells. ReferenceRange: Low <10, Intermediate 10-20, >20 High" Value: Quantity with units UCUM#% FindingTopicCode is LNC#29593-1 - DiagnosticService is #pathology NonIndependentFinding includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered @@ -388,7 +375,6 @@ includes 0..1 OtherReceptorScoringSystem Concept: MTH#C0812425 Description: "An expression of the number of mitoses found in a stated number of cells. The S-phase fraction number tells you what percentage of cells in the tissue sample are in the process of copying their genetic information (DNA). This S-phase, short for synthesis phase, happens just before a cell divides into two new cells. ReferenceRange: Low <6, Intermediate 6-10, >10 High." Value: Quantity with units UCUM#% - DiagnosticService is #pathology FindingTopicCode is LNC#29593-1 EntryElement: GeneticVariant @@ -397,9 +383,8 @@ Concept: MTH#C0678941 Description: "Whether a subject carries a mutation in a particular gene." Value: CodeableConcept from PositiveNegativeVS // SpecificFocusOfFinding.CodeableConcept from GeneIdentifierVS - DiagnosticService is #genetics 0..0 ReferenceRange -0..0 DeltaFlag +//0..0 DeltaFlag 0..0 AnatomicalLocationd NonIndependentFinding includes 0..1 Refseq @@ -415,7 +400,6 @@ Concept: TBD Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." Observation.FindingTopicCode is TBD#TBD - DiagnosticService is #genetics 0..0 NonIndependentFinding PanelMembers.EvaluationresultRecorded includes 1..1 BRCA1Variant diff --git a/spec/shr_core.txt b/spec/shr_core.txt index ddfa203d..abadc5d6 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -789,7 +789,7 @@ Description: "A unique string that identifies a specific person or thing." 0..1 Type from http://hl7.org/fhir/ValueSet/identifier-type if covered 0..1 CodeSystem 0..1 EffectiveTimePeriod -0..1 Issuer +//0..1 Issuer -- commented out to prevent generating a profile on identifier caused by having profile on Organization (which is unavoidable in DSTU 2, because US Core changes some cardinalities to 1..) Element: Issuer Concept: TBD diff --git a/spec/shr_core_map_dstu2.txt b/spec/shr_core_map_dstu2.txt index 8b47cbf6..39fbfe7c 100644 --- a/spec/shr_core_map_dstu2.txt +++ b/spec/shr_core_map_dstu2.txt @@ -141,7 +141,7 @@ Identifier maps to Identifier: Type maps to type CodeSystem maps to system EffectiveTimePeriod maps to period - Issuer maps to assigner +// Issuer maps to assigner MK - this causes a profile on Identifier because Organization is also profiled Signature maps to Signature: SignatureType maps to type diff --git a/spec/shr_core_map_stu3.txt b/spec/shr_core_map_stu3.txt index e04bae48..7a3e1ea4 100644 --- a/spec/shr_core_map_stu3.txt +++ b/spec/shr_core_map_stu3.txt @@ -135,7 +135,7 @@ Identifier maps to Identifier: Type maps to type CodeSystem maps to system EffectiveTimePeriod maps to period - Issuer maps to assigner +// Issuer maps to assigner MK - this causes a profile on Identifier because Organization is also profiled Signature maps to Signature: SignatureType maps to type diff --git a/spec/shr_encounter_map_dstu2.txt b/spec/shr_encounter_map_dstu2.txt index 7aa0cdb2..f6582c59 100644 --- a/spec/shr_encounter_map_dstu2.txt +++ b/spec/shr_encounter_map_dstu2.txt @@ -24,7 +24,6 @@ Encounter maps to Encounter: /* EncounterRequested maps to ReferralRequest: - SignedBy.EntityOrRole maps to requester.agent Patient maps to subject ReferralDate maps to authoredOn //ReferralSourceType diff --git a/spec/shr_encounter_map_stu3.txt b/spec/shr_encounter_map_stu3.txt index cc3b6ab2..3349e910 100644 --- a/spec/shr_encounter_map_stu3.txt +++ b/spec/shr_encounter_map_stu3.txt @@ -23,7 +23,6 @@ Encounter maps to Encounter: /* EncounterRequested maps to ReferralRequest: - SignedBy.EntityOrRole maps to requester.agent Patient maps to subject ReferralDate maps to authoredOn //ReferralSourceType diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 72f085d3..ebf39471 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -485,11 +485,10 @@ EntryElement: Organization Based on: Entity Concept: MTH#C1561598 Description: "A social or legal structure formed by human beings." +// Required attributes come from STU 3 mapping to us-core-organization 1..1 OrganizationName -0..* OrganizationAlias -1..* OrganizationIdentifier -1..1 Type from http://hl7.org/fhir/ValueSet/organization-type 1..* OrganizationIdentifier +0..1 Type could be from http://hl7.org/fhir/ValueSet/organization-type 1..* Address 1..* ContactPoint 1..1 ActiveFlag @@ -499,11 +498,6 @@ Description: "A social or legal structure formed by human beings." Concept: TBD Description: "The name of the organization." Value: string - - Element: OrganizationAlias - Concept: TBD - Description: "A list of alternate names that the organization is known as, or was known as in the past." - Value: string Element: OrganizationIdentifier Based on: Identifier diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index bdc663a4..d2e5946b 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -50,12 +50,10 @@ RelatedPerson maps to RelatedPerson: Organization maps to Organization: OrganizationName maps to name -// OrganizationAlias maps to alias // dstu 2 change (no such attribute) Type maps to type OrganizationIdentifier maps to identifier Address maps to address ContactPoint maps to telecom - constrain contact to 0..0 ActiveFlag maps to active PartOf maps to partOf diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index 7580e89c..02a4e749 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -50,14 +50,12 @@ RelatedPerson maps to RelatedPerson: Organization maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization: OrganizationName maps to name - OrganizationAlias maps to alias // I wish FHIR allowed multiple names, but it doesn't Type maps to type OrganizationIdentifier maps to identifier Address maps to address ContactPoint maps to telecom ActiveFlag maps to active PartOf maps to partOf - constrain contact to 0..0 Group maps to Group: ActiveFlag maps to active diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index a062a7a0..eaade601 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -25,7 +25,6 @@ Based on: PresenceAssertion Concept: LNC#8670-2 "History of family member diseases" 0..1 Onset 0..1 ConditionOutcome -0..0 FindingMethod FindingTopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered SpecificFocusOfFinding value is type ref(FamilyMember) Element: ConditionOutcome diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index 2833efa9..1f542427 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -74,10 +74,11 @@ EntryElement: TumorMarker Based on: CodedLaboratoryObservation Concept: LNC#21924-6 "Tumor marker Cancer" Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Diectionary). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." - FindingTopicCode from TumorMarkerVS // should we put TumorMarkerVS with the list of all possible tumor markers? -// FindingResult // the result is the name of the tumor marker. + FindingTopicCode is LNC#21924-6 "Tumor marker Cancer" + FindingResult from TumorMarkerVS // should we populate TumorMarkerVS with the list of all possible tumor markers? 0..0 NonIndependentFinding -// PanelMembers.Observation // each cancer type can further narrow the value set of tumor markers as needed. +0..0 AnatomicalLocation +0..0 PanelMembers.Observation // each cancer type can further narrow the value set of tumor markers as needed. /* Element: TumorMarkerName Concept: LNC#TBD "TBD" @@ -95,7 +96,6 @@ Description: "TBD (source: LOINC)" Description: "The degree of PD-L1 (CD274) protein expression in tumor cells as determined by immune staining with anti-PD-L1 clone SP142. (source: LOINC)" FindingTopicCode is LNC#83057-0 "PD-L1 by clone SP142 [Presence] in Tissue by Immune stain." FindingResult from ProteinExpressionVS - DiagnosticService is #PAT // Specimen is type BreastSpecimen 0..0 NonIndependentFinding PanelMembers.Observation @@ -106,7 +106,6 @@ Description: "TBD (source: LOINC)" Concept: LNC#83053-9 Description: "Cells.programmed cell death ligand 1/100 viable tumor cells in Tissue by Immune stain. (source: LOINC)" FindingTopicCode is LNC#83053-9 "Cells.programmed cell death ligand 1/100 viable tumor cells in Tissue by Immune stain." - DiagnosticService is #PAT FindingResult.Quantity with units UCUM#% // Specimen is type BreastSpecimen */ \ No newline at end of file diff --git a/spec/shr_genetics_map_dstu2.txt b/spec/shr_genetics_map_dstu2.txt index 85db91bd..c9132f0c 100644 --- a/spec/shr_genetics_map_dstu2.txt +++ b/spec/shr_genetics_map_dstu2.txt @@ -1,3 +1,21 @@ Grammar: Map 5.1 Namespace: oncocore Target: FHIR_DSTU_2 + +//GeneticVariantTestResult maps to http://hl7.org/fhir/StructureDefinition/genetics: + +GeneticVariantTestResult maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-observationresults: + GenomicSourceClass maps to http://hl7.org/fhir/StructureDefinition/geneticsGenomicSourceClass + GeneName maps to http://hl7.org/fhir/StructureDefinition/geneticsGene + DNARegionName maps to http://hl7.org/fhir/StructureDefinition/geneticsDNARegionName + DNASequenceVariantName maps to http://hl7.org/fhir/StructureDefinition/geneticsDNASequenceVariation + DNASequenceVariantId maps to http://hl7.org/fhir/StructureDefinition/geneticsVariationId + DNASequenceVariantType maps to http://hl7.org/fhir/StructureDefinition/geneticsDNASequenceVariationType + + +// GenomicSourceClass maps to extension.geneticsGenomicSourceClass +// GeneName maps to geneticsGene +// DNARegionName maps to geneticsDNARegionName +// DNASequenceVariantName maps to geneticsDNASequenceVariation +// DNASequenceVariantId maps to geneticsVariationId +// DNASequenceVariantType maps to geneticsDNASequenceVariationType diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index e579fc28..91aade84 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -40,7 +40,6 @@ Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure Value: CodeableConcept from LineOfTherapyVS - EntryElement: RadiationTreatmentPerformed Based on: ProcedurePerformed Description: "A radiation oncology procedure. If the treatment is part of a course of treatment, the PartOf attribute should indicate the CourseOfTreatment." @@ -51,7 +50,6 @@ Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure 0..1 RadiationFractionsDelivered 0..1 TotalRadiationDoseDelivered - Element: RadiationModality Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" Description: "A specific manner, characteristic, pattern of application or the employment of, a method of treatment involving radiation, especially involving the physical treatment of a condition." diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index f38b74ea..b780df11 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -68,7 +68,7 @@ EntryElement: MedicationStatement Based on: ActionPerformed Concept: SCT#416608005 "Drug therapy (procedure)" // TODO: investigate whether we need a new code or use a drug concept. Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." - Metadata.OriginatorOrSource value is type PersonOrOrganization + Metadata.InformationSource value is type PersonOrOrganization 1..1 Metadata // if 0..1, then AuthoredDateTime could still be 0..1 1..1 Metadata.AuthoredDateTime // us-core required 1..1 Medication @@ -82,21 +82,15 @@ EntryElement: MedicationAdministered Based on: ActionPerformed Concept: TBD Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." - Metadata.OriginatorOrSource value is type PersonOrDevice 1..1 Medication 0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category Status from http://hl7.org/fhir/ValueSet/medication-admin-status 0..0 Method // because of Dosage.Method 0..1 Participation - Participation.Participant is type FHIRMedicationAdministrationParticipant // DSTU 2 change (max cardinality = 1) + Participation.Participant is type PatientOrPractitionerOrRelatedPerson // DSTU 2 change (max cardinality = 1), also, DSTU 2 participant excludes Device 0..0 Participation.ParticipationType RelatedRequest value is type ref(MedicationRequested) - - Element: FHIRMedicationAdministrationParticipant - Based on: Participant - Description: "Constraints participants to classes that are accepted by FHIR as actors in procedures in STU 3." - Value: ref(Practitioner) or ref(Patient) or ref(RelatedPerson) or ref(Device) EntryElement: MedicationAdherence @@ -128,6 +122,7 @@ EntryElement: MedicationRequested Based on: ActionRequested Concept: TBD Description: "An order for a medication to be dispensed and instructions for use." +1..1 Requester value is type ref(Practitioner) Status //from http://hl7.org/fhir/ValueSet/medication-request-status DSTU 2 change (incompatible required value sets) PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority 1..1 Medication diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index e03f960c..b2b34fa1 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -16,7 +16,7 @@ Dosage maps to Dosage: */ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationstatement: - Metadata.OriginatorOrSource maps to informationSource + Metadata.InformationSource maps to informationSource Metadata.AuthoredDateTime maps to dateAsserted // slight semantic difference? Patient maps to patient constrain wasNotTaken to 0..0 @@ -45,7 +45,6 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ Dosage.MaximumDosePerTimePeriod maps to dosage.maxDosePerPeriod MedicationAdministered maps to MedicationAdministration: - Metadata.OriginatorOrSource maps to perfomer.actor Patient maps to patient // DSTU 2 change (name change) Encounter maps to encounter diff --git a/spec/shr_medication_map_stu3.txt b/spec/shr_medication_map_stu3.txt index 0789eecb..27c900d0 100644 --- a/spec/shr_medication_map_stu3.txt +++ b/spec/shr_medication_map_stu3.txt @@ -14,7 +14,7 @@ Dosage maps to Dosage: MaximumDosePerTimePeriod maps to maxDosePerPeriod MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: - Metadata.OriginatorOrSource maps to informationSource + Metadata.InformationSource maps to informationSource Metadata.AuthoredDateTime maps to dateAsserted Patient maps to subject constrain reasonNotTaken to 0..0 @@ -28,7 +28,6 @@ MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c Status maps to status MedicationAdministered maps to MedicationAdministration: - Metadata.OriginatorOrSource maps to performer.actor Patient maps to subject Encounter maps to context RelatedRequest maps to prescription @@ -56,6 +55,7 @@ MedicationNotAdministered maps to MedicationAdministration: MedicationRequested maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest: + Requester maps to requester Medication maps to medication[x] NumberOfRefillsAllowed maps to dispenseRequest.numberOfRepeatsAllowed QuantityPerDispense maps to dispenseRequest.quantity diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 33d4cf84..6e7aa300 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -218,7 +218,7 @@ Description: "A simplified observation for social histories." 0..0 ExceptionValue 0..0 Interpretation 0..0 Encounter -0..0 DeltaFlag +//0..0 DeltaFlag 0..0 CommentOrDescription //0..0 FindingStatus diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 35314fbc..5cd1fed0 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -29,7 +29,7 @@ Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LO FindingTopicCode is SCT#371441004 "Histologic type (observable entity)" 0..0 AnatomicalLocation 0..0 Device -0..0 DeltaFlag +//0..0 DeltaFlag EntryElement: CancerHistologicGrade // did not use precoordinated codes because only available for clinical and pathologic. @@ -65,8 +65,8 @@ Description: "The extent a cancer has spread in the body (source: NCI Diction Concept: SCT#258232002 "Cancer staging (tumor staging)" FindingTopicCode is SCT#258232002 "Cancer staging (tumor staging)" 0..0 FindingResult + 0..1 StageTiming // not a component since it is not a finding, but a further description of the circumstances of the observation 0..0 ExceptionValue - 0..0 DeltaFlag 0..0 ReferenceRange 0..0 AnatomicalLocation 0..0 Specimen @@ -75,8 +75,7 @@ Concept: SCT#258232002 "Cancer staging (tumor staging)" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) NonIndependentFinding includes 0..1 StageGroup // MK - should this be the FindingResult? - includes 0..1 StageTiming // retained StageTiming because if using TNM staging, the StageGroup still needs a prefix (even if we're using precoordinated categories). There are LOINC codes for clinical and pathologic stage groups in LOINC, but we back ourselves into TNM for stage group if we use them. - PanelMembers.Observation // MK - could these be components? + PanelMembers.Observation includes 0..1 TNMClinicalPrimaryTumorClassification includes 0..1 TNMClinicalRegionalNodesClassification includes 0..1 TNMClinicalDistantMetastasesClassification @@ -85,24 +84,9 @@ Concept: SCT#258232002 "Cancer staging (tumor staging)" includes 0..1 TNMPathologicDistantMetastasesClassification Element: StageTiming -Based on: CodedNonIndependentFinding Concept: SCT#260869008 "Timing of stage" Description: "Indicates when the staging was done, in terms of treatment landmarks." - FindingResult from StageTimingPrefixVS - FindingTopicCode is SCT#260869008 "Timing of stage" - - Element: ClinicalStageTiming - Based on: StageTiming - Concept: SCT#260869008 "Timing of stage" - Description: "Indicates staging was done from clinical evidence." - FindingResult.CodeableConcept is SCT#385349001 "Clinical stage (observable entity)" - - Element: PathologicStageTiming - Based on: StageTiming - Concept: SCT#260869008 "Timing of stage" - Description: "Indicates when the staging was done using pathologic evidence." - FindingResult.CodeableConcept is SCT#405978005 "Pathologic stage (observable entity)" - +Value: CodeableConcept from StageTimingPrefixVS Element: StageGroup // did not use precoordinated codes because only available for clinical and pathologic. @@ -126,13 +110,11 @@ Description: "Detailed site-specific codes for the clinical tumor (T) as defi FindingResult from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange -0..0 DeltaFlag 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 ClinicalStageTiming EntryElement: TNMClinicalRegionalNodesClassification Based on: CodedNonLaboratoryObservation @@ -142,29 +124,25 @@ Description: "" //TODO: pull from LOINC FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange -0..0 DeltaFlag 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 ClinicalStageTiming EntryElement: TNMClinicalDistantMetastasesClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC FindingResult from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 -0..0 ReferenceRange FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" 0..0 ReferenceRange -0..0 DeltaFlag 0..0 Device -0..1 FindingMethod from TNMTumorStagingSystemVS if covered +0..1 FindingMethod from TNMTumorStagingSystemVS if covered SpecificFocusOfFinding value is type ref(CancerDisorderPresent) NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 ClinicalStageTiming + EntryElement: TNMPathologicPrimaryTumorClassification Based on: CodedNonLaboratoryObservation @@ -173,14 +151,12 @@ Description: "" //TODO: pull from LOINC FindingResult from http://loinc.org/vs/LL232-0 // normative FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" 0..0 ReferenceRange -0..0 DeltaFlag 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered SpecificFocusOfFinding value is type ref(CancerDisorderPresent) NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 PathologicStageTiming EntryElement: TNMPathologicRegionalNodesClassification Based on: CodedNonLaboratoryObservation @@ -190,13 +166,11 @@ Description: "" //TODO: pull from LOINC FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange -0..0 DeltaFlag 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 PathologicStageTiming EntryElement: TNMPathologicDistantMetastasesClassification Based on: CodedNonLaboratoryObservation @@ -207,13 +181,11 @@ Description: "" //TODO: pull from LOINC FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange -0..0 DeltaFlag 0..0 AnatomicalLocation 0..0 Device 0..1 FindingMethod from TNMTumorStagingSystemVS if covered NonIndependentFinding includes 0..1 StageSuffix - includes 0..1 PathologicStageTiming EntryElement: TumorPresent @@ -226,8 +198,8 @@ Concept: SCT#395557000 "Tumor finding (finding)" Element: IsPrimaryTumor Concept: TBD - Description: "Whether the tumor is the original, or first, tumor in the body, for a particular cancer." - Value: CodeableConcept from YesNoUnknownVS // could be boolean but VS allows for unknown + Description: "Whether the tumor is the original or first tumor in the body, for a particular cancer." + Value: CodeableConcept from YesNoUnknownVS // could be boolean but this VS allows for unknown /**** replaced by Onset of CancerDisorderPresent diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index be8021fe..5cd02275 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -16,8 +16,8 @@ Description: "A procedure that has been performed." 0..* Annotation 0..1 Reason 0..1 Method -0..* InputFinding -0..* Indication +//0..* InputFinding +//0..* Indication 0..* ref(Device) 0..1 Location Participation.OnBehalfOf value is type ref(Organization) @@ -25,7 +25,7 @@ Description: "A procedure that has been performed." // Participation.Participant.EntityOrRole is type ref(Practitioner) Participation.Participant is type FHIRProcedureParticipant RelatedRequest value is type ref(ProcedureRequested) -0..* OutputFinding // in CIMI, this is part of ProcedureTopic, but the definition hinges on performance, so it belongs here, not there. +//0..* OutputFinding // in CIMI, this is part of ProcedureTopic, but the definition hinges on performance, so it belongs here, not there. Element: ProcedureCode Concept: TBD @@ -55,7 +55,7 @@ Based on: ActionNotPerformed 0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason 1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* AnatomicalLocation -//0..1 PartOf value is type ref(ProcedurePerformed) ??? +//0..1 PartOf value is type ref(ProcedurePerformed or Not Performed) ??? 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation 1..1 Status // must be from http://hl7.org/fhir/ValueSet/event-status // DSTU 2 change (different required value sets in v2 and v3) @@ -65,6 +65,7 @@ EntryElement: ProcedureRequested Based on: ActionRequested PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) Status // must be from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) +0..1 Requester is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. 1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* AnatomicalLocation 0..1 PartOf value is type ref(ProcedurePerformed) @@ -72,8 +73,8 @@ Based on: ActionRequested 0..* Annotation 0..1 Reason 0..1 Method -0..* InputFinding -0..* Indication +//0..* InputFinding covered by Reason +//0..* Indication 0..* ref(Device) 0..1 Location diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index dd0632bb..eb91250b 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -58,8 +58,8 @@ SurgicalProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefi ProcedureRequested maps to ProcedureRequest: - Metadata.AuthoredDateTime maps to authoredOn - Metadata.OriginatorOrSource maps to requester + Metadata.AuthoredDateTime maps to orderedOn + Requester maps to orderer ProcedureCode maps to code // DSTU 2 change (no such attribute) // Category maps to category @@ -71,7 +71,7 @@ ProcedureRequested maps to ProcedureRequest: Reason maps to reason[x] Status maps to status // DSTU 2 change (no such attribute) -// RequestIntent maps to intent +// RequestIntent maps to intent // DSTU 2 change (name change) ExpectedPerformanceTime maps to scheduled[x] // DSTU 2 change (no such attribute) @@ -83,8 +83,7 @@ ProcedureRequestedAgainst maps to Basic: /* In DSTU 2, there is not way to specify a procedure NOT to perform using Procedure resource fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal - Metadata.AuthoredDateTime maps to authoredOn - Metadata.OriginatorOrSource maps to requester + // who is the requester? ProcedureCode maps to code Category maps to category Patient maps to subject diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index e71efa7e..e15a3461 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -55,7 +55,7 @@ SurgicalProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefiniti ProcedureRequested maps to ProcedureRequest: Metadata.AuthoredDateTime maps to authoredOn - Metadata.OriginatorOrSource maps to requester + Requester maps to requester.agent ProcedureCode maps to code Category maps to category constrain doNotPerform to 0..0 @@ -74,7 +74,7 @@ ProcedureRequestedAgainst maps to ProcedureRequest: fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal Metadata.AuthoredDateTime maps to authoredOn - Metadata.OriginatorOrSource maps to requester + // who is the requester? ProcedureCode maps to code Category maps to category Patient maps to subject diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt index 942901f5..7f89ea19 100644 --- a/spec/shr_tumor.txt +++ b/spec/shr_tumor.txt @@ -52,7 +52,6 @@ Concept: MTH#C4086369 Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." FindingResult from PositiveNegativeVS FindingTopicCode is MTH#C4086369 - DiagnosticService is #pathology 0..0 PanelMembers NonIndependentFinding includes 0..1 TumorMarginDescription diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index ddf251e5..8b98c189 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -78,7 +78,6 @@ The WoundIdentifier serves as a link between this assertion and assessments of t 1..1 AnatomicalLocationStructured is type WoundAnatomicalLocation 0..0 Severity // not sure if zeroing it out is wise, but severity is not part of LOINC panel 0..0 Criticality -0..0 Certainty 0..0 Device Element: WoundIdentifier From f46399074e7dde8c2804bc9128d1975d6d4e0054 Mon Sep 17 00:00:00 2001 From: May Terry Date: Mon, 10 Dec 2018 20:12:17 -0500 Subject: [PATCH 135/289] merged with Mark's latest changes. --- spec/shr_genetics.txt | 4 +- spec/shr_genetics_map_dstu2.txt | 7 -- spec/shr_genetics_vs.txt | 177 +++++++++++++++++++++++++++++--- 3 files changed, 164 insertions(+), 24 deletions(-) diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index 1f542427..706452bb 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: oncocore Description: "Genetics." -Uses: shr.core, shr.base, shr.entity +Uses: shr.core, shr.base, shr.entity, shr.procedure CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org @@ -19,7 +19,7 @@ Concept: MTH#C0017393 // should be a finding (Q+A), not an observable Description: "A finding with respect to variation in a segment of DNA with an identifiable physical location on a chromosome." FindingTopicCode is MTH#C0017393 "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Metathesaurus)" 0..0 FindingResult // panel, no numerical or coded result - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) // maybe. More likely just the specimen + SpecificFocusOfFinding value is type ref(Specimen) // maybe. More likely just the specimen // What gene are we looking at? 0..1 GenomicSourceClass 0..1 GeneName diff --git a/spec/shr_genetics_map_dstu2.txt b/spec/shr_genetics_map_dstu2.txt index c9132f0c..88c50f45 100644 --- a/spec/shr_genetics_map_dstu2.txt +++ b/spec/shr_genetics_map_dstu2.txt @@ -12,10 +12,3 @@ GeneticVariantTestResult maps to http://fhir.org/guides/argonaut/StructureDefini DNASequenceVariantId maps to http://hl7.org/fhir/StructureDefinition/geneticsVariationId DNASequenceVariantType maps to http://hl7.org/fhir/StructureDefinition/geneticsDNASequenceVariationType - -// GenomicSourceClass maps to extension.geneticsGenomicSourceClass -// GeneName maps to geneticsGene -// DNARegionName maps to geneticsDNARegionName -// DNASequenceVariantName maps to geneticsDNASequenceVariation -// DNASequenceVariantId maps to geneticsVariationId -// DNASequenceVariantType maps to geneticsDNASequenceVariationType diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index 7156ebc1..d694c73b 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -37,21 +37,168 @@ LNC#LA6689-9 "Inversion" LNC#LA6690-7 "Substitution" ValueSet: TumorMarkerVS -Description: "A tumor marker is a substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. This value set of LOINC codes will include a comprehensive list of tumor markers across all cancers, and regardless of method or specimen type. Subsets specific to a cancer type will be created as needed." +Description: "A tumor marker is a substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. This value set of LOINC codes will include a comprehensive list of tumor markers across all cancers, and regardless of method or specimen type. Subsets specific to a cancer type will be created as needed. Sources vary but include https://labtestsonline.org/tests/tumor-markers." // as a prototype, only a couple of examples of tumor markers will be included in this list. // An automated script which imports tumor markers from LOINC (similar to the way eCQMs are bulk imported) // can easily be created. -LNC#17842-6 "Cancer Ag 27-29 [Units/volume] in Serum or Plasma" -LNC#2012-3 "Cancer Ag 27-29 [Presence] in Serum or Plasma" -LNC#2039-6 "Carcinoembryonic Ag [Mass/volume] in Serum or Plasma" -LNC#83085-1 "Carcinoembryonic Ag [Mass/volume] in Serum or Plasma by Immunoassay" -LNC#10334-1 "Cancer Ag 125 [Units/volume] in Serum or Plasma" -LNC#83082-8 "Cancer Ag 125 [Units/volume] in Serum or Plasma by Immunoassay" -LNC#2006-5 "Cancer Ag 125 [Presence] in Serum or Plasma" -LNC#6875-9 "Cancer Ag 15-3 [Units/volume] in Serum or Plasma" -LNC#83083-6 "Cancer Ag 15-3 [Units/volume] in Serum or Plasma by Immunoassay" -LNC#2007-3 "Cancer Ag 15-3 [Presence] in Serum or Plasma" -LNC#2857-1 "Prostate specific Ag [Mass/volume] in Serum or Plasma" -LNC#19198-1 "Prostate specific Ag [Units/volume] in Semen" -// and hundreds of others markers... - +LNC#1695-6 "5-Hydroxyindoleacetate [Mass/time] in 24 hour Urine" +LNC#31203-3 "5-Hydroxyindoleacetate [Mass/volume] in 24 hour Urine" +LNC#1692-3 "5-Hydroxyindoleacetate [Mass/volume] in Cerebral spinal fluid" +LNC#1693-1 "5-Hydroxyindoleacetate [Mass/volume] in Serum or Plasma" +LNC#1694-9 "5-Hydroxyindoleacetate [Mass/volume] in Urine" +LNC#72820-4 "5-Hydroxyindoleacetate [Mass/volume] in Urine by Confirmatory method" +LNC#14573-0 "5-Hydroxyindoleacetate [Moles/time] in 24 hour Urine" +LNC#25971-3 "5-Hydroxyindoleacetate [Moles/volume] in 24 hour Urine" +LNC#47544-2 "5-Hydroxyindoleacetate [Moles/volume] in Cerebral spinal fluid" +LNC#74769-1 "5-Hydroxyindoleacetate [Moles/volume] in Platelet rich plasma" +LNC#50149-4 "5-Hydroxyindoleacetate [Moles/volume] in Serum or Plasma" +LNC#15009-4 "5-Hydroxyindoleacetate [Moles/volume] in Urine" +LNC#12172-3 "5-Hydroxyindoleacetate [Presence] in 24 hour Urine" +LNC#48168-9 "5-Hydroxyindoleacetate [Presence] in Urine" +LNC#44907-4 "5-Hydroxyindoleacetate panel - 24 hour Urine" +LNC#10459-6 "Alpha-1-Fetoprotein Ag [Presence] in Tissue by Immune stain" +// LNC#42332-7 "Alpha-1-Fetoprotein L3/Alpha-1-fetoprotein.total in Serum or Plasma" +LNC#11207-8 "Alpha-1-Fetoprotein [Mass/volume] in Body fluid" +LNC#1833-3 "Alpha-1-Fetoprotein [Mass/volume] in Cerebral spinal fluid" +LNC#54348-8 "Alpha-1-Fetoprotein [Mass/volume] in Cord blood" +LNC#49761-0 "Alpha-1-Fetoprotein [Mass/volume] in Peritoneal fluid" +LNC#49762-8 "Alpha-1-Fetoprotein [Mass/volume] in Pleural fluid" +LNC#1834-1 "Alpha-1-Fetoprotein [Mass/volume] in Serum or Plasma" +LNC#83073-7 "Alpha-1-Fetoprotein [Mass/volume] in Serum or Plasma by Immunoassay" +LNC#19173-4 "Alpha-1-Fetoprotein [Moles/volume] in Pleural fluid" +LNC#19177-5 "Alpha-1-Fetoprotein [Moles/volume] in Serum or Plasma" +// LNC#50610-5 "Alpha-1-Fetoprotein [Multiple of the median] adjusted for multiple gestations in Serum or Plasma" +// LNC#43997-6 "Alpha-1-Fetoprotein [Multiple of the median] adjusted for weight in Serum or Plasma" +// LNC#23811-3 "Alpha-1-Fetoprotein [Multiple of the median] adjusted in Serum or Plasma" +// LNC#20450-3 "Alpha-1-Fetoprotein [Multiple of the median] in Serum or Plasma" +// LNC#23812-1 "Alpha-1-Fetoprotein [Multiple of the median] unadjusted in Serum or Plasma" +LNC#31993-9 "Alpha-1-Fetoprotein [Presence] in Serum or Plasma" +LNC#44910-8 "Alpha-1-Fetoprotein [Units/volume] in Body fluid" +LNC#59564-5 "Alpha-1-Fetoprotein [Units/volume] in Cerebral spinal fluid" +LNC#19172-6 "Alpha-1-Fetoprotein [Units/volume] in Pleural fluid" +LNC#19176-7 "Alpha-1-Fetoprotein [Units/volume] in Serum or Plasma" +LNC#83072-9 "Alpha-1-Fetoprotein [Units/volume] in Serum or Plasma by Immunoassay" +LNC#41274-2 "Alpha-1-Fetoprotein interpretation in Serum or Plasma" +LNC#49246-2 "Alpha-1-Fetoprotein interpretation in Serum or Plasma Narrative" +LNC#49585-3 "Alpha-1-Fetoprotein multiple of the median cutoff [Multiple of the median] in Serum or Plasma" +LNC#48802-3 "Alpha-1-Fetoprotein panel - Serum or Plasma" +LNC#53962-7 "Alpha-1-fetoprotein.tumor marker [Mass/volume] in Serum or Plasma" +LNC#53960-1 "Alpha-1-fetoprotein.tumor marker [Moles/volume] in Serum or Plasma" +LNC#53961-9 "Alpha-1-fetoprotein.tumor marker [Units/volume] in Serum or Plasma" +LNC#10873-8 "Beta-2-Microglobulin [Mass/time] in 24 hour Urine" +LNC#54356-1 "Beta-2-Microglobulin [Mass/volume] in 24 hour Urine" +LNC#48166-3 "Beta-2-Microglobulin [Mass/volume] in Body fluid" +LNC#1951-3 "Beta-2-Microglobulin [Mass/volume] in Cerebral spinal fluid" +LNC#49081-3 "Beta-2-Microglobulin [Mass/volume] in Dialysis fluid" +LNC#88711-7 "Beta-2-Microglobulin [Mass/volume] in Peritoneal dialysis fluid" +LNC#59217-0 "Beta-2-Microglobulin [Mass/volume] in Peritoneal fluid" +LNC#59218-8 "Beta-2-Microglobulin [Mass/volume] in Pleural fluid" +LNC#1952-1 "Beta-2-Microglobulin [Mass/volume] in Serum or Plasma" +LNC#87708-4 "Beta-2-Microglobulin [Mass/volume] in Serum or Plasma --post dialysis" +LNC#83078-6 "Beta-2-Microglobulin [Mass/volume] in Serum or Plasma by Immunoassay" +LNC#1953-9 "Beta-2-Microglobulin [Mass/volume] in Urine" +LNC#83077-8 "Beta-2-Microglobulin [Mass/volume] in Urine by Immunoassay" +LNC#56662-0 "Beta-2-Microglobulin [Moles/time] in 24 hour Urine" +LNC#50824-2 "Beta-2-Microglobulin [Moles/volume] in 24 hour Urine" +LNC#39458-5 "Beta-2-Microglobulin [Moles/volume] in Body fluid" +LNC#32301-4 "Beta-2-Microglobulin [Moles/volume] in Cerebral spinal fluid" +LNC#14626-6 "Beta-2-Microglobulin [Moles/volume] in Serum" +LNC#76484-5 "Beta-2-Microglobulin [Moles/volume] in Serum or Plasma" +LNC#32302-2 "Beta-2-Microglobulin [Moles/volume] in Urine" +LNC#43919-0 "Beta-2-Microglobulin [Presence] in Cerebral spinal fluid" +LNC#43818-4 "Beta-2-Microglobulin [Presence] in Serum" +LNC#43819-2 "Beta-2-Microglobulin [Presence] in Urine" +LNC#83076-0 "Beta-2-Microglobulin [Units/volume] in Serum or Plasma by Immunoassay" +LNC#83079-4 "Beta-2-Microglobulin [Units/volume] in Urine by Immunoassay" +LNC#10467-9 "Beta-2-Microglobulin amyloid Ag [Presence] in Tissue by Immune stain" +LNC#54355-3 "Beta-2-Microglobulin in CSF/Beta-2-Microglobulin in serum" +LNC#56786-7 "Beta-2-Microglobulin.tumor marker [Mass/volume] in Serum" +LNC#2006-5 "Cancer Ag 125 [Presence] in Serum or Plasma" +LNC#48677-9 "Cancer Ag 125 [Presence] in Tissue by Immune stain" +LNC#11210-2 "Cancer Ag 125 [Units/volume] in Body fluid" +LNC#15156-3 "Cancer Ag 125 [Units/volume] in Body fluid by Dilution" +LNC#50775-6 "Cancer Ag 125 [Units/volume] in Cerebral spinal fluid" +LNC#68923-2 "Cancer Ag 125 [Units/volume] in Pericardial fluid" +LNC#59040-6 "Cancer Ag 125 [Units/volume] in Peritoneal dialysis fluid" +LNC#40618-1 "Cancer Ag 125 [Units/volume] in Peritoneal fluid" +LNC#19165-0 "Cancer Ag 125 [Units/volume] in Pleural fluid" +LNC#10334-1 "Cancer Ag 125 [Units/volume] in Serum or Plasma" +LNC#15157-1 "Cancer Ag 125 [Units/volume] in Serum or Plasma by Dilution" +LNC#83082-8 "Cancer Ag 125 [Units/volume] in Serum or Plasma by Immunoassay" +LNC#2007-3 "Cancer Ag 15-3 [Presence] in Serum or Plasma" +LNC#29153-4 "Cancer Ag 15-3 [Units/volume] in Body fluid" +LNC#50776-4 "Cancer Ag 15-3 [Units/volume] in Cerebral spinal fluid" +LNC#50777-2 "Cancer Ag 15-3 [Units/volume] in Pericardial fluid" +LNC#50778-0 "Cancer Ag 15-3 [Units/volume] in Peritoneal fluid" +LNC#19186-6 "Cancer Ag 15-3 [Units/volume] in Pleural fluid" +LNC#6875-9 "Cancer Ag 15-3 [Units/volume] in Serum or Plasma" +LNC#83083-6 "Cancer Ag 15-3 [Units/volume] in Serum or Plasma by Immunoassay" +LNC#2009-9 "Cancer Ag 19-9 [Presence] in Serum or Plasma" +LNC#26924-1 "Cancer Ag 19-9 [Units/volume] in Body fluid" +LNC#50779-8 "Cancer Ag 19-9 [Units/volume] in Cerebral spinal fluid" +LNC#50780-6 "Cancer Ag 19-9 [Units/volume] in Pericardial fluid" +LNC#50781-4 "Cancer Ag 19-9 [Units/volume] in Peritoneal fluid" +LNC#19163-5 "Cancer Ag 19-9 [Units/volume] in Pleural fluid" +LNC#24108-3 "Cancer Ag 19-9 [Units/volume] in Serum or Plasma" +LNC#83084-4 "Cancer Ag 19-9 [Units/volume] in Serum or Plasma by Immunoassay" +LNC#2012-3 "Cancer Ag 27-29 [Presence] in Serum or Plasma" +LNC#50782-2 "Cancer Ag 27-29 [Units/volume] in Cerebral spinal fluid" +LNC#19187-4 "Cancer Ag 27-29 [Units/volume] in Pleural fluid" +LNC#17842-6 "Cancer Ag 27-29 [Units/volume] in Serum or Plasma" +LNC#12515-3 "Carcinoembryonic Ag [Mass/volume] in Body fluid" +LNC#2037-0 "Carcinoembryonic Ag [Mass/volume] in Cerebral spinal fluid" +LNC#40621-5 "Carcinoembryonic Ag [Mass/volume] in Pericardial fluid" +LNC#40622-3 "Carcinoembryonic Ag [Mass/volume] in Peritoneal fluid" +LNC#19169-2 "Carcinoembryonic Ag [Mass/volume] in Pleural fluid" +LNC#2038-8 "Carcinoembryonic Ag [Mass/volume] in Semen" +LNC#2039-6 "Carcinoembryonic Ag [Mass/volume] in Serum or Plasma" +LNC#83085-1 "Carcinoembryonic Ag [Mass/volume] in Serum or Plasma by Immunoassay" +LNC#19170-0 "Carcinoembryonic Ag [Moles/volume] in Pleural fluid" +LNC#19167-6 "Carcinoembryonic Ag [Moles/volume] in Serum or Plasma" +LNC#10469-5 "Carcinoembryonic Ag [Presence] in Tissue by Immune stain" +LNC#19168-4 "Carcinoembryonic Ag [Units/volume] in Pleural fluid" +LNC#10560-1 "Carcinoembryonic Ag [Units/volume] in Semen" +LNC#19166-8 "Carcinoembryonic Ag [Units/volume] in Serum or Plasma" +// LNC#85325-9 "Cells.progesterone receptor/100 cells in Breast cancer specimen by Immune stain" +// LNC#14230-7 "Cells.progesterone receptor/100 cells in Tissue by Immune stain" +LNC#2010-7 "Deprecated Cancer Ag 19-9 [Presence] in Serum or Plasma" +LNC#85337-4 "Estrogen receptor Ag [Presence] in Breast cancer specimen by Immune stain" +LNC#40556-3 "Estrogen receptor Ag [Presence] in Tissue by Immune stain" +LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" +LNC#14130-9 "Estrogen receptor [Moles/mass] in Tissue" +LNC#85310-1 "Estrogen receptor fluorescence intensity [Type] in Breast cancer specimen by Immune stain" +LNC#10480-2 "Estrogen+Progesterone receptor Ag [Presence] in Tissue by Immune stain" +LNC#83054-7 "PD-L1 by clone 22C3 [Interpretation] in Tissue by Immune stain Narrative" +LNC#83052-1 "PD-L1 by clone 22C3 [Presence] in Tissue by Immune stain" +LNC#85147-7 "PD-L1 by clone 22C3 in Tissue by Immune stain Report" +LNC#83056-2 "PD-L1 by clone 28-8 [Interpretation] in Tissue by Immune stain Narrative" +LNC#83055-4 "PD-L1 by clone 28-8 [Presence] in Tissue by Immune stain" +LNC#85148-5 "PD-L1 by clone 28-8 in Tissue by Immune stain Report" +LNC#83057-0 "PD-L1 by clone SP142 [Presence] in Tissue by Immune stain" +LNC#85149-3 "PD-L1 by clone SP142 in Tissue by Immune stain Report" +LNC#83053-9 "Cells.programmed cell death ligand 1/100 viable tumor cells in Tissue by Immune stain. (source: LOINC)" +LNC#85339-0 "Progesterone receptor Ag [Presence] in Breast cancer specimen by Immune stain" +LNC#40557-1 "Progesterone receptor Ag [Presence] in Tissue by Immune stain" +LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" +LNC#10861-3 "Progesterone receptor [Mass/mass] in Tissue" +LNC#31207-4 "Progesterone receptor [Moles/mass] in Tissue" +LNC#85331-7 "Progesterone receptor fluorescence intensity [Type] in Breast cancer specimen by Immune stain" +LNC#47738-0 "Prostate specific Ag [Mass/volume] in Body fluid" +LNC#59230-3 "Prostate specific Ag [Mass/volume] in Cerebral spinal fluid" +LNC#59223-8 "Prostate specific Ag [Mass/volume] in Peritoneal fluid" +LNC#59221-2 "Prostate specific Ag [Mass/volume] in Pleural fluid" +LNC#19199-9 "Prostate specific Ag [Mass/volume] in Semen" +LNC#2857-1 "Prostate specific Ag [Mass/volume] in Serum or Plasma" +LNC#35741-8 "Prostate specific Ag [Mass/volume] in Serum or Plasma by Detection limit <= 0.01 ng/mL" +LNC#83112-3 "Prostate specific Ag [Mass/volume] in Serum or Plasma by Immunoassay" +LNC#34611-4 "Prostate specific Ag [Mass/volume] in Urine" +LNC#19200-5 "Prostate specific Ag [Moles/volume] in Semen" +LNC#19197-3 "Prostate specific Ag [Moles/volume] in Serum or Plasma" +LNC#10508-0 "Prostate specific Ag [Presence] in Tissue by Immune stain" +LNC#19198-1 "Prostate specific Ag [Units/volume] in Semen" +LNC#19195-7 "Prostate specific Ag [Units/volume] in Serum or Plasma" +// LNC#53764-7 "Prostate specific Ag panel - Serum or Plasma" +// LNC#33667-7 "Prostate specific Ag.protein bound [Mass/volume] in Serum or Plasma" +LNC#15325-4 "Prostate specific Ag/Prostate volume calculated" +LNC#15323-9 "Prostate specific Ag/Prostate volume calculated from height, width and length" +LNC#15324-7 "Prostate specific Ag/Prostate volume calculated from planimetry" \ No newline at end of file From 13da97539ec65ee9bd836a6c35e8bd9a3030e8d8 Mon Sep 17 00:00:00 2001 From: May Terry Date: Mon, 10 Dec 2018 20:18:45 -0500 Subject: [PATCH 136/289] removed Uses: shr.procedure --- spec/shr_genetics.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index 706452bb..066e31b0 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -1,7 +1,7 @@ Grammar: DataElement 5.0 Namespace: oncocore Description: "Genetics." -Uses: shr.core, shr.base, shr.entity, shr.procedure +Uses: shr.core, shr.base, shr.entity CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org From 3aa1191e6da5d096909e6b0adf4b2dc79ceb2701 Mon Sep 17 00:00:00 2001 From: May Terry Date: Tue, 11 Dec 2018 10:31:13 -0500 Subject: [PATCH 137/289] zero'd out GeneticVariantTestResult SpecificFocusOfFinding also removed GeneticVariantTestResult interpretation constraint of PositiveNegativeEquivocalVS --- spec/shr_genetics.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index 066e31b0..2c6b94db 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -19,13 +19,11 @@ Concept: MTH#C0017393 // should be a finding (Q+A), not an observable Description: "A finding with respect to variation in a segment of DNA with an identifiable physical location on a chromosome." FindingTopicCode is MTH#C0017393 "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Metathesaurus)" 0..0 FindingResult // panel, no numerical or coded result - SpecificFocusOfFinding value is type ref(Specimen) // maybe. More likely just the specimen +0..0 SpecificFocusOfFinding // What gene are we looking at? 0..1 GenomicSourceClass 0..1 GeneName 0..1 DNARegionName -// Results, interpretation - Interpretation from PositiveNegativeEquivocalVS // this might not be appropriate for all markers. Could this be the clinical significance? 0..1 DNASequenceVariantName 0..1 DNASequenceVariantId 0..1 DNASequenceVariantType From 01ca84d0b3b7e908825867590b570054dcc095ad Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 11 Dec 2018 14:37:32 -0500 Subject: [PATCH 138/289] hold point --- spec/shr_genetics.txt | 2 +- spec/shr_genetics_map_dstu2.txt | 4 ++-- spec/shr_genetics_map_stu3.txt | 2 +- spec/shr_oncologycore.txt | 41 ++++++++++++++++++++++----------- 4 files changed, 31 insertions(+), 18 deletions(-) diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index 2c6b94db..ae1d01b9 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -13,7 +13,7 @@ CodeSystem: UCUM = http://unitsofmeasure.org * Markers can apply to multiple cancer types, and potentially other non-cancer diseases. * Must model this in a way that constrains biomarkers by cancer type in each value set. */ -EntryElement: GeneticVariantTestResult +EntryElement: GeneticMarkerAnalysisResult Based on: LaboratoryObservation Concept: MTH#C0017393 // should be a finding (Q+A), not an observable Description: "A finding with respect to variation in a segment of DNA with an identifiable physical location on a chromosome." diff --git a/spec/shr_genetics_map_dstu2.txt b/spec/shr_genetics_map_dstu2.txt index 88c50f45..c398b8f2 100644 --- a/spec/shr_genetics_map_dstu2.txt +++ b/spec/shr_genetics_map_dstu2.txt @@ -2,9 +2,9 @@ Grammar: Map 5.1 Namespace: oncocore Target: FHIR_DSTU_2 -//GeneticVariantTestResult maps to http://hl7.org/fhir/StructureDefinition/genetics: +//GeneticMarkerAnalysisResult maps to http://hl7.org/fhir/StructureDefinition/genetics: -GeneticVariantTestResult maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-observationresults: +GeneticMarkerAnalysisResult maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-observationresults: GenomicSourceClass maps to http://hl7.org/fhir/StructureDefinition/geneticsGenomicSourceClass GeneName maps to http://hl7.org/fhir/StructureDefinition/geneticsGene DNARegionName maps to http://hl7.org/fhir/StructureDefinition/geneticsDNARegionName diff --git a/spec/shr_genetics_map_stu3.txt b/spec/shr_genetics_map_stu3.txt index f4bb9180..9de0a70b 100644 --- a/spec/shr_genetics_map_stu3.txt +++ b/spec/shr_genetics_map_stu3.txt @@ -3,7 +3,7 @@ Namespace: oncocore Target: FHIR_STU_3 -GeneticVariantTestResult maps to http://hl7.org/fhir/StructureDefinition/observation-genetics: +GeneticMarkerAnalysisResult maps to http://hl7.org/fhir/StructureDefinition/observation-genetics: GenomicSourceClass maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsGenomicSourceClass GeneName maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsGene DNARegionName maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsDNARegionName diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 5cd1fed0..d7ab699a 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -59,29 +59,42 @@ Concept: SCT#246453008 "Course of illness (attribute)" Value: CodeableConcept from CancerProgressionEvidenceVS -EntryElement: CancerStageInformation +Abstract Element: CancerStageGroup Based on: Observation Description: "The extent a cancer has spread in the body (source: NCI Dictionary of Cancer Terms)" Concept: SCT#258232002 "Cancer staging (tumor staging)" - FindingTopicCode is SCT#258232002 "Cancer staging (tumor staging)" - 0..0 FindingResult - 0..1 StageTiming // not a component since it is not a finding, but a further description of the circumstances of the observation + // FindingTopicCode is SCT#258232002 "Cancer staging (tumor staging)" + // 0..0 FindingResult from http://loinc.org/vs/LL240-3 + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) +// 0..1 StageTiming // not a component since it is not a finding, but a further description of the circumstances of the observation 0..0 ExceptionValue 0..0 ReferenceRange 0..0 AnatomicalLocation 0..0 Specimen 0..0 Device 0..1 FindingMethod from CancerStagingSystemVS - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) - NonIndependentFinding - includes 0..1 StageGroup // MK - should this be the FindingResult? - PanelMembers.Observation - includes 0..1 TNMClinicalPrimaryTumorClassification - includes 0..1 TNMClinicalRegionalNodesClassification - includes 0..1 TNMClinicalDistantMetastasesClassification - includes 0..1 TNMPathologicPrimaryTumorClassification - includes 0..1 TNMPathologicRegionalNodesClassification - includes 0..1 TNMPathologicDistantMetastasesClassification + + +EntryElement: +Based on: CancerStageGroup +Concept: SCT#385349001 "Clinical stage (observable entity)" + FindingTopicCode is SCT#385349001 "Clinical stage (observable entity)" + FindingResult from http://loinc.org/vs/LL240-3 + PanelMembers.Observation + includes 0..1 CancerClinicalStageGroup + includes 0..1 TNMClinicalPrimaryTumorClassification + includes 0..1 TNMClinicalRegionalNodesClassification + includes 0..1 TNMClinicalDistantMetastasesClassification + +EntryElement: CancerPathologicStageGroup +Based on: CancerStageGroup +Concept: SCT#405978005 "Pathologic stage (observable entity)" + FindingTopicCode is SCT#405978005 "Pathologic stage (observable entity)" + FindingResult from http://loinc.org/vs/LL240-3 + PanelMembers.Observation + includes 0..1 TNMPathologicPrimaryTumorClassification + includes 0..1 TNMPathologicRegionalNodesClassification + includes 0..1 TNMPathologicDistantMetastasesClassification Element: StageTiming Concept: SCT#260869008 "Timing of stage" From 48ddae8e7558377f36c6485c26320fc9c8952481 Mon Sep 17 00:00:00 2001 From: May Terry Date: Tue, 11 Dec 2018 17:15:15 -0500 Subject: [PATCH 139/289] Created value set for all GTR IDs related to cancer. Value Set Curation notes: - this value set is meant to be extensible. Changes are updated daily. - some term descriptions might have special characters inserted. This was present in the original file downloaded and unzipped from GTR. short-term we can edit them manually until I customize the script to remove all variations of special characters from the data set. Filter criteria: - condition name matching 'cancer' - testing facilities in the US (facility_country = 'United States') - filter for flag lab_currstat = 1 as of 2018-12-11. not all versions are included, but I can easily remove the filter and re-run the CIMPL term converter if we want a comprehensive list of all possible versions. we're also covered if we make this value set extensible. --- spec/shr_genetics_vs.txt | 2101 +++++++++++++++++++++++++++++++++++++- 1 file changed, 2100 insertions(+), 1 deletion(-) diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index 0592010b..c5b1313e 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -4,6 +4,7 @@ Namespace: oncocore CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org CodeSystem: HGNC = http://www.genenames.org +CodeSystem: GTR = https://www.ncbi.nlm.nih.gov/gtr ValueSet: GeneticTestMethodVS Description: "The method used to perform the genetic test. Examples include Fluorescent in situ hybridization (FISH), polymerase chain reaction-based assays (PCR), Sanger sequencing, and next-generation sequencing (NGS)." @@ -205,4 +206,2102 @@ LNC#19195-7 "Prostate specific Ag [Units/volume] in Serum or Plasma" // LNC#33667-7 "Prostate specific Ag.protein bound [Mass/volume] in Serum or Plasma" LNC#15325-4 "Prostate specific Ag/Prostate volume calculated" LNC#15323-9 "Prostate specific Ag/Prostate volume calculated from height, width and length" -LNC#15324-7 "Prostate specific Ag/Prostate volume calculated from planimetry" \ No newline at end of file +LNC#15324-7 "Prostate specific Ag/Prostate volume calculated from planimetry" + +ValueSet: CancerGeneticTestRegistryVS +GTR#GTR000006692.1 "Breast-ovarian cancer, familial 1 (BRCA1)" +GTR#GTR000006692.2 "Breast-ovarian cancer, familial 1 (BRCA1)" +GTR#GTR000006692.3 "Breast-ovarian cancer, familial 1 (BRCA1)" +GTR#GTR000007656.1 "Breast-ovarian cancer, familial 2 (BRCA2)" +GTR#GTR000007656.2 "Breast-ovarian cancer, familial 2 (BRCA2)" +GTR#GTR000007656.3 "Breast-ovarian cancer, familial 2 (BRCA2)" +GTR#GTR000012368.1 "PANEXIA" +GTR#GTR000019508.1 "Hereditary Diffuse Gastric Cancer" +GTR#GTR000023657.1 "Familial BRCA1 and BRCA2 mutation analysis" +GTR#GTR000023659.1 "3 Ashkenazi BRCA1 and BRCA2 mutation analysis" +GTR#GTR000063047.1 "King Laboratory" +GTR#GTR000063047.2 "King Laboratory" +GTR#GTR000263039.1 "CHEK2 (Checkpoint Kinase 2) full gene sequencing analysis" +GTR#GTR000263039.2 "CHEK2 (Checkpoint Kinase 2) full gene sequencing analysis" +GTR#GTR000272716.1 "CDH1 full gene sequencing analysis" +GTR#GTR000272716.2 "CDH1 full gene sequencing analysis" +GTR#GTR000320688.1 "PALB2-Related Cancer" +GTR#GTR000320688.2 "PALB2-Related Cancer" +GTR#GTR000320688.3 "PALB2-Related Cancer" +GTR#GTR000320688.4 "PALB2-Related Cancer" +GTR#GTR000320688.5 "PALB2-Related Cancer" +GTR#GTR000320688.6 "PALB2-Associated Cancer" +GTR#GTR000321296.1 "Hereditary nonpolyposis colorectal cancer (Lynch syndrome)" +GTR#GTR000322872.1 "RAD51D Gene Sequence Analysis" +GTR#GTR000322872.2 "RAD51D Gene Sequence Analysis" +GTR#GTR000322872.3 "RAD51D Gene Sequence Analysis" +GTR#GTR000322872.4 "RAD51D Gene Sequence Analysis" +GTR#GTR000322872.5 "RAD51D gene sequence and deletion/duplication analysis" +GTR#GTR000324168.1 "EPCAM-Related Lynch Syndrome" +GTR#GTR000324168.2 "MSH2 and EPCAM Deletion and Duplication Analysis" +GTR#GTR000324168.3 "EPCAM Deletion/Duplication Analysis" +GTR#GTR000324168.4 "EPCAM Deletion/Duplication Analysis" +GTR#GTR000324168.5 "EPCAM Deletion/Duplication Analysis" +GTR#GTR000324342.2 "Oligodontia-Colorectal Cancer Syndrome" +GTR#GTR000324342.4 "Oligodontia-Colorectal Cancer Syndrome" +GTR#GTR000324342.5 "Oligodontia-Colorectal Cancer Syndrome" +GTR#GTR000324342.6 "Oligodontia-Colorectal Cancer Syndrome" +GTR#GTR000324342.7 "Oligodontia-Colorectal Cancer Syndrome" +GTR#GTR000324342.8 "Oligodontia-Colorectal Cancer Syndrome" +GTR#GTR000325566.1 "Hereditary Diffuse Gastric Cancer" +GTR#GTR000325566.2 "Hereditary Diffuse Gastric Cancer" +GTR#GTR000325566.3 "Hereditary Diffuse Gastric Cancer" +GTR#GTR000325566.4 "Hereditary Diffuse Gastric Cancer" +GTR#GTR000325625.1 "Melaris" +GTR#GTR000325625.2 "Melaris" +GTR#GTR000325625.3 "Melaris" +GTR#GTR000325625.4 "Melaris" +GTR#GTR000325886.1 "Hereditary leiomyomatosis and renal cell cancer" +GTR#GTR000325886.2 "Hereditary leiomyomatosis and renal cell cancer" +GTR#GTR000325886.3 "Hereditary leiomyomatosis and renal cell cancer" +GTR#GTR000325992.1 "CHEK2-Related Cancer" +GTR#GTR000325992.2 "CHEK2 Gene Sequence with Exon 9-10 Deletion" +GTR#GTR000325992.3 "CHEK2 Gene Sequence with Exon 9-10 Deletion" +GTR#GTR000325992.4 "CHEK2 Gene Sequence with Exon 9-10 Deletion" +GTR#GTR000327663.2 "Craniosynostosis" +GTR#GTR000327663.3 "Craniosynostosis" +GTR#GTR000327663.4 "Craniosynostosis" +GTR#GTR000332520.1 "PALB2 Pancreatic Cancer" +GTR#GTR000332524.1 "Hereditary Leiomyomatosis & renal cell cancer-HLRCC" +GTR#GTR000332524.2 "Hereditary Leiomyomatosis & renal cell cancer-HLRCC" +GTR#GTR000500089.1 "BRIP1-related hereditary breast cancer" +GTR#GTR000500188.1 "PALB2-related hereditary breast cancer" +GTR#GTR000500342.1 "ColoNext" +GTR#GTR000500361.1 "BreastNext" +GTR#GTR000500361.2 "BreastNext" +GTR#GTR000500361.3 "BreastNext" +GTR#GTR000500361.4 "BreastNext" +GTR#GTR000500361.5 "BreastNext" +GTR#GTR000500362.1 "OvaNext" +GTR#GTR000500362.2 "OvaNext" +GTR#GTR000500362.3 "OvaNext" +GTR#GTR000500362.4 "OvaNext" +GTR#GTR000500362.5 "OvaNext" +GTR#GTR000500363.1 "CancerNext" +GTR#GTR000500363.2 "CancerNext" +GTR#GTR000500363.3 "CancerNext" +GTR#GTR000500363.4 "CancerNext" +GTR#GTR000500363.5 "CancerNext" +GTR#GTR000500363.6 "CancerNext" +GTR#GTR000500637.1 "HER2/neu" +GTR#GTR000500640.1 "KRAS Molecular Genetic Testing" +GTR#GTR000500640.2 "KRAS Molecular Genetic Testing" +GTR#GTR000500646.1 "Microsatellite Instability" +GTR#GTR000500743.1 "Loeys-Dietz Syndrome Sequencing" +GTR#GTR000500746.1 "Loeys-Dietz (TGFBR1, TGFBR2) Seq & DelDup" +GTR#GTR000500808.1 "mtSEEK¬Æ Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" +GTR#GTR000500808.2 "mtSEEK¬Æ Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" +GTR#GTR000500808.3 "mtSEEK¬Æ Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" +GTR#GTR000500808.4 "mtSEEK¬Æ Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" +GTR#GTR000500808.5 "mtSEEK¬Æ Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" +GTR#GTR000500816.1 "PMS2 HNPCC Sequencing and Del/Dup" +GTR#GTR000500816.2 "HNPCC/Lynch Syndrome (PMS2) Sequencing and Deletion/Duplication" +GTR#GTR000500826.1 "MSH6 HNPCC Sequencing and Del/Dup" +GTR#GTR000500826.2 "HNPCC/Lynch Syndrome (MSH6) Sequencing and Deletion/Duplication" +GTR#GTR000500826.3 "HNPCC/Lynch Syndrome (MSH6) Sequencing and Deletion/Duplication" +GTR#GTR000500883.1 "epiSEEK¬Æ Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" +GTR#GTR000500883.2 "epiSEEK¬Æ Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" +GTR#GTR000500883.3 "epiSEEK¬Æ Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" +GTR#GTR000500883.4 "epiSEEK¬Æ Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" +GTR#GTR000500883.5 "epiSEEK¬Æ Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders" +GTR#GTR000500883.6 "epiSEEK¬Æ Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders" +GTR#GTR000500883.7 "epiSEEK¬Æ Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders" +GTR#GTR000500933.1 "Integrated BRACAnalysis" +GTR#GTR000500933.2 "Integrated BRACAnalysis" +GTR#GTR000500933.3 "Integrated BRACAnalysis" +GTR#GTR000500933.4 "Integrated BRACAnalysis" +GTR#GTR000500933.5 "Integrated BRACAnalysis" +GTR#GTR000500936.1 "Nuclear Genes involved with Mitochondrial Function (mito-exome)" +GTR#GTR000501395.1 "Hereditary Leiomyomatosis and Renal Cell Cancer: FH Full Gene Sequencing" +GTR#GTR000501397.1 "Hereditary Leiomyomatosis and Renal Cell Cancer: FH Gene Deletion/Duplication" +GTR#GTR000501399.1 "Lynch Syndrome: MSH2 Full Gene Sequencing" +GTR#GTR000501400.1 "Lynch Syndrome: MSH6 Full Gene Sequencing" +GTR#GTR000501400.2 "Lynch Syndrome: MSH6 Full Gene Sequencing" +GTR#GTR000501401.1 "Lynch Syndrome: MSH2 Gene Deletion/Duplication" +GTR#GTR000501402.1 "Lynch Syndrome: MSH6 Gene Deletion/Duplication" +GTR#GTR000501424.1 "Lynch Syndrome: PMS2 Full Gene Sequencing" +GTR#GTR000501426.1 "Melanoma-Pancreatic Cancer: CDKN2A Full Gene Sequencing" +GTR#GTR000501538.1 "Hereditary Leiomyomatosis and Renal Cell Carcinoma - FH Sequence Analysis" +GTR#GTR000501538.2 "Hereditary Leiomyomatosis and Renal Cell Carcinoma - FH Sequence Analysis" +GTR#GTR000501538.3 "Hereditary Leiomyomatosis and Renal Cell Carcinoma - FH Sequence Analysis" +GTR#GTR000501539.1 "Hereditary Leiomyomatosis and Renal Cell Carcinoma - FH Deletion/Duplication Analysis" +GTR#GTR000501539.2 "Hereditary Leiomyomatosis and Renal Cell Carcinoma - FH Deletion/Duplication Analysis" +GTR#GTR000501539.3 "Hereditary Leiomyomatosis and Renal Cell Carcinoma - FH Deletion/Duplication Analysis" +GTR#GTR000501540.1 "Hereditary Leiomyomatosis and Renal Cell Carcinoma - FH Known Point Mutation Analysis" +GTR#GTR000501540.2 "Hereditary Leiomyomatosis and Renal Cell Carcinoma - FH Known Point Mutation Analysis" +GTR#GTR000501540.3 "Hereditary Leiomyomatosis and Renal Cell Carcinoma - FH Known Point Mutation Analysis" +GTR#GTR000501743.1 "BRCA1 Gene Analysis" +GTR#GTR000501743.2 "BRCA1 Gene Analysis" +GTR#GTR000501743.3 "BRCA1 Gene Analysis" +GTR#GTR000501743.4 "BRCA1 Gene Analysis" +GTR#GTR000501744.1 "BRCA2 Gene Analysis" +GTR#GTR000501744.2 "BRCA2 Gene Analysis" +GTR#GTR000501744.3 "BRCA2 Gene Analysis" +GTR#GTR000501744.4 "BRCA2 Gene Analysis" +GTR#GTR000501746.1 "BRCA1 Single Mutation Analysis" +GTR#GTR000501746.2 "BRCA1 Single Mutation Analysis" +GTR#GTR000501746.3 "BRCA1 Single Mutation Analysis" +GTR#GTR000501746.4 "BRCA1 Single Mutation Analysis" +GTR#GTR000501748.1 "BRCA2 Single Mutation Analysis" +GTR#GTR000501748.2 "BRCA2 Single Mutation Analysis" +GTR#GTR000501748.3 "BRCA2 Single Mutation Analysis" +GTR#GTR000502753.1 "FGFR3 Crouzon Syndrome (A391E)" +GTR#GTR000502753.2 "FGFR3 Crouzon Syndrome (A391E)" +GTR#GTR000502978.1 "Melanoma-Pancreatic Cancer: CDKN2A Gene Deletion/Duplication" +GTR#GTR000502979.1 "Lynch Syndrome, EPCAM-Related: EPCAM Gene Deletion/Duplication" +GTR#GTR000503135.1 "Epilepsy Panel" +GTR#GTR000503138.1 "Autism Panel: Tier 2" +GTR#GTR000503285.1 "MUTYH-Associated Polyposis: MUTYH Common Mutation Panel" +GTR#GTR000503364.1 "PTEN Related Disorders" +GTR#GTR000503364.2 "PTEN Related Disorders" +GTR#GTR000503364.3 "PTEN Related Disorders - Sequencing" +GTR#GTR000503365.1 "PTEN Related Disorders" +GTR#GTR000503365.2 "PTEN Related Disorders - Del/Dup Analysis" +GTR#GTR000503369.1 "MultiSite 3 BRAC Analysis" +GTR#GTR000503369.2 "MultiSite 3 BRACAnalysis" +GTR#GTR000503369.3 "MultiSite 3 BRACAnalysis" +GTR#GTR000503369.4 "MultiSite 3 BRACAnalysis" +GTR#GTR000503369.5 "MultiSite 3 BRACAnalysis" +GTR#GTR000503379.1 "BRCAPlus" +GTR#GTR000503379.2 "BRCAPlus" +GTR#GTR000503379.3 "BRCAplus" +GTR#GTR000503379.4 "BRCAplus" +GTR#GTR000503379.5 "BRCAplus" +GTR#GTR000503393.1 "BRCA1/2 Gene Sequence and Deletion/Duplication Analysis (concurrent)" +GTR#GTR000503393.2 "BRCA1/2 Gene Sequence and Deletion/Duplication Analysis (concurrent)" +GTR#GTR000503393.3 "BRCA1/2 Gene Sequence and Deletion/Duplication Analysis (concurrent)" +GTR#GTR000503393.4 "BRCA1/2 Gene Sequence and Deletion/Duplication Analysis (concurrent)" +GTR#GTR000503393.5 "BRCA1/2 Gene Sequence and Deletion/Duplication Analysis (concurrent)" +GTR#GTR000503394.1 "BRCA1/2 Deletion/Duplication Analysis only" +GTR#GTR000503394.2 "BRCA1/2 Deletion/Duplication Analysis only" +GTR#GTR000503394.3 "BRCA1/2 Deletion/Duplication Analysis only" +GTR#GTR000503394.4 "BRCA1/2 Deletion/Duplication Analysis only" +GTR#GTR000503671.1 "Comprehensive Sequence Analysis of Nuclear Mitochondrial Exome" +GTR#GTR000503671.2 "nucSEEK¬Æ Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" +GTR#GTR000503671.3 "nucSEEK¬Æ Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" +GTR#GTR000503671.4 "nucSEEK¬Æ Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" +GTR#GTR000503671.5 "nucSEEK¬Æ Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" +GTR#GTR000503671.6 "nucSEEK¬Æ Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" +GTR#GTR000504105.1 "TP53 full sequencing" +GTR#GTR000504105.10 "TP53 Full Gene Sequencing" +GTR#GTR000504105.11 "TP53 Full Gene Sequencing" +GTR#GTR000504105.2 "TP53 full sequencing" +GTR#GTR000504105.3 "TP53 full sequencing" +GTR#GTR000504105.4 "TP53 full sequencing" +GTR#GTR000504105.5 "TP53 full sequencing" +GTR#GTR000504105.6 "TP53 full sequencing" +GTR#GTR000504105.7 "TP53 Gene Sequence Analysis" +GTR#GTR000504105.8 "TP53 Full Gene Analysis" +GTR#GTR000504105.9 "TP53 Full Gene Sequencing" +GTR#GTR000505665.1 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC Expanded NextGen Sequencing Panel" +GTR#GTR000505665.10 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC EXPANDED NextGen Sequencing (NGS) Panel and Deletion/Duplication Panel" +GTR#GTR000505665.11 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC EXPANDED NextGen Sequencing (NGS) Panel and Deletion/Duplication Panel" +GTR#GTR000505665.12 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC EXPANDED NextGen Sequencing (NGS) Panel and Deletion/Duplication Panel" +GTR#GTR000505665.13 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC EXPANDED NextGen Sequencing (NGS) Panel and Deletion/Duplication Panel" +GTR#GTR000505665.14 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC EXPANDED NextGen Sequencing (NGS) Panel and Deletion/Duplication Panel" +GTR#GTR000505665.15 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC EXPANDED NextGen Sequencing (NGS) Panel and Deletion/Duplication Panel" +GTR#GTR000505665.16 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC EXPANDED NextGen Sequencing (NGS) Panel and Deletion/Duplication Panel" +GTR#GTR000505665.17 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC EXPANDED Sequencing and Deletion/Duplication Panel" +GTR#GTR000505665.18 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC EXPANDED Sequencing and Deletion/Duplication Panel" +GTR#GTR000505665.19 "Breast Cancer - Comprehensive Risk Sequencing Panel with CNV Detection" +GTR#GTR000505665.2 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC Expanded NextGen Sequencing Panel" +GTR#GTR000505665.20 "Breast Cancer - Comprehensive Risk Sequencing Panel with CNV Detection" +GTR#GTR000505665.21 "Breast Cancer - Comprehensive Risk Sequencing Panel with CNV Detection" +GTR#GTR000505665.3 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC Expanded NextGen Sequencing Panel" +GTR#GTR000505665.4 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC Expanded NextGen Sequencing (NGS) Panel and Deletion/Duplication Panel" +GTR#GTR000505665.5 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC EXPANDED NextGen Sequencing (NGS) Panel and Deletion/Duplication Panel" +GTR#GTR000505665.6 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC EXPANDED NextGen Sequencing (NGS) Panel and Deletion/Duplication Panel" +GTR#GTR000505665.7 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC EXPANDED NextGen Sequencing (NGS) Panel and Deletion/Duplication Panel" +GTR#GTR000505665.8 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC EXPANDED NextGen Sequencing (NGS) Panel and Deletion/Duplication Panel" +GTR#GTR000505665.9 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC EXPANDED NextGen Sequencing (NGS) Panel and Deletion/Duplication Panel" +GTR#GTR000505666.1 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC Select NextGen Sequencing Panel" +GTR#GTR000505666.10 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000505666.11 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000505666.12 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000505666.13 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000505666.14 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK Sequencing and Deletion/Duplication Panel" +GTR#GTR000505666.15 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK Sequencing and Deletion/Duplication Panel" +GTR#GTR000505666.16 "Breast Cancer - High Risk Sequencing Panel with CNV Detection" +GTR#GTR000505666.17 "Breast Cancer - High Risk Sequencing Panel with CNV Detection" +GTR#GTR000505666.18 "Breast Cancer - High Risk Sequencing Panel with CNV Detection" +GTR#GTR000505666.2 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC Select NextGen Sequencing Panel" +GTR#GTR000505666.3 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC High Risk NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000505666.4 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000505666.5 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000505666.6 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000505666.7 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000505666.8 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000505666.9 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000505735.1 "Ataxia telangiectasia Syndrome via the ATM Gene" +GTR#GTR000505735.10 "Ataxia telangiectasia Syndrome via ATM Gene Sequencing with CNV Detection" +GTR#GTR000505735.2 "Ataxia telangiectasia Syndrome via the ATM Gene" +GTR#GTR000505735.3 "Ataxia telangiectasia Syndrome via the ATM Gene" +GTR#GTR000505735.4 "Ataxia telangiectasia Syndrome via the ATM Gene" +GTR#GTR000505735.5 "Ataxia telangiectasia Syndrome via the ATM Gene" +GTR#GTR000505735.6 "Ataxia telangiectasia Syndrome via the ATM Gene" +GTR#GTR000505735.7 "Ataxia telangiectasia Syndrome via the ATM Gene" +GTR#GTR000505735.8 "Ataxia telangiectasia Syndrome via the ATM Gene" +GTR#GTR000505735.9 "Ataxia telangiectasia Syndrome via ATM Gene Sequencing with CNV Detection" +GTR#GTR000505800.1 "Hereditary Breast Cancer via the CHEK2 Gene" +GTR#GTR000505800.10 "Hereditary Breast Cancer via the CHEK2 Gene" +GTR#GTR000505800.11 "Hereditary Breast Cancer via CHEK2 Gene Sequencing with CNV Detection" +GTR#GTR000505800.12 "Hereditary Breast Cancer via CHEK2 Gene Sequencing with CNV Detection" +GTR#GTR000505800.2 "Hereditary Breast Cancer via the CHEK2 Gene" +GTR#GTR000505800.3 "Hereditary Breast Cancer via the CHEK2 Gene" +GTR#GTR000505800.4 "Hereditary Breast Cancer via the CHEK2 Gene" +GTR#GTR000505800.5 "Hereditary Breast Cancer via the CHEK2 Gene" +GTR#GTR000505800.6 "Hereditary Breast Cancer via the CHEK2 Gene" +GTR#GTR000505800.7 "Hereditary Breast Cancer via the CHEK2 Gene" +GTR#GTR000505800.8 "Hereditary Breast Cancer via the CHEK2 Gene" +GTR#GTR000505800.9 "Hereditary Breast Cancer via the CHEK2 Gene" +GTR#GTR000505801.1 "Hereditary Diffuse Gastric Cancer via the CDH1 Gene" +GTR#GTR000505801.10 "Hereditary Diffuse Gastric Cancer via CDH1 Gene Sequencing with CNV Detection" +GTR#GTR000505801.2 "Hereditary Diffuse Gastric Cancer via the CDH1 Gene" +GTR#GTR000505801.3 "Hereditary Diffuse Gastric Cancer via the CDH1 Gene" +GTR#GTR000505801.4 "Hereditary Diffuse Gastric Cancer via the CDH1 Gene" +GTR#GTR000505801.5 "Hereditary Diffuse Gastric Cancer via the CDH1 Gene" +GTR#GTR000505801.6 "Hereditary Diffuse Gastric Cancer via the CDH1 Gene" +GTR#GTR000505801.7 "Hereditary Diffuse Gastric Cancer via the CDH1 Gene" +GTR#GTR000505801.8 "Hereditary Diffuse Gastric Cancer via the CDH1 Gene" +GTR#GTR000505801.9 "Hereditary Diffuse Gastric Cancer via CDH1 Gene Sequencing with CNV Detection" +GTR#GTR000505927.1 "Lynch Syndrome: Immunohistochemistry - MLH1, MSH2, MSH6, and PMS2 Panel" +GTR#GTR000505939.1 "Lynch Syndrome: Immunohistochemistry MSH6 Only" +GTR#GTR000505942.1 "Lynch Syndrome: Immunohistochemistry PMS2 Only" +GTR#GTR000505943.1 "Lynch Syndrome: Microsatellite Instability" +GTR#GTR000505946.1 "Lynch Syndrome: Microsatellite Instability & Immunohistochemistry" +GTR#GTR000505947.1 "Lynch Syndrome: MLH1, MSH2, and MSH6 Full Gene Sequencing Panel" +GTR#GTR000505948.1 "Lynch Syndrome: MLH1, MSH2, MSH6, and PMS2 Full Gene Sequencing Panel" +GTR#GTR000505950.1 "PancNext" +GTR#GTR000505952.1 "Lynch Syndrome: MLH1, MSH2, and MSH6 Gene Deletion/Duplication Panel" +GTR#GTR000506260.1 "Oligodontia-Colorectal Cancer via the AXIN2 Gene" +GTR#GTR000506260.2 "Oligodontia-Colorectal Cancer via the AXIN2 Gene" +GTR#GTR000506260.3 "Oligodontia-Colorectal Cancer via the AXIN2 Gene" +GTR#GTR000506260.4 "Oligodontia-Colorectal Cancer via the AXIN2 Gene" +GTR#GTR000506260.5 "Oligodontia-Colorectal Cancer via the AXIN2 Gene" +GTR#GTR000506260.6 "Oligodontia-Colorectal Cancer via the AXIN2 Gene" +GTR#GTR000506260.7 "Oligodontia-Colorectal Cancer via the AXIN2 Gene" +GTR#GTR000506260.8 "Oligodontia-Colorectal Cancer via the AXIN2 Gene" +GTR#GTR000506260.9 "Oligodontia-Colorectal Cancer via AXIN2 Gene Sequencing with CNV Detection" +GTR#GTR000506412.1 "Eye Disorders NGS panel" +GTR#GTR000506412.10 "Eye Disorders NGS Panel" +GTR#GTR000506412.2 "Eye Disorders NGS panel" +GTR#GTR000506412.3 "Eye Disorders NGS panel" +GTR#GTR000506412.4 "Eye Disorders NGS panel" +GTR#GTR000506412.5 "Eye Disorders NGS panel" +GTR#GTR000506412.6 "Eye Disorders NGS panel" +GTR#GTR000506412.7 "Eye Disorders NGS Panel" +GTR#GTR000506412.8 "Eye Disorders NGS Panel" +GTR#GTR000506412.9 "Eye Disorders NGS Panel" +GTR#GTR000506534.1 "Hereditary Breast and Ovarian Cancer via the BARD1 Gene" +GTR#GTR000506534.10 "Hereditary Breast and Ovarian Cancer via BARD1 Gene Sequencing with CNV Detection" +GTR#GTR000506534.2 "Hereditary Breast and Ovarian Cancer via the BARD1 Gene" +GTR#GTR000506534.3 "Hereditary Breast and Ovarian Cancer via the BARD1 Gene" +GTR#GTR000506534.4 "Hereditary Breast and Ovarian Cancer via the BARD1 Gene" +GTR#GTR000506534.5 "Hereditary Breast and Ovarian Cancer via the BARD1 Gene" +GTR#GTR000506534.6 "Hereditary Breast and Ovarian Cancer via the BARD1 Gene" +GTR#GTR000506534.7 "Hereditary Breast and Ovarian Cancer via the BARD1 Gene" +GTR#GTR000506534.8 "Hereditary Breast and Ovarian Cancer via the BARD1 Gene" +GTR#GTR000506534.9 "Hereditary Breast and Ovarian Cancer via BARD1 Gene Sequencing with CNV Detection" +GTR#GTR000506554.1 "Melanoma Predisposition via the CDKN2A Gene" +GTR#GTR000506554.2 "Melanoma Predisposition via the CDKN2A Gene" +GTR#GTR000506554.3 "Melanoma Predisposition via the CDKN2A Gene" +GTR#GTR000506554.4 "Melanoma Predisposition via the CDKN2A Gene" +GTR#GTR000506554.5 "Melanoma Predisposition via the CDKN2A Gene" +GTR#GTR000506554.6 "Melanoma Predisposition via the CDKN2A Gene" +GTR#GTR000506554.7 "Melanoma Predisposition via the CDKN2A Gene" +GTR#GTR000506554.8 "Melanoma Predisposition via CDKN2A Gene Sequencing with CNV Detection" +GTR#GTR000506554.9 "Melanoma Predisposition via CDKN2A Gene Sequencing with CNV Detection" +GTR#GTR000506555.1 "Fanconi Anemia NGS Panel" +GTR#GTR000506555.2 "Fanconi Anemia NGS Panel" +GTR#GTR000506555.3 "Fanconi Anemia NGS Panel" +GTR#GTR000506555.4 "Fanconi Anemia NGS Panel" +GTR#GTR000506555.5 "Fanconi Anemia NGS Panel" +GTR#GTR000506555.6 "Fanconi Anemia NGS Panel" +GTR#GTR000506555.7 "Fanconi Anemia NGS Panel" +GTR#GTR000506555.8 "Fanconi Anemia NGS Panel" +GTR#GTR000506555.9 "Fanconi Anemia NGS Panel" +GTR#GTR000507443.1 "Lynch Syndrome via the MLH3 Gene" +GTR#GTR000507443.2 "Lynch Syndrome via the MLH3 Gene" +GTR#GTR000507443.3 "Lynch Syndrome via the MLH3 Gene" +GTR#GTR000507443.4 "Lynch Syndrome via the MLH3 Gene" +GTR#GTR000507443.5 "Lynch Syndrome via the MLH3 Gene" +GTR#GTR000507443.6 "Lynch Syndrome via the MLH3 Gene" +GTR#GTR000507443.7 "Lynch Syndrome via the MLH3 Gene" +GTR#GTR000507443.8 "Lynch Syndrome via the MLH3 Gene" +GTR#GTR000507443.9 "Lynch Syndrome via MLH3 Gene Sequencing with CNV Detection" +GTR#GTR000507445.1 "Lynch Syndrome via the MSH6 Gene" +GTR#GTR000507445.2 "Lynch Syndrome via the MSH6 Gene" +GTR#GTR000507445.3 "Lynch Syndrome via the MSH6 Gene" +GTR#GTR000507445.4 "Lynch Syndrome via the MSH6 Gene" +GTR#GTR000507445.5 "Lynch Syndrome via the MSH6 Gene" +GTR#GTR000507445.6 "Lynch Syndrome via the MSH6 Gene" +GTR#GTR000507445.7 "Lynch Syndrome via the MSH6 Gene" +GTR#GTR000507445.8 "Lynch Syndrome via MSH6 Gene Sequencing with CNV Detection" +GTR#GTR000507445.9 "Lynch Syndrome via MSH6 Gene Sequencing with CNV Detection" +GTR#GTR000507447.1 "Lynch Syndrome via the PMS2 Gene" +GTR#GTR000507447.10 "Lynch Syndrome via PMS2 Gene Sequencing with CNV Detection" +GTR#GTR000507447.2 "Lynch Syndrome via the PMS2 Gene" +GTR#GTR000507447.3 "Lynch Syndrome via the PMS2 Gene" +GTR#GTR000507447.4 "Lynch Syndrome via the PMS2 Gene" +GTR#GTR000507447.5 "Lynch Syndrome via the PMS2 Gene" +GTR#GTR000507447.6 "Lynch Syndrome via the PMS2 Gene" +GTR#GTR000507447.7 "Lynch Syndrome via the PMS2 Gene" +GTR#GTR000507447.8 "Lynch Syndrome via the PMS2 Gene" +GTR#GTR000507447.9 "Lynch Syndrome via PMS2 Gene Sequencing with CNV Detection" +GTR#GTR000507631.1 "Hereditary Leiomyomatosis and Renal Cell Cancer or Fumarase Deficiency via the FH Gene" +GTR#GTR000507631.2 "Hereditary Leiomyomatosis and Renal Cell Cancer or Fumarase Deficiency via the FH Gene" +GTR#GTR000507631.3 "Hereditary Leiomyomatosis and Renal Cell Cancer or Fumarase Deficiency via the FH Gene" +GTR#GTR000507631.4 "Hereditary Leiomyomatosis and Renal Cell Cancer or Fumarase Deficiency via the FH Gene" +GTR#GTR000507631.5 "Hereditary Leiomyomatosis and Renal Cell Cancer or Fumarase Deficiency via the FH Gene" +GTR#GTR000507631.6 "Hereditary Leiomyomatosis and Renal Cell Cancer or Fumarase Deficiency via the FH Gene" +GTR#GTR000507631.7 "Hereditary Leiomyomatosis and Renal Cell Cancer or Fumarase Deficiency via the FH Gene" +GTR#GTR000507834.1 "EPCAM Deletion Analysis" +GTR#GTR000507834.2 "EPCAM Deletion Analysis" +GTR#GTR000507835.1 "FH Sequence Analysis" +GTR#GTR000507835.2 "FH Sequence Analysis" +GTR#GTR000507836.1 "FH Sequence Analysis (Familial Mutation/Variant Analysis)" +GTR#GTR000507836.2 "FH Sequence Analysis (Familial Mutation/Variant Analysis)" +GTR#GTR000507837.1 "FH Sequence Analysis (Prenatal Diagnosis)" +GTR#GTR000507837.2 "FH Sequence Analysis (Prenatal Diagnosis)" +GTR#GTR000507870.1 "PTEN Comprehensive - Sequence & Deletion/Duplication Analysis" +GTR#GTR000507872.1 "PTEN Deletion/Duplication Analysis" +GTR#GTR000507873.1 "PTEN Deletion/Duplication Analysis (Prenatal Diagnosis)" +GTR#GTR000507874.1 "PTEN Sequence Analysis" +GTR#GTR000507875.1 "PTEN Sequence Analysis (Familial Mutation/Variant Analysis)" +GTR#GTR000507876.1 "PTEN Sequence Analysis (Prenatal Diagnosis)" +GTR#GTR000507898.1 "TP53 Comprehensive - Sequence & Deletion/Duplication Analysis" +GTR#GTR000507898.2 "TP53 Comprehensive - Sequence & Deletion/Duplication Analysis" +GTR#GTR000507899.1 "TP53 Deletion/Duplication Analysis" +GTR#GTR000507899.2 "TP53 Deletion/Duplication Analysis" +GTR#GTR000507900.1 "TP53 Sequence Analysis" +GTR#GTR000507900.2 "TP53 Sequence Analysis" +GTR#GTR000507901.1 "TP53 Sequence Analysis (Familial Mutation/Variant Analysis)" +GTR#GTR000507901.2 "TP53 Sequence Analysis (Familial Mutation/Variant Analysis)" +GTR#GTR000507913.1 "Hereditary Cancer Syndromes Panel" +GTR#GTR000507913.2 "Hereditary Cancer Syndromes Panel" +GTR#GTR000507914.1 "Hereditary Colon Cancers Panel" +GTR#GTR000507914.2 "Hereditary Colon Cancers Panel" +GTR#GTR000507930.1 "Women's Hereditary Cancers Panel" +GTR#GTR000507930.2 "Women's Hereditary Cancers Panel" +GTR#GTR000507945.1 "Breast Ovarian Cancer NGS panel" +GTR#GTR000507957.1 "Colon Rectal Cancer NGS Panel" +GTR#GTR000507957.10 "Colon Cancer NGS Panel" +GTR#GTR000507957.2 "Colon Rectal Cancer NGS Panel" +GTR#GTR000507957.3 "Colon Rectal Cancer NGS Panel" +GTR#GTR000507957.4 "Colon Rectal Cancer NGS Panel" +GTR#GTR000507957.5 "Colon Rectal Cancer NGS Panel" +GTR#GTR000507957.6 "Colon Rectal Cancer NGS Panel" +GTR#GTR000507957.7 "Colon Cancer NGS Panel" +GTR#GTR000507957.8 "Colon Cancer NGS Panel" +GTR#GTR000507957.9 "Colon Cancer NGS Panel" +GTR#GTR000507973.1 "Pancreatic Cancer NGS Panel" +GTR#GTR000507973.2 "Pancreatic Cancer NGS Panel" +GTR#GTR000507973.3 "Pancreatic Cancer NGS Panel" +GTR#GTR000507973.4 "Pancreatic Cancer NGS Panel" +GTR#GTR000507973.5 "Pancreatic Cancer NGS Panel" +GTR#GTR000507973.6 "Pancreatic Cancer NGS Panel" +GTR#GTR000507973.7 "Pancreatic Cancer NGS Panel" +GTR#GTR000507973.8 "Pancreatic Cancer NGS Panel" +GTR#GTR000507973.9 "Pancreatic Cancer NGS Panel" +GTR#GTR000507985.1 "Melanoma NGS Panel" +GTR#GTR000507985.2 "Melanoma NGS Panel" +GTR#GTR000507985.3 "Melanoma NGS Panel" +GTR#GTR000507985.4 "Melanoma NGS Panel" +GTR#GTR000507985.5 "Melanoma NGS Panel" +GTR#GTR000507985.6 "Melanoma NGS Panel" +GTR#GTR000507985.7 "Melanoma NGS Panel" +GTR#GTR000507985.8 "Melanoma NGS Panel" +GTR#GTR000507985.9 "Melanoma NGS Panel" +GTR#GTR000508042.1 "Lynch Syndrome, MSH6 Sequencing and Deletion/Duplication" +GTR#GTR000508042.2 "Lynch Syndrome, MSH6 Sequencing and Deletion/Duplication" +GTR#GTR000508043.1 "LYNCH SYNDROME, PMS2 FAMILIAL DELETION/DUPLICATION ANALYSIS" +GTR#GTR000508044.1 "LYNCH SYNDROME, PMS2 SEQUENCING AND DELETION/DUPLICATION" +GTR#GTR000508044.2 "LYNCH SYNDROME, PMS2 SEQUENCING AND DELETION/DUPLICATION" +GTR#GTR000508060.1 "MSH6 Gene Deletion or Duplication" +GTR#GTR000508061.1 "MSH6 Mutation, One Exon, HNPCC" +GTR#GTR000508061.2 "MSH6 Mutation, One Exon, HNPCC" +GTR#GTR000508062.1 "MSH6 Mutation, One Exon, HNPCC (NY)" +GTR#GTR000508280.1 "MitoMet¬ÆPlus aCGH Analysis" +GTR#GTR000508280.2 "MitoMet¬ÆPlus aCGH Analysis" +GTR#GTR000508339.1 "Breast Ovarian Cancer NGS panel" +GTR#GTR000508339.2 "Breast Ovarian Cancer NGS panel" +GTR#GTR000508339.3 "Breast Ovarian Cancer NGS panel" +GTR#GTR000508339.4 "Breast Ovarian Cancer NGS panel" +GTR#GTR000508339.5 "Breast Ovarian Cancer NGS panel" +GTR#GTR000508339.6 "Breast Ovarian Cancer NGS panel" +GTR#GTR000508339.7 "Breast Ovarian Cancer NGS panel" +GTR#GTR000508339.8 "Breast Ovarian Cancer NGS panel" +GTR#GTR000508371.1 "TP53" +GTR#GTR000508371.2 "TP53" +GTR#GTR000508509.1 "BRCAvantage, Ashkenazi Jewish Screen" +GTR#GTR000508510.1 "BRCAvantage, Rearrangements" +GTR#GTR000508562.1 "BRCAvantage, Comprehensive" +GTR#GTR000508562.2 "BRCAvantage, Comprehensive" +GTR#GTR000508584.1 "Lung Cancer Susceptibility via the EGFR Gene" +GTR#GTR000508584.2 "Lung Cancer Susceptibility via the EGFR Gene" +GTR#GTR000508584.3 "Lung Cancer Susceptibility via the EGFR Gene" +GTR#GTR000508584.4 "Lung Cancer Susceptibility via the EGFR Gene" +GTR#GTR000508584.5 "Lung Cancer Susceptibility via the EGFR Gene" +GTR#GTR000508584.6 "Lung Cancer Susceptibility via the EGFR Gene" +GTR#GTR000508584.7 "Lung Cancer Susceptibility via the EGFR Gene" +GTR#GTR000508584.8 "Lung Cancer Susceptibility via the EGFR Gene" +GTR#GTR000508764.1 "Hereditary Breast and Ovarian Cancer via the RAD50 Gene" +GTR#GTR000508764.2 "Hereditary Breast and Ovarian Cancer via the RAD50 Gene" +GTR#GTR000508764.3 "Hereditary Breast and Ovarian Cancer via the RAD50 Gene" +GTR#GTR000508764.4 "Hereditary Breast and Ovarian Cancer via the RAD50 Gene" +GTR#GTR000508764.5 "Hereditary Breast and Ovarian Cancer via the RAD50 Gene" +GTR#GTR000508764.6 "Hereditary Breast and Ovarian Cancer via the RAD50 Gene" +GTR#GTR000508764.7 "Hereditary Breast and Ovarian Cancer via the RAD50 Gene" +GTR#GTR000508764.8 "Hereditary Breast and Ovarian Cancer via the RAD50 Gene" +GTR#GTR000508767.1 "Lynch Syndrome via the EPCAM Gene" +GTR#GTR000508767.10 "Lynch Syndrome via EPCAM Gene Sequencing with CNV Detection" +GTR#GTR000508767.2 "Lynch Syndrome via the EPCAM Gene" +GTR#GTR000508767.3 "Lynch Syndrome via the EPCAM Gene" +GTR#GTR000508767.4 "Lynch Syndrome via the EPCAM Gene" +GTR#GTR000508767.5 "Lynch Syndrome via the EPCAM Gene" +GTR#GTR000508767.6 "Lynch Syndrome via the EPCAM Gene" +GTR#GTR000508767.7 "Lynch Syndrome via the EPCAM Gene" +GTR#GTR000508767.8 "Lynch Syndrome via the EPCAM Gene" +GTR#GTR000508767.9 "Lynch Syndrome via EPCAM Gene Sequencing with CNV Detection" +GTR#GTR000508787.1 "Microsatellite Instability (MSI) with Immunohistochemistry (IHC)" +GTR#GTR000508787.2 "Microsatellite Instability (MSI) with Immunohistochemistry (IHC)" +GTR#GTR000508788.1 "MLH1 Deletion/Duplication" +GTR#GTR000508788.2 "MLH1 Deletion/Duplication" +GTR#GTR000508789.1 "MLH1 Sequencing and Deletion/Duplication" +GTR#GTR000508789.2 "MLH1 Sequencing and Deletion/Duplication" +GTR#GTR000508790.1 "MSH2 Deletion/Duplication" +GTR#GTR000508790.2 "MSH2 Deletion/Duplication" +GTR#GTR000508791.1 "MSH2 Sequencing and Deletion/Duplication" +GTR#GTR000508791.2 "MSH2 Sequencing and Deletion/Duplication" +GTR#GTR000508792.1 "MSH6 Deletion/Duplication" +GTR#GTR000508792.2 "MSH6 Deletion/Duplication" +GTR#GTR000508793.1 "MSH6 Sequencing and Deletion/Duplication" +GTR#GTR000508793.2 "MSH6 Sequencing and Deletion/Duplication" +GTR#GTR000508794.1 "Microsatellite Instability (MSI)" +GTR#GTR000508794.2 "Microsatellite Instability (MSI)" +GTR#GTR000508794.3 "Microsatellite Instability (MSI)" +GTR#GTR000508795.1 "MLH1 Promoter Hypermethylation" +GTR#GTR000508795.2 "MLH1 Promoter Hypermethylation" +GTR#GTR000508796.1 "MLH1 Sequencing" +GTR#GTR000508796.2 "MLH1 Sequencing" +GTR#GTR000508797.1 "MSH2 Sequencing" +GTR#GTR000508797.2 "MSH2 Sequencing" +GTR#GTR000508798.1 "MSH6 Sequencing" +GTR#GTR000508798.2 "MSH6 Sequencing" +GTR#GTR000508803.1 "MLH1, MSH2, and MSH6 Sequencing Panel" +GTR#GTR000508803.2 "MLH1, MSH2, and MSH6 Sequencing Panel" +GTR#GTR000509205.1 "Lynch Syndrome NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509205.10 "Lynch Syndrome NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509205.11 "Lynch Syndrome Sequencing and Deletion/Duplication Panel" +GTR#GTR000509205.12 "Lynch Syndrome Sequencing Panel with CNV Detection" +GTR#GTR000509205.13 "Lynch Syndrome Sequencing Panel with CNV Detection" +GTR#GTR000509205.14 "Lynch Syndrome Sequencing Panel with CNV Detection" +GTR#GTR000509205.15 "Lynch Syndrome Sequencing Panel with CNV Detection" +GTR#GTR000509205.2 "Lynch Syndrome NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509205.3 "Lynch Syndrome NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509205.4 "Lynch Syndrome NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509205.5 "Lynch Syndrome NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509205.6 "Lynch Syndrome NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509205.7 "Lynch Syndrome NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509205.8 "Lynch Syndrome NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509205.9 "Lynch Syndrome NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509312.1 "Gastrointestinal Cancer NextGen Sequencing Panel" +GTR#GTR000509312.2 "Gastrointestinal Cancer NextGen Sequencing Panel" +GTR#GTR000509312.3 "Gastrointestinal Cancer NextGen Sequencing Panel" +GTR#GTR000509326.1 "Renal Cancer NextGen Sequencing Panel" +GTR#GTR000509326.10 "Renal Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509326.11 "Renal Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509326.12 "Renal Cancer Sequencing Panel" +GTR#GTR000509326.13 "Renal Cancer Sequencing Panel" +GTR#GTR000509326.2 "Renal Cancer NextGen Sequencing Panel" +GTR#GTR000509326.3 "Renal Cancer NextGen Sequencing Panel" +GTR#GTR000509326.4 "Renal Cancer NextGen Sequencing Panel" +GTR#GTR000509326.5 "Renal Cancer NextGen Sequencing Panel" +GTR#GTR000509326.6 "Renal Cancer NextGen Sequencing Panel" +GTR#GTR000509326.7 "Renal Cancer NextGen Sequencing Panel" +GTR#GTR000509326.8 "Renal Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509326.9 "Renal Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509342.1 "Autism NGS panel" +GTR#GTR000509342.10 "Autism NGS Panel" +GTR#GTR000509342.11 "Autism NGS Panel" +GTR#GTR000509342.2 "Autism NGS panel" +GTR#GTR000509342.3 "Autism NGS panel" +GTR#GTR000509342.4 "Autism NGS panel" +GTR#GTR000509342.5 "Autism NGS panel" +GTR#GTR000509342.6 "Autism NGS panel" +GTR#GTR000509342.7 "Autism NGS Panel" +GTR#GTR000509342.8 "Autism NGS Panel" +GTR#GTR000509342.9 "Autism NGS Panel" +GTR#GTR000509348.1 "High-Risk Hereditary Breast Cancers Panel" +GTR#GTR000509349.1 "Hereditary breast and ovarian cancer syndrome (BRCA 1 & BRCA 2)" +GTR#GTR000509350.1 "High-Risk Hereditary Colon Cancers Panel" +GTR#GTR000509351.1 "Lynch syndrome" +GTR#GTR000509354.1 "PALB2-related hereditary breast cancer" +GTR#GTR000509372.1 "Connective tissue diseases NGS Panel" +GTR#GTR000509372.10 "Connective Tissue NGS Panel" +GTR#GTR000509372.11 "Connective Tissue NGS Panel" +GTR#GTR000509372.2 "Connective tissue diseases NGS Panel" +GTR#GTR000509372.3 "Connective tissue diseases NGS Panel" +GTR#GTR000509372.4 "Connective tissue diseases NGS Panel" +GTR#GTR000509372.5 "Connective tissue diseases NGS Panel" +GTR#GTR000509372.6 "Connective tissue diseases NGS Panel" +GTR#GTR000509372.7 "Connective Tissue Diseases NGS Panel" +GTR#GTR000509372.8 "Connective Tissue NGS Panel" +GTR#GTR000509372.9 "Connective Tissue NGS Panel" +GTR#GTR000509399.1 "Epilepsy NGS Panel" +GTR#GTR000509399.10 "Epilepsy NGS Panel" +GTR#GTR000509399.2 "Epilepsy NGS Panel" +GTR#GTR000509399.3 "Epilepsy NGS Panel" +GTR#GTR000509399.4 "Epilepsy NGS Panel" +GTR#GTR000509399.5 "Epilepsy NGS Panel" +GTR#GTR000509399.6 "Epilepsy NGS Panel" +GTR#GTR000509399.7 "Epilepsy NGS Panel" +GTR#GTR000509399.8 "Epilepsy NGS Panel" +GTR#GTR000509399.9 "Epilepsy NGS Panel" +GTR#GTR000509427.1 "Hereditary Cancer NGS Panel" +GTR#GTR000509427.2 "Hereditary Cancer NGS Panel" +GTR#GTR000509427.3 "Hereditary Cancer NGS Panel" +GTR#GTR000509427.4 "Hereditary Cancer NGS Panel" +GTR#GTR000509427.5 "Hereditary Cancer NGS Panel" +GTR#GTR000509427.6 "Hereditary Cancer NGS Panel" +GTR#GTR000509427.7 "Hereditary Cancer NGS Panel" +GTR#GTR000509427.8 "Hereditary Cancer NGS Panel" +GTR#GTR000509427.9 "Hereditary Cancer NGS Panel" +GTR#GTR000509431.1 "Leukoencephalopathy NGS Panel" +GTR#GTR000509431.2 "Leukoencephalopathy NGS Panel" +GTR#GTR000509431.3 "Leukoencephalopathy NGS Panel" +GTR#GTR000509431.4 "Leukoencephalopathy NGS Panel" +GTR#GTR000509431.5 "Leukoencephalopathy NGS Panel" +GTR#GTR000509431.6 "Leukoencephalopathy NGS Panel" +GTR#GTR000509431.7 "Leukoencephalopathy NGS Panel" +GTR#GTR000509431.8 "Leukoencephalopathy NGS Panel" +GTR#GTR000509431.9 "Leukoencephalopathy NGS Panel" +GTR#GTR000509432.1 "Lactic Acidosis Pyruvate NGS Panel" +GTR#GTR000509432.10 "Lactic Acidosis-Pyruvate NGS Panel" +GTR#GTR000509432.11 "Lactic Acidosis-Pyruvate NGS Panel" +GTR#GTR000509432.2 "Lactic Acidosis Pyruvate NGS Panel" +GTR#GTR000509432.3 "Lactic Acidosis Pyruvate NGS Panel" +GTR#GTR000509432.4 "Lactic Acidosis Pyruvate NGS Panel" +GTR#GTR000509432.5 "Lactic Acidosis Pyruvate NGS Panel" +GTR#GTR000509432.6 "Lactic Acidosis Pyruvate NGS Panel" +GTR#GTR000509432.7 "Lactic Acidosis-Pyruvate NGS Panel" +GTR#GTR000509432.8 "Lactic Acidosis-Pyruvate NGS Panel" +GTR#GTR000509432.9 "Lactic Acidosis-Pyruvate NGS Panel" +GTR#GTR000509436.1 "Lysosomal Disorders NGS Panel" +GTR#GTR000509436.10 "Lysosomal Disorders NGS Panel" +GTR#GTR000509436.2 "Lysosomal Disorders NGS Panel" +GTR#GTR000509436.3 "Lysosomal Disorders NGS Panel" +GTR#GTR000509436.4 "Lysosomal Disorders NGS Panel" +GTR#GTR000509436.5 "Lysosomal Disorders NGS Panel" +GTR#GTR000509436.6 "Lysosomal Disorders NGS Panel" +GTR#GTR000509436.7 "Lysosomal Disorders NGS Panel" +GTR#GTR000509436.8 "Lysosomal Disorders NGS Panel" +GTR#GTR000509436.9 "Lysosomal Disorders NGS Panel" +GTR#GTR000509441.1 "Macular Degeneration NGS Panel" +GTR#GTR000509441.2 "Macular Degeneration NGS Panel" +GTR#GTR000509441.3 "Macular Degeneration NGS Panel" +GTR#GTR000509441.4 "Macular Degeneration NGS Panel" +GTR#GTR000509441.5 "Macular Degeneration NGS Panel" +GTR#GTR000509441.6 "Macular Degeneration NGS Panel" +GTR#GTR000509441.7 "Macular Degeneration NGS Panel" +GTR#GTR000509441.8 "Macular Degeneration NGS Panel" +GTR#GTR000509441.9 "Macular Degeneration NGS Panel" +GTR#GTR000509442.1 "Intellectual Disability NGS Panel" +GTR#GTR000509442.10 "Intellectual Disability NGS Panel" +GTR#GTR000509442.2 "Intellectual Disability NGS Panel" +GTR#GTR000509442.3 "Intellectual Disability NGS Panel" +GTR#GTR000509442.4 "Intellectual Disability NGS Panel" +GTR#GTR000509442.5 "Intellectual Disability NGS Panel" +GTR#GTR000509442.6 "Intellectual Disability NGS Panel" +GTR#GTR000509442.7 "Intellectual Disability NGS Panel" +GTR#GTR000509442.8 "Intellectual Disability NGS Panel" +GTR#GTR000509442.9 "Intellectual Disability NGS Panel" +GTR#GTR000509450.1 "BRCA1 and BRCA2 genes sequence analysis" +GTR#GTR000509450.10 "BRCA1 and BRCA2 Full Gene Sequencing" +GTR#GTR000509450.11 "BRCA1 and BRCA2 Full Gene Sequencing" +GTR#GTR000509450.12 "BRCA1 and BRCA2 Full Gene Sequencing" +GTR#GTR000509450.2 "BRCA1 and BRCA2 genes sequence analysis" +GTR#GTR000509450.3 "BRCA1 and BRCA2 genes sequence analysis" +GTR#GTR000509450.4 "BRCA1 and BRCA2 genes sequence analysis" +GTR#GTR000509450.5 "BRCA1 and BRCA2 genes sequence analysis" +GTR#GTR000509450.6 "BRCA1 and BRCA2 genes sequence analysis" +GTR#GTR000509450.7 "BRCA1 and BRCA2 Genes Sequence Analysis" +GTR#GTR000509450.8 "BRCA1 and BRCA2 Genes Sequence Analysis" +GTR#GTR000509450.9 "BRCA1 and BRCA2 Full Gene Sequencing" +GTR#GTR000509451.1 "BRCA1 and BRCA2 deletion/duplication analysis" +GTR#GTR000509451.2 "BRCA1 and BRCA2 deletion/duplication analysis" +GTR#GTR000509451.3 "BRCA1 and BRCA2 deletion/duplication analysis" +GTR#GTR000509451.4 "BRCA1 and BRCA2 deletion/duplication analysis" +GTR#GTR000509451.5 "BRCA1 and BRCA2 deletion/duplication analysis" +GTR#GTR000509451.6 "BRCA1 and BRCA2 deletion/duplication analysis" +GTR#GTR000509451.7 "BRCA1 and BRCA2 Deletion/Duplication Analysis" +GTR#GTR000509451.8 "BRCA1 and BRCA2 Deletion/Duplication Analysis" +GTR#GTR000509451.9 "BRCA1 and BRCA2 Deletion/Duplication Analysis" +GTR#GTR000509456.1 "Parkinson Alzheimer Dementia NGS Panel" +GTR#GTR000509456.10 "Parkinson-Alzheimer-Dementia NGS Panel" +GTR#GTR000509456.11 "Parkinson-Alzheimer-Dementia NGS Panel" +GTR#GTR000509456.2 "Parkinson Alzheimer Dementia NGS Panel" +GTR#GTR000509456.3 "Parkinson Alzheimer Dementia NGS Panel" +GTR#GTR000509456.4 "Parkinson Alzheimer Dementia NGS Panel" +GTR#GTR000509456.5 "Parkinson Alzheimer Dementia NGS Panel" +GTR#GTR000509456.6 "Parkinson Alzheimer Dementia NGS Panel" +GTR#GTR000509456.7 "Parkinson-Alzheimer-Dementia NGS Panel" +GTR#GTR000509456.8 "Parkinson-Alzheimer-Dementia NGS Panel" +GTR#GTR000509456.9 "Parkinson-Alzheimer-Dementia NGS Panel" +GTR#GTR000509460.1 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication" +GTR#GTR000509460.2 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication" +GTR#GTR000509460.3 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication" +GTR#GTR000509460.4 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication" +GTR#GTR000509460.5 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication" +GTR#GTR000509460.6 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication" +GTR#GTR000509460.7 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication Analysis" +GTR#GTR000509460.8 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication Analysis" +GTR#GTR000509460.9 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication Analysis" +GTR#GTR000509461.1 "Primordial Dwarfism NGS Panel" +GTR#GTR000509461.2 "Primordial Dwarfism NGS Panel" +GTR#GTR000509461.3 "Primordial Dwarfism NGS Panel" +GTR#GTR000509461.4 "Primordial Dwarfism NGS Panel" +GTR#GTR000509461.5 "Primordial Dwarfism NGS Panel" +GTR#GTR000509461.6 "Primordial Dwarfism NGS Panel" +GTR#GTR000509461.7 "Primordial Dwarfism NGS Panel" +GTR#GTR000509461.8 "Primordial Dwarfism NGS Panel" +GTR#GTR000509461.9 "Primordial Dwarfism NGS Panel" +GTR#GTR000509474.1 "CHEK2-Related c.1100delC Founder Mutation" +GTR#GTR000509474.2 "CHEK2-Related c.1100delC Founder Mutation" +GTR#GTR000509474.3 "CHEK2-Related c.1100delC Founder Mutation" +GTR#GTR000509598.1 "Hereditary Breast and Ovarian Cancer via the RAD51D Gene" +GTR#GTR000509598.2 "Hereditary Breast and Ovarian Cancer via the RAD51D Gene" +GTR#GTR000509598.3 "Hereditary Breast and Ovarian Cancer via the RAD51D Gene" +GTR#GTR000509598.4 "Hereditary Breast and Ovarian Cancer via the RAD51D Gene" +GTR#GTR000509598.5 "Hereditary Breast and Ovarian Cancer via the RAD51D Gene" +GTR#GTR000509598.6 "Hereditary Breast and Ovarian Cancer via the RAD51D Gene" +GTR#GTR000509598.7 "Hereditary Breast and Ovarian Cancer via the RAD51D Gene" +GTR#GTR000509598.8 "Hereditary Breast and Ovarian Cancer via RAD51D Gene Sequencing with CNV Detection" +GTR#GTR000509598.9 "Hereditary Breast and Ovarian Cancer via RAD51D Gene Sequencing with CNV Detection" +GTR#GTR000509692.1 "Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509692.10 "Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509692.11 "Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509692.12 "Cancer NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509692.13 "Cancer NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509692.14 "Cancer NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509692.15 "Cancer NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509692.16 "Cancer NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509692.17 "Cancer NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509692.18 "Cancer NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000509692.19 "Cancer Sequencing and Deletion/Duplication Panel" +GTR#GTR000509692.2 "Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509692.20 "Cancer Sequencing and Deletion/Duplication Panel" +GTR#GTR000509692.21 "Cancer Sequencing Panel with CNV Detection" +GTR#GTR000509692.22 "Cancer Sequencing Panel with CNV Detection" +GTR#GTR000509692.23 "Cancer Sequencing Panel with CNV Detection" +GTR#GTR000509692.24 "Cancer Sequencing Panel with CNV Detection" +GTR#GTR000509692.3 "Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509692.4 "Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509692.5 "Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509692.6 "Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509692.7 "Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509692.8 "Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509692.9 "Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509697.1 "Pancreatic Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509697.10 "Pancreatic Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509697.11 "Pancreatic Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509697.12 "Pancreatic Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509697.13 "Pancreatic Cancer Sequencing Panel" +GTR#GTR000509697.14 "Pancreatic Cancer Sequencing Panel" +GTR#GTR000509697.15 "Pancreatic Cancer Sequencing Panel with CNV Detection" +GTR#GTR000509697.16 "Pancreatic Cancer Sequencing Panel with CNV Detection" +GTR#GTR000509697.17 "Pancreatic Cancer Sequencing Panel with CNV Detection" +GTR#GTR000509697.2 "Pancreatic Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509697.3 "Pancreatic Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509697.4 "Pancreatic Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509697.5 "Pancreatic Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509697.6 "Pancreatic Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509697.7 "Pancreatic Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509697.8 "Pancreatic Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509697.9 "Pancreatic Cancer NextGen Sequencing (NGS) Panel" +GTR#GTR000509978.1 "BRCA Ashkenazi Jewish 3 founder mutation testing" +GTR#GTR000509980.1 "BRCA1 and BRCA2 mutation panel" +GTR#GTR000509982.1 "BRCA1 deletion/duplication testing" +GTR#GTR000509983.1 "BRCA1 full gene sequencing" +GTR#GTR000509984.1 "BRCA2 deletion/duplication testing" +GTR#GTR000509985.1 "BRCA2 Gene Sequencing" +GTR#GTR000510868.1 "TCA Cycle NGS Panel" +GTR#GTR000510868.2 "TCA Cycle NGS Panel" +GTR#GTR000510868.3 "TCA Cycle NGS Panel" +GTR#GTR000510868.4 "TCA Cycle NGS Panel" +GTR#GTR000510868.5 "TCA Cycle NGS Panel" +GTR#GTR000510868.6 "TCA Cycle NGS Panel" +GTR#GTR000510868.7 "TCA Cycle NGS Panel" +GTR#GTR000510868.8 "TCA Cycle NGS Panel" +GTR#GTR000510868.9 "TCA Cycle NGS Panel" +GTR#GTR000510869.1 "Thyroid Cancer NGS Panel" +GTR#GTR000510869.2 "Thyroid Cancer NGS Panel" +GTR#GTR000510869.3 "Thyroid Cancer NGS Panel" +GTR#GTR000510869.4 "Thyroid Cancer NGS Panel" +GTR#GTR000510869.5 "Thyroid Cancer NGS Panel" +GTR#GTR000510869.6 "Thyroid Cancer NGS Panel" +GTR#GTR000510869.7 "Thyroid Cancer NGS Panel" +GTR#GTR000510869.8 "Thyroid Cancer NGS Panel" +GTR#GTR000510869.9 "Thyroid Cancer NGS Panel" +GTR#GTR000510871.1 "Sudden Death Syndrome NGS Panel" +GTR#GTR000510871.10 "Sudden Death Syndrome NGS Panel" +GTR#GTR000510871.2 "Sudden Death Syndrome NGS Panel" +GTR#GTR000510871.3 "Sudden Death Syndrome NGS Panel" +GTR#GTR000510871.4 "Sudden Death Syndrome NGS Panel" +GTR#GTR000510871.5 "Sudden Death Syndrome NGS Panel" +GTR#GTR000510871.6 "Sudden Death Syndrome NGS Panel" +GTR#GTR000510871.7 "Sudden Death Syndrome NGS Panel" +GTR#GTR000510871.8 "Sudden Death Syndrome NGS Panel" +GTR#GTR000510871.9 "Sudden Death Syndrome NGS Panel" +GTR#GTR000510913.1 "Short Stature NGS Panel" +GTR#GTR000510913.2 "Short Stature NGS Panel" +GTR#GTR000510913.3 "Short Stature NGS Panel" +GTR#GTR000510913.4 "Short Stature NGS Panel" +GTR#GTR000510913.5 "Short Stature NGS Panel" +GTR#GTR000510913.6 "Short Stature NGS Panel" +GTR#GTR000510913.7 "Short Stature NGS Panel" +GTR#GTR000510913.8 "Short Stature NGS Panel" +GTR#GTR000510913.9 "Short Stature NGS Panel" +GTR#GTR000510914.1 "Kidney Renal Cancer NGS Panel" +GTR#GTR000510914.2 "Kidney Renal Cancer NGS Panel" +GTR#GTR000510914.3 "Kidney Renal Cancer NGS Panel" +GTR#GTR000510914.4 "Kidney Renal Cancer NGS Panel" +GTR#GTR000510914.5 "Kidney Renal Cancer NGS Panel" +GTR#GTR000510914.6 "Kidney Renal Cancer NGS Panel" +GTR#GTR000510914.7 "Kidney Renal Cancer NGS Panel" +GTR#GTR000510914.8 "Kidney Renal Cancer NGS Panel" +GTR#GTR000510914.9 "Kidney Renal Cancer NGS Panel" +GTR#GTR000510915.1 "Nuclear-Mito 500 NGS Panel" +GTR#GTR000510915.10 "Nuclear-Mito NGS Panel" +GTR#GTR000510915.11 "Nuclear-Mito NGS Panel" +GTR#GTR000510915.2 "Nuclear-Mito 500 NGS Panel" +GTR#GTR000510915.3 "Nuclear-Mito 500 NGS Panel" +GTR#GTR000510915.4 "Nuclear-Mito 500 NGS Panel" +GTR#GTR000510915.5 "Nuclear-Mito 500 NGS Panel" +GTR#GTR000510915.6 "Nuclear-Mito 500 NGS Panel" +GTR#GTR000510915.7 "Nuclear-Mito NGS Panel" +GTR#GTR000510915.8 "Nuclear-Mito NGS Panel" +GTR#GTR000510915.9 "Nuclear-Mito NGS Panel" +GTR#GTR000511640.1 "PTEN Sequencing" +GTR#GTR000511833.1 "BRAF Sequence Analysis" +GTR#GTR000511834.1 "BRAF Sequence Analysis (Familial Mutation/Variant Analysis)" +GTR#GTR000511837.1 "BRAF Sequence Analysis (Prenatal Diagnosis)" +GTR#GTR000512022.1 "KRAS Sequence Analysis" +GTR#GTR000512023.1 "KRAS Sequence Analysis (Familial Mutation/Variant Analysis)" +GTR#GTR000512024.1 "KRAS Sequence Analysis (Prenatal Diagnosis)" +GTR#GTR000512072.1 "NRAS Sequence Analysis" +GTR#GTR000512073.1 "NRAS Sequence Analysis (Familial Mutation/Variant Analysis)" +GTR#GTR000512075.1 "NRAS Sequence Analysis (Prenatal Diagnosis)" +GTR#GTR000512240.1 "Hereditary Hemorrhagic Telangiectasia NGS Panel" +GTR#GTR000512240.2 "Hereditary Hemorrhagic Telangiectasia NGS Panel" +GTR#GTR000512240.3 "Hereditary Hemorrhagic Telangiectasia NGS Panel" +GTR#GTR000512240.4 "Hereditary Hemorrhagic Telangiectasia NGS Panel" +GTR#GTR000512240.5 "Hereditary Hemorrhagic Telangiectasia NGS Panel" +GTR#GTR000512240.6 "Hereditary Hemorrhagic Telangiectasia NGS Panel" +GTR#GTR000512240.7 "Hereditary Hemorrhagic Telangiectasia NGS Panel" +GTR#GTR000512325.1 "Cardiomyopathy: Sequencing and Deletion/Duplication Panel" +GTR#GTR000512325.2 "Cardiomyopathy: Sequencing and Deletion/Duplication Panel" +GTR#GTR000512331.1 "Marfan Syndrome, Thoracic Aortic Aneurysm & Dissection (TAAD), and Related Disorders: Sequencing Panel" +GTR#GTR000512331.2 "Marfan Syndrome, Thoracic Aortic Aneurysm & Dissection (TAAD), and Related Disorders: Sequencing Panel" +GTR#GTR000512417.1 "Inflammatory Bowel Disease: Sequencing Panel" +GTR#GTR000512417.2 "Inflammatory Bowel Disease: Sequencing Panel" +GTR#GTR000512417.3 "Inflammatory Bowel Disease: Sequencing Panel" +GTR#GTR000512417.4 "Early Onset Inflammatory Bowel Disease: Sequencing Panel" +GTR#GTR000512421.1 "Noonan Syndrome and Related Disorders: Sequencing Panel" +GTR#GTR000512423.1 "Proportionate Short Stature/Small for Gestational Age: Sequencing and Deletion/Duplication Panel" +GTR#GTR000512587.1 "Autism Panel: Tier 2" +GTR#GTR000512587.2 "Autism Panel: Tier 2" +GTR#GTR000512587.3 "Autism Panel: Tier 2" +GTR#GTR000512587.4 "Autism Panel: Tier 2" +GTR#GTR000512587.5 "Autism Panel: Tier 2" +GTR#GTR000512587.6 "Autism Spectrum Disorders: Tier 2 Panel" +GTR#GTR000512594.1 "Connective Tissue Disorders: Sequencing Panel" +GTR#GTR000512594.2 "Connective Tissue Disorders: Sequencing Panel" +GTR#GTR000512594.3 "Connective Tissue Disorders: Sequencing Panel" +GTR#GTR000512606.1 "Macrocephaly: Sequencing Panel" +GTR#GTR000512608.1 "Neurology: Sequencing Panel" +GTR#GTR000512608.2 "Neurology: Sequencing Panel" +GTR#GTR000512650.1 "Hereditary Cancer Syndrome: Sequencing Panel" +GTR#GTR000512650.2 "Hereditary Cancer Syndrome: Sequencing Panel" +GTR#GTR000512650.3 "Hereditary Cancer Syndrome: Sequencing Panel" +GTR#GTR000512650.4 "Hereditary Cancer Syndrome: Sequencing Panel" +GTR#GTR000512650.5 "Hereditary Cancer Syndrome: Sequencing Panel" +GTR#GTR000512726.1 "Tissue of Origin" +GTR#GTR000512726.2 "Tissue of Origin" +GTR#GTR000512726.3 "Tissue of Origin" +GTR#GTR000512827.1 "BRCATRUE‚Ñ¢" +GTR#GTR000512827.2 "BRCATRUE‚Ñ¢" +GTR#GTR000512827.3 "BRCATRUE‚Ñ¢" +GTR#GTR000512828.1 "COLOTRUE‚Ñ¢" +GTR#GTR000512828.2 "COLOTRUE‚Ñ¢" +GTR#GTR000512828.3 "COLOTRUE‚Ñ¢" +GTR#GTR000512828.4 "COLOTRUE‚Ñ¢" +GTR#GTR000514555.1 "RRM1 expression" +GTR#GTR000514555.2 "RRM1 expression" +GTR#GTR000514557.1 "EGFR Mutation by Sanger Sequencing" +GTR#GTR000514557.2 "EGFR Mutation by Sanger Sequencing" +GTR#GTR000514559.1 "RET Break Apart FISH" +GTR#GTR000514559.2 "RET Break Apart FISH" +GTR#GTR000514560.1 "ROS1 Break Apart FISH" +GTR#GTR000514560.2 "ROS1 Break Apart FISH" +GTR#GTR000514561.1 "KRAS Mutation by PCR" +GTR#GTR000514561.2 "KRAS Mutation by PCR" +GTR#GTR000514563.1 "HER2 Mutation by Sanger Sequencing" +GTR#GTR000514563.2 "HER2 Mutation by Sanger Sequencing" +GTR#GTR000514565.1 "PIK3CA Mutation by Sequencing" +GTR#GTR000514565.2 "PIK3CA Mutation by Sequencing" +GTR#GTR000514566.1 "BRAF Mutation by RT-PCR" +GTR#GTR000514566.2 "BRAF Mutation by RT-PCR" +GTR#GTR000514568.1 "MET Amplification" +GTR#GTR000514568.2 "MET Amplification" +GTR#GTR000514570.1 "ALK Break Apart FISH" +GTR#GTR000514570.2 "ALK Break Apart FISH" +GTR#GTR000514571.1 "ERCC1 expression" +GTR#GTR000514571.2 "ERCC1 expression" +GTR#GTR000514572.1 "EML4-ALK Rearrangement" +GTR#GTR000514572.2 "EML4-ALK Rearrangement" +GTR#GTR000514572.3 "EML4-ALK Rearrangement" +GTR#GTR000514573.1 "TS Expression" +GTR#GTR000514573.2 "TS Expression" +GTR#GTR000514575.1 "NRAS Mutation by Sequencing" +GTR#GTR000514575.2 "NRAS Mutation by Sequencing" +GTR#GTR000514576.1 "cMet expression" +GTR#GTR000514577.1 "FGFR1 amplification FISH" +GTR#GTR000514577.2 "FGFR1 amplification FISH" +GTR#GTR000514591.1 "ROS1 Rearrangement" +GTR#GTR000514591.2 "ROS1 Rearrangement" +GTR#GTR000514728.1 "MLH1 Full Gene Analysis" +GTR#GTR000514728.2 "MLH1 Full Gene Sequencing" +GTR#GTR000514728.3 "MLH1 Full Gene Sequencing" +GTR#GTR000514728.4 "MLH1 Full Gene Sequencing" +GTR#GTR000514729.1 "MSH2 Full Gene Analysis" +GTR#GTR000514729.2 "MSH2 Full Gene Sequencing" +GTR#GTR000514729.3 "MSH2 Full Gene Sequencing" +GTR#GTR000514729.4 "MSH2 Full Gene Sequencing" +GTR#GTR000514730.1 "MSH6 Full Gene Analysis" +GTR#GTR000514730.2 "MSH6 Full Gene Sequencing" +GTR#GTR000514730.3 "MSH6 Full Gene Sequencing" +GTR#GTR000514730.4 "MSH6 Full Gene Sequencing" +GTR#GTR000514731.1 "PMS2 Full Gene Analysis" +GTR#GTR000514731.2 "PMS2 Full Gene Sequencing" +GTR#GTR000514731.3 "PMS2 Full Gene Sequencing" +GTR#GTR000514731.4 "PMS2 Full Gene Sequencing" +GTR#GTR000514882.1 "devSEEK‚Ñ¢ Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" +GTR#GTR000514882.2 "devSEEK‚Ñ¢ Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" +GTR#GTR000514882.3 "devSEEK‚Ñ¢ Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" +GTR#GTR000514882.4 "devSEEK‚Ñ¢ Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" +GTR#GTR000514882.5 "devSEEK¬Æ Sequence Analysis for Neurodevelopmental Disorders" +GTR#GTR000514883.1 "BRAF Full Gene Sequencing" +GTR#GTR000514883.2 "BRAF Full Gene Sequencing" +GTR#GTR000514883.3 "BRAF Full Gene Sequencing" +GTR#GTR000514884.1 "EGFR Full Gene Sequencing" +GTR#GTR000514884.2 "EGFR Full Gene Sequencing" +GTR#GTR000514884.3 "EGFR Full Gene Sequencing" +GTR#GTR000514885.1 "KRAS Full Gene Analysis" +GTR#GTR000514885.2 "KRAS Full Gene Analysis" +GTR#GTR000514885.3 "KRAS Full Gene Analysis" +GTR#GTR000514909.1 "Lynch syndrome" +GTR#GTR000514909.2 "Lynch syndrome" +GTR#GTR000514909.3 "Invitae Lynch Syndrome Panel" +GTR#GTR000514909.4 "Invitae Lynch Syndrome Panel" +GTR#GTR000514909.5 "Invitae Lynch Syndrome Panel" +GTR#GTR000514909.6 "Invitae Lynch Syndrome Panel" +GTR#GTR000514910.1 "Hereditary diffuse gastric cancer" +GTR#GTR000514910.2 "Invitae Hereditary Diffuse Gastric Cancer Syndrome Test" +GTR#GTR000514910.3 "Invitae Hereditary Diffuse Gastric Cancer Syndrome Test" +GTR#GTR000514910.4 "Invitae Hereditary Diffuse Gastric Cancer Syndrome Test" +GTR#GTR000514910.5 "Invitae Hereditary Diffuse Gastric Cancer Syndrome Test" +GTR#GTR000514913.1 "Hereditary pancreatic cancer" +GTR#GTR000514913.2 "Hereditary pancreatic cancer" +GTR#GTR000514913.3 "Hereditary pancreatic cancer" +GTR#GTR000514913.4 "Invitae Pancreatic Cancer Panel" +GTR#GTR000514913.5 "Invitae Pancreatic Cancer Panel" +GTR#GTR000514913.6 "Invitae Pancreatic Cancer Panel" +GTR#GTR000514913.7 "Invitae Pancreatic Cancer Panel" +GTR#GTR000514918.4 "Invitae Familial Adenomatous Polyposis Test" +GTR#GTR000514918.5 "Invitae Familial Adenomatous Polyposis Test" +GTR#GTR000514921.1 "Hereditary breast and ovarian cancer syndrome" +GTR#GTR000514921.2 "Invitae Hereditary Breast and Ovarian Cancer Syndrome Panel" +GTR#GTR000514921.3 "Invitae Hereditary Breast and Ovarian Cancer Syndrome Panel" +GTR#GTR000514921.4 "Invitae Hereditary Breast and Ovarian Cancer Syndrome Panel" +GTR#GTR000514921.5 "Invitae Hereditary Breast and Ovarian Cancer Syndrome Panel" +GTR#GTR000514922.4 "Invitae Peutz-Jeghers Syndrome Test" +GTR#GTR000514922.5 "Invitae Peutz-Jeghers Syndrome Test" +GTR#GTR000514927.1 "Hereditary cancer syndromes" +GTR#GTR000514927.2 "Hereditary cancer syndromes" +GTR#GTR000514927.3 "Hereditary cancer syndromes" +GTR#GTR000514927.4 "Invitae Hereditary Cancer Syndromes Panel" +GTR#GTR000514929.1 "Women's hereditary cancer syndromes" +GTR#GTR000514929.2 "Women's hereditary cancer syndromes" +GTR#GTR000514929.3 "Hereditary breast and gynecologic cancers (Women's hereditary cancers)" +GTR#GTR000514929.4 "Hereditary breast and gynecologic cancers (Women's hereditary cancers)" +GTR#GTR000514929.5 "Invitae Breast and Gyn Cancers Panel" +GTR#GTR000514929.6 "Invitae Breast and Gyn Cancers Panel" +GTR#GTR000514929.7 "Invitae Breast and Gyn Cancers Panel" +GTR#GTR000514929.8 "Invitae Breast and Gyn Cancers Panel" +GTR#GTR000514931.1 "Familial pancreatic adenocarcinoma" +GTR#GTR000514934.1 "High-risk hereditary breast cancers" +GTR#GTR000514934.2 "High-risk hereditary breast cancers" +GTR#GTR000514934.3 "Hereditary breast cancer, high-risk panel" +GTR#GTR000514951.4 "Invitae MUTYH-Associated Polyposis Syndrome Test" +GTR#GTR000514951.5 "Invitae MUTYH-Associated Polyposis Syndrome Test" +GTR#GTR000514977.4 "Invitae Juvenile Polyposis Syndrome Panel" +GTR#GTR000514977.5 "Invitae Juvenile Polyposis Syndrome Panel" +GTR#GTR000514990.1 "High-risk hereditary colon cancers" +GTR#GTR000514990.2 "Hereditary colon cancer, high-risk panel" +GTR#GTR000514990.3 "Hereditary colon cancer, high-risk panel" +GTR#GTR000514990.4 "Invitae Colorectal Cancer High-Risk Panel" +GTR#GTR000514990.5 "Invitae Colorectal Cancer Guidelines-Based Panel" +GTR#GTR000514990.6 "Invitae Colorectal Cancer Guidelines-Based Panel" +GTR#GTR000514990.7 "Invitae Colorectal Cancer Guidelines-Based Panel" +GTR#GTR000514990.8 "Invitae Colorectal Cancer Guidelines-Based Panel" +GTR#GTR000514990.9 "Invitae Colorectal Cancer Guidelines-Based Panel" +GTR#GTR000514991.1 "Familial cutaneous melanoma" +GTR#GTR000514991.2 "Invitae Melanoma-Pancreatic Cancer Syndrome" +GTR#GTR000514991.3 "Invitae Melanoma-Pancreatic Cancer Syndrome Panel" +GTR#GTR000514991.4 "Invitae Melanoma-Pancreatic Cancer Syndrome Panel" +GTR#GTR000514991.5 "Invitae Melanoma-Pancreatic Cancer Syndrome Panel" +GTR#GTR000514996.1 "Hereditary colon cancers" +GTR#GTR000514996.2 "Hereditary colon cancer" +GTR#GTR000514996.3 "Hereditary colon cancer" +GTR#GTR000514996.4 "Invitae Colorectal Cancer Panel" +GTR#GTR000514996.5 "Invitae Colorectal Cancer Panel" +GTR#GTR000514996.6 "Invitae Colorectal Cancer Panel" +GTR#GTR000514996.7 "Invitae Colorectal Cancer Panel" +GTR#GTR000515002.1 "EGFR Mutation Analysis (cobas¬Æ)" +GTR#GTR000515009.1 "ALK Break Apart FISH Probe" +GTR#GTR000515013.1 "HER2/neu (PathVysion¬Æ)" +GTR#GTR000515018.1 "KRAS Mutation Analysis" +GTR#GTR000515033.1 "EGFR Mutation Analysis" +GTR#GTR000515046.1 "TruGenome Predisposition Screen" +GTR#GTR000515046.2 "TruGenome Predisposition Screen" +GTR#GTR000515046.3 "TruGenome Predisposition Screen" +GTR#GTR000515046.4 "TruGenome Predisposition Screen (Whole Genome Sequencing)" +GTR#GTR000515534.1 "Gastrointestinal Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 15 Genes" +GTR#GTR000515534.2 "Gastrointestinal Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 15 Genes" +GTR#GTR000515534.3 "Gastrointestinal Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 15 Genes" +GTR#GTR000515534.4 "Gastrointestinal Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 16 Genes" +GTR#GTR000515534.5 "Gastrointestinal Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 16 Genes" +GTR#GTR000515767.1 "Gastrointestinal Cancer NextGen Sequencing (NGS) And Deletion/Duplication Panel" +GTR#GTR000515767.10 "Colorectal Cancer NextGen Sequencing (NGS) And Deletion/Duplication Panel" +GTR#GTR000515767.11 "Colorectal Cancer NextGen Sequencing (NGS) And Deletion/Duplication Panel" +GTR#GTR000515767.12 "Colorectal Cancer NextGen Sequencing (NGS) And Deletion/Duplication Panel" +GTR#GTR000515767.13 "Colorectal Cancer NextGen Sequencing (NGS) And Deletion/Duplication Panel" +GTR#GTR000515767.14 "Colorectal Cancer Sequencing And Deletion/Duplication Panel" +GTR#GTR000515767.15 "Colorectal Cancer Sequencing And Deletion/Duplication Panel" +GTR#GTR000515767.16 "Colorectal Cancer Sequencing Panel with CNV Detection" +GTR#GTR000515767.17 "Colorectal Cancer Sequencing Panel with CNV Detection" +GTR#GTR000515767.18 "Colorectal Cancer Sequencing Panel with CNV Detection" +GTR#GTR000515767.19 "Colorectal Cancer Sequencing Panel with CNV Detection" +GTR#GTR000515767.2 "Gastrointestinal Cancer NextGen Sequencing (NGS) And Deletion/Duplication Panel" +GTR#GTR000515767.3 "Colorectal Cancer NextGen Sequencing (NGS) And Deletion/Duplication Panel" +GTR#GTR000515767.4 "Colorectal Cancer NextGen Sequencing (NGS) And Deletion/Duplication Panel" +GTR#GTR000515767.5 "Colorectal Cancer NextGen Sequencing (NGS) And Deletion/Duplication Panel" +GTR#GTR000515767.6 "Colorectal Cancer NextGen Sequencing (NGS) And Deletion/Duplication Panel" +GTR#GTR000515767.7 "Colorectal Cancer NextGen Sequencing (NGS) And Deletion/Duplication Panel" +GTR#GTR000515767.8 "Colorectal Cancer NextGen Sequencing (NGS) And Deletion/Duplication Panel" +GTR#GTR000515767.9 "Colorectal Cancer NextGen Sequencing (NGS) And Deletion/Duplication Panel" +GTR#GTR000515770.1 "CDH1 deletion/duplication" +GTR#GTR000515771.1 "CHEK2 (Checkpoint Kinase 2) deletion/duplication analysis" +GTR#GTR000515774.1 "Microsatellite Instability Analysis" +GTR#GTR000515774.2 "Microsatellite Instability Analysis" +GTR#GTR000515820.1 "Cockayne Syndrome NGS Panel" +GTR#GTR000515820.2 "Cockayne Syndrome NGS Panel" +GTR#GTR000515820.3 "Cockayne Syndrome NGS Panel" +GTR#GTR000515820.4 "Cockayne Syndrome NGS Panel" +GTR#GTR000515830.1 "Cardio-Facio-Cutaneous Syndrome NGS Panel" +GTR#GTR000515830.2 "Cardio-Facio-Cutaneous Syndrome NGS Panel" +GTR#GTR000515830.3 "Cardio-Facio-Cutaneous Syndrome NGS Panel" +GTR#GTR000515830.4 "Cardio-Facio-Cutaneous Syndrome NGS Panel" +GTR#GTR000515841.1 "Renal/Kidney NGS Panel" +GTR#GTR000515841.2 "Renal/Kidney NGS Panel" +GTR#GTR000515841.3 "Renal/Kidney NGS Panel" +GTR#GTR000515841.4 "Renal/Kidney NGS Panel" +GTR#GTR000515844.1 "Breast Cancer Panel" +GTR#GTR000515844.2 "Breast Cancer Panel" +GTR#GTR000515879.1 "Chromosomal Instability Syndromes NGS Panel" +GTR#GTR000515879.2 "Chromosomal Instability Syndromes NGS Panel" +GTR#GTR000515879.3 "Chromosomal Instability Syndromes NGS Panel" +GTR#GTR000515879.4 "Chromosomal Instability Syndromes NGS Panel" +GTR#GTR000515895.1 "Hypertrophic Cardiomyopathy NGS Panel" +GTR#GTR000515895.2 "Hypertrophic Cardiomyopathy NGS Panel" +GTR#GTR000515895.3 "Hypertrophic Cardiomyopathy NGS Panel" +GTR#GTR000515895.4 "Hypertrophic Cardiomyopathy NGS Panel" +GTR#GTR000516046.1 "BARD1" +GTR#GTR000516046.2 "BARD1" +GTR#GTR000516070.1 "ATR" +GTR#GTR000516070.2 "ATR" +GTR#GTR000516085.1 "ATM" +GTR#GTR000516085.2 "ATM" +GTR#GTR000516104.1 "AXIN2" +GTR#GTR000516104.2 "AXIN2" +GTR#GTR000516164.1 "CASP8" +GTR#GTR000516164.2 "CASP8" +GTR#GTR000516168.1 "BRIP1" +GTR#GTR000516168.2 "BRIP1" +GTR#GTR000516180.1 "CHEK2" +GTR#GTR000516180.2 "CHEK2" +GTR#GTR000516249.1 "BRCA2" +GTR#GTR000516249.2 "BRCA2" +GTR#GTR000516255.1 "CDKN2A" +GTR#GTR000516255.2 "CDKN2A" +GTR#GTR000516259.1 "CDH1" +GTR#GTR000516259.2 "CDH1" +GTR#GTR000516275.1 "BRAF" +GTR#GTR000516275.2 "BRAF" +GTR#GTR000516379.1 "BRCA1" +GTR#GTR000516379.2 "BRCA1" +GTR#GTR000516473.1 "GALNT12" +GTR#GTR000516473.2 "GALNT12" +GTR#GTR000516490.1 "CYP2A6" +GTR#GTR000516490.2 "CYP2A6" +GTR#GTR000516500.1 "FASLG" +GTR#GTR000516500.2 "FASLG" +GTR#GTR000516756.1 "IL1B" +GTR#GTR000516756.2 "IL1B" +GTR#GTR000516763.1 "MSH6" +GTR#GTR000516763.2 "MSH6" +GTR#GTR000516788.1 "MSMB" +GTR#GTR000516788.2 "MSMB" +GTR#GTR000516802.1 "HRAS" +GTR#GTR000516802.2 "HRAS" +GTR#GTR000516848.1 "MINPP1" +GTR#GTR000516848.2 "MINPP1" +GTR#GTR000516912.1 "IL1RN" +GTR#GTR000516912.2 "IL1RN" +GTR#GTR000516949.1 "PHB" +GTR#GTR000516949.2 "PHB" +GTR#GTR000516953.1 "PIK3CA" +GTR#GTR000516953.2 "PIK3CA" +GTR#GTR000516993.1 "MLH3" +GTR#GTR000516993.2 "MLH3" +GTR#GTR000517095.1 "IRF1" +GTR#GTR000517095.2 "IRF1" +GTR#GTR000517290.1 "SMAD7" +GTR#GTR000517290.2 "SMAD7" +GTR#GTR000517320.1 "TP53" +GTR#GTR000517320.2 "TP53" +GTR#GTR000517362.1 "TGFBR2" +GTR#GTR000517362.2 "TGFBR2" +GTR#GTR000517614.1 "EGFR" +GTR#GTR000517614.2 "EGFR" +GTR#GTR000517614.3 "EGFR" +GTR#GTR000517623.1 "ERCC6" +GTR#GTR000517623.2 "ERCC6" +GTR#GTR000517645.1 "ERBB2" +GTR#GTR000517645.2 "ERBB2" +GTR#GTR000517648.1 "ELAC2" +GTR#GTR000517648.2 "ELAC2" +GTR#GTR000517670.1 "EPCAM" +GTR#GTR000517670.2 "EPCAM" +GTR#GTR000517688.1 "EPHB2" +GTR#GTR000517688.2 "EPHB2" +GTR#GTR000517693.1 "ESR1" +GTR#GTR000517693.2 "ESR1" +GTR#GTR000517714.1 "XRCC3" +GTR#GTR000517714.2 "XRCC3" +GTR#GTR000517826.1 "AKT1" +GTR#GTR000517826.2 "AKT1" +GTR#GTR000517973.1 "KRAS" +GTR#GTR000517973.2 "KRAS" +GTR#GTR000518211.1 "NRAS" +GTR#GTR000518233.1 "PALLD" +GTR#GTR000518314.1 "PPP2R1B" +GTR#GTR000518314.2 "PPP2R1B" +GTR#GTR000518351.1 "PMS2" +GTR#GTR000518351.2 "PMS2" +GTR#GTR000518387.1 "PARK2" +GTR#GTR000518387.2 "PARK2" +GTR#GTR000518400.1 "NQO2" +GTR#GTR000518400.2 "NQO2" +GTR#GTR000518431.1 "PALB2" +GTR#GTR000518431.2 "PALB2" +GTR#GTR000518437.1 "PPM1D" +GTR#GTR000518437.2 "PPM1D" +GTR#GTR000518450.1 "POLD1" +GTR#GTR000518450.2 "POLD1" +GTR#GTR000518623.1 "RNASEL" +GTR#GTR000518623.2 "RNASEL" +GTR#GTR000518673.1 "RAD51C" +GTR#GTR000518673.2 "RAD51C" +GTR#GTR000518675.1 "RAD54L" +GTR#GTR000518675.2 "RAD54L" +GTR#GTR000518677.1 "RB1CC1" +GTR#GTR000518677.2 "RB1CC1" +GTR#GTR000518695.1 "RAD51" +GTR#GTR000518695.2 "RAD51" +GTR#GTR000518734.1 "RASSF1" +GTR#GTR000518734.2 "RASSF1" +GTR#GTR000518736.1 "RAD51D" +GTR#GTR000518736.2 "RAD51D" +GTR#GTR000518738.1 "RB1" +GTR#GTR000518738.2 "RB1" +GTR#GTR000518743.1 "PTEN" +GTR#GTR000518743.2 "PTEN" +GTR#GTR000518997.1 "MSH2 Sequence Analysis" +GTR#GTR000518997.2 "MSH2 Sequence Analysis" +GTR#GTR000518998.1 "MSH2 Deletion/Duplication analysis" +GTR#GTR000518999.1 "PMS2 sequence analysis" +GTR#GTR000518999.2 "PMS2 sequence analysis" +GTR#GTR000519000.1 "PMS2 deletion/duplication analysis" +GTR#GTR000519001.1 "TP53 deletion/duplication analysis" +GTR#GTR000519002.1 "PTEN sequence analysis" +GTR#GTR000519002.2 "PTEN sequence analysis" +GTR#GTR000519003.1 "PTEN deletion/duplication analysis" +GTR#GTR000519031.1 "Seckel Syndrome, Primary Microcephaly and Familial Cutaneous Telangiectasia and Cancer Syndrome via the ATR Gene" +GTR#GTR000519031.2 "Seckel Syndrome, Primary Microcephaly and Familial Cutaneous Telangiectasia and Cancer Syndrome via the ATR Gene" +GTR#GTR000519031.3 "Seckel Syndrome, Primary Microcephaly and Familial Cutaneous Telangiectasia and Cancer Syndrome via the ATR Gene" +GTR#GTR000519031.4 "Seckel Syndrome, Primary Microcephaly and Familial Cutaneous Telangiectasia and Cancer Syndrome via the ATR Gene" +GTR#GTR000519031.5 "Seckel Syndrome, Primary Microcephaly and Familial Cutaneous Telangiectasia and Cancer Syndrome via the ATR Gene" +GTR#GTR000519031.6 "Seckel Syndrome, Primary Microcephaly and Familial Cutaneous Telangiectasia and Cancer Syndrome via the ATR Gene" +GTR#GTR000519031.7 "Seckel Syndrome, Primary Microcephaly and Familial Cutaneous Telangiectasia and Cancer Syndrome via the ATR Gene" +GTR#GTR000519031.8 "Seckel Syndrome, Primary Microcephaly and Familial Cutaneous Telangiectasia and Cancer Syndrome via the ATR Gene" +GTR#GTR000519031.9 "Seckel Syndrome, Primary Microcephaly and Familial Cutaneous Telangiectasia and Cancer Syndrome via ATR Gene Sequencing with CNV Detection" +GTR#GTR000519254.1 "MSH6 full gene sequencing" +GTR#GTR000519254.2 "MSH6 full gene sequencing" +GTR#GTR000519255.1 "MSH6 deletion/duplication analysis" +GTR#GTR000519256.1 "MUTYH full gene sequencing" +GTR#GTR000519257.1 "PALB2 full gene sequencing" +GTR#GTR000519257.2 "PALB2 full gene sequencing" +GTR#GTR000519258.1 "STK11 full gene sequencing" +GTR#GTR000519258.2 "STK11 full gene sequencing" +GTR#GTR000519259.1 "STK11 deletion/duplication analysis" +GTR#GTR000519260.1 "SMAD4 full gene sequencing" +GTR#GTR000519546.3 "Craniofacial Sequencing Panel" +GTR#GTR000519546.4 "Craniofacial Sequencing Panel" +GTR#GTR000520025.1 "Melanoma Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 6 Genes" +GTR#GTR000520025.2 "Melanoma Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 6 Genes" +GTR#GTR000520026.1 "Central Nervous System Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 15 Genes" +GTR#GTR000520026.2 "Central Nervous System Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 15 Genes" +GTR#GTR000520029.1 "Endocrine Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 13 Genes" +GTR#GTR000520029.2 "Endocrine Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 13 Genes" +GTR#GTR000520030.1 "Renal Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 15 Genes" +GTR#GTR000520030.2 "Renal Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 15 Genes" +GTR#GTR000520071.1 "BreastTrue" +GTR#GTR000520072.1 "BRCAtrue Ashkenazi Jewish" +GTR#GTR000520072.2 "BRCAtrue Ashkenazi Jewish" +GTR#GTR000520117.1 "BRCA1/2 Sequencing and Del/Dup Analysis" +GTR#GTR000520117.2 "BRCA1/2 Sequencing and Del/Dup Analysis" +GTR#GTR000520117.3 "BRCA1/2 Sequencing and Del/Dup Analysis" +GTR#GTR000520118.1 "BRCA1 and BRCA2 Sequencing" +GTR#GTR000520118.2 "BRCA1 and BRCA2 Sequencing" +GTR#GTR000520118.3 "BRCA1 and BRCA2 Sequencing" +GTR#GTR000520118.4 "BRCA1 and BRCA2 Sequencing" +GTR#GTR000520119.1 "BRCA1 and BRCA2 Del/Dup" +GTR#GTR000520119.2 "BRCA1 and BRCA2 Del/Dup" +GTR#GTR000520119.3 "BRCA1 and BRCA2 Del/Dup" +GTR#GTR000520122.1 "BRCA1 and BRCA2 Ashkenazi Founder Mutation" +GTR#GTR000520122.2 "BRCA1 and BRCA2 Ashkenazi Founder Mutation" +GTR#GTR000520122.3 "BRCA1 and BRCA2 Ashkenazi Founder Mutation" +GTR#GTR000520374.1 "PTEN Deletion/duplication analysis" +GTR#GTR000520393.1 "Tier 2: Hereditary Lymphoma Panel" +GTR#GTR000520393.2 "Tier 2: Hereditary Lymphoma Panel" +GTR#GTR000520393.3 "Tier 2: Hereditary Lymphoma Panel" +GTR#GTR000520393.4 "Tier 2: Hereditary Lymphoma and Immunodeficiency Panel" +GTR#GTR000520394.1 "Comprehensive Cancer Panel" +GTR#GTR000520394.2 "Comprehensive Cancer Panel" +GTR#GTR000520394.3 "Comprehensive Cancer Panel" +GTR#GTR000520394.4 "Comprehensive Cancer Panel" +GTR#GTR000520394.5 "Comprehensive Cancer Panel" +GTR#GTR000520394.6 "Comprehensive Cancer Panel" +GTR#GTR000520400.1 "Hereditary breast cancer, extended panel" +GTR#GTR000520400.2 "Hereditary breast cancer, extended panel" +GTR#GTR000520400.3 "Hereditary breast cancer, extended panel" +GTR#GTR000520400.4 "Invitae Breast Cancer Panel" +GTR#GTR000520400.5 "Invitae Breast Cancer Panel" +GTR#GTR000520400.6 "Invitae Breast Cancer Panel" +GTR#GTR000520400.7 "Invitae Breast Cancer Panel" +GTR#GTR000520401.1 "Hereditary breast cancer, moderate-risk panel" +GTR#GTR000520401.2 "Hereditary breast cancer, moderate-risk panel" +GTR#GTR000520401.3 "Hereditary breast cancer, moderate-risk panel" +GTR#GTR000520402.1 "ATM-related cancer risk" +GTR#GTR000520403.1 "BRIP1-related cancer risk" +GTR#GTR000520404.1 "CHEK2-related cancer risk" +GTR#GTR000520404.2 "CHEK2-related cancer risk" +GTR#GTR000520406.1 "NBN-related cancer risk" +GTR#GTR000520407.1 "RAD51C-related cancer risk" +GTR#GTR000520410.1 "Tier 2: Familial Myelodysplastic Syndrome/Acute Leukemia (MDS/AL) Panel" +GTR#GTR000520410.2 "Tier 2: Familial Myelodysplastic Syndrome/Acute Leukemia (MDS/AL) Panel" +GTR#GTR000520410.3 "Tier 2: Familial Myelodysplastic Syndrome/Acute Leukemia (MDS/AL) Panel" +GTR#GTR000520865.1 "Oncology High/Moderate Risk Panel" +GTR#GTR000520865.2 "Oncology High/Moderate Risk Panel" +GTR#GTR000520866.1 "Breast Cancer High Risk Panel" +GTR#GTR000520866.2 "Breast Cancer High Risk Panel" +GTR#GTR000520866.3 "Breast Cancer High Risk Panel" +GTR#GTR000520867.1 "Breast/Ovarian Cancer Panel" +GTR#GTR000520867.2 "Breast/Ovarian Cancer Panel" +GTR#GTR000520867.3 "Breast/Ovarian Cancer Panel" +GTR#GTR000520867.4 "Breast/Ovarian Cancer Panel" +GTR#GTR000520868.1 "Lynch/Colorectal High Risk Panel" +GTR#GTR000520869.1 "Colorectal Cancer Panel" +GTR#GTR000520869.2 "Colorectal Cancer Panel" +GTR#GTR000520870.1 "Pancreatic Cancer Panel" +GTR#GTR000520871.1 "Endometrial Cancer Panel" +GTR#GTR000520871.2 "Endometrial Cancer Panel" +GTR#GTR000520872.1 "OncoGeneDx Custom Panel" +GTR#GTR000521239.1 "Hereditary Breast and Ovarian Cancer via the BRCA1 Gene" +GTR#GTR000521239.2 "Hereditary Breast and Ovarian Cancer via the BRCA1 Gene" +GTR#GTR000521239.3 "Hereditary Breast and Ovarian Cancer via the BRCA1 Gene" +GTR#GTR000521239.4 "Hereditary Breast and Ovarian Cancer via the BRCA1 Gene" +GTR#GTR000521240.1 "Hereditary Breast and Ovarian Cancer via the BRCA2 Gene" +GTR#GTR000521240.2 "Hereditary Breast and Ovarian Cancer via the BRCA2 Gene" +GTR#GTR000521240.3 "Hereditary Breast and Ovarian Cancer via the BRCA2 Gene" +GTR#GTR000521240.4 "Hereditary Breast and Ovarian Cancer via the BRCA2 Gene" +GTR#GTR000521246.1 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sanger Sequencing Panel" +GTR#GTR000521246.2 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sanger Sequencing Panel" +GTR#GTR000521246.3 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sanger Sequencing Panel" +GTR#GTR000521246.4 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sanger Sequencing Panel" +GTR#GTR000521311.1 "BRACAnalysis CDx‚Ñ¢" +GTR#GTR000521311.2 "BRACAnalysis CDx‚Ñ¢" +GTR#GTR000521311.3 "BRACAnalysis CDx√¢‚Äû¬¢" +GTR#GTR000521486.1 "Colorectal Cancer Predisposition via the POLD1 Gene" +GTR#GTR000521486.2 "Colorectal Cancer Predisposition via the POLD1 Gene" +GTR#GTR000521486.3 "Colorectal Cancer Predisposition via the POLD1 Gene" +GTR#GTR000521486.4 "Colorectal Cancer Predisposition via the POLD1 Gene" +GTR#GTR000521486.5 "Colorectal Cancer Predisposition via the POLD1 Gene" +GTR#GTR000521486.6 "Colorectal Cancer Predisposition via the POLD1 Gene" +GTR#GTR000521486.7 "Colorectal Cancer Predisposition via POLD1 Gene Sequencing with CNV Detection" +GTR#GTR000521486.8 "Colorectal Cancer Predisposition via POLD1 Gene Sequencing with CNV Detection" +GTR#GTR000521488.1 "Colorectal Cancer Predisposition via the POLE Gene" +GTR#GTR000521488.2 "Colorectal Cancer Predisposition via the POLE Gene" +GTR#GTR000521488.3 "Colorectal Cancer Predisposition via the POLE Gene" +GTR#GTR000521488.4 "Colorectal Cancer Predisposition via the POLE Gene" +GTR#GTR000521488.5 "Colorectal Cancer Predisposition via the POLE Gene" +GTR#GTR000521488.6 "Colorectal Cancer Predisposition via the POLE Gene" +GTR#GTR000521488.7 "Colorectal Cancer Predisposition via the POLE Gene" +GTR#GTR000521488.8 "Colorectal Cancer Predisposition via POLE Gene Sequencing with CNV Detection" +GTR#GTR000521488.9 "Colorectal Cancer Predisposition via POLE Gene Sequencing with CNV Detection" +GTR#GTR000521499.1 "Hereditary Melanoma Sequencing Panel" +GTR#GTR000521499.2 "Hereditary Melanoma Sequencing Panel" +GTR#GTR000521940.1 "BROCA" +GTR#GTR000521940.2 "BROCA" +GTR#GTR000521954.1 "Hereditary gynecologic cancers, high-risk panel" +GTR#GTR000521954.2 "Hereditary gynecologic cancers, high-risk panel" +GTR#GTR000521954.3 "Invitae Gyn Cancers High-Risk Panel" +GTR#GTR000521954.4 "Invitae Breast and Gyn Cancers Guidelines-Based Panel" +GTR#GTR000521954.5 "Invitae Breast and Gyn Cancers Guidelines-Based Panel" +GTR#GTR000521954.6 "Invitae Breast and Gyn Cancers Guidelines-Based Panel" +GTR#GTR000521955.1 "BARD1-related cancer risk" +GTR#GTR000521957.1 "MRE11A-related cancer risk" +GTR#GTR000521958.1 "RAD50-related cancer risk" +GTR#GTR000522151.1 "Cockayne syndrome" +GTR#GTR000522151.2 "Cockayne syndrome (ERCC6)" +GTR#GTR000522151.3 "ERCC6 Gene Sequencing" +GTR#GTR000522151.4 "ERCC6 Gene Sequencing" +GTR#GTR000522151.5 "ERCC6 Gene Sequencing" +GTR#GTR000522151.6 "ERCC6 Gene Sequencing" +GTR#GTR000522151.7 "ERCC6 Gene Sequencing" +GTR#GTR000522159.1 "Breast and Ovarian Hereditary Cancer Syndrome (BRCA1 and BRCA2) Sequencing and Deletion/Duplication" +GTR#GTR000522160.1 "Breast and Ovarian Hereditary Cancer Syndrome (BRCA1 and BRCA 2) Sequencing" +GTR#GTR000522161.1 "Breast and Ovarian Hereditary Cancer Syndrome (BRCA1 and BRCA2) Deletion/Duplication" +GTR#GTR000522162.1 "Ashkenazi Jewish (BRCA1 and BRCA2) 3 Mutations" +GTR#GTR000522243.1 "BRCA Screen" +GTR#GTR000522278.1 "Breast and Ovarian Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 20 Genes" +GTR#GTR000522278.2 "Breast and Ovarian Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 20 Genes" +GTR#GTR000522326.1 "Seckel Syndrome NGS Panel" +GTR#GTR000522326.2 "Seckel Syndrome NGS Panel" +GTR#GTR000522326.3 "Seckel Syndrome NGS Panel" +GTR#GTR000522326.4 "Seckel Syndrome NGS Panel" +GTR#GTR000522326.5 "Seckel Syndrome NGS Panel" +GTR#GTR000522326.6 "Seckel Syndrome NGS Panel" +GTR#GTR000522334.1 "Parkinson Disease, Early Onset NGS Panel" +GTR#GTR000522334.2 "Parkinson Disease, Early Onset NGS Panel" +GTR#GTR000522334.3 "Parkinson Disease, Early Onset NGS Panel" +GTR#GTR000522334.4 "Parkinson Disease, Early Onset NGS Panel" +GTR#GTR000522334.5 "Parkinson Disease, Early Onset NGS Panel" +GTR#GTR000522334.6 "Parkinson Disease, Early Onset NGS Panel" +GTR#GTR000522334.7 "Parkinson Disease, Early Onset NGS Panel" +GTR#GTR000522334.8 "Parkinson Disease, Early Onset NGS Panel" +GTR#GTR000522530.1 "Hereditary Breast and Ovarian Cancer BRCA1/2 NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000522530.10 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing and Deletion/Duplication Panel" +GTR#GTR000522530.11 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing and Deletion/Duplication Panel" +GTR#GTR000522530.12 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing Panel with CNV Detection" +GTR#GTR000522530.13 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing Panel with CNV Detection" +GTR#GTR000522530.14 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing Panel with CNV Detection" +GTR#GTR000522530.2 "Hereditary Breast and Ovarian Cancer BRCA1/2 NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000522530.3 "Hereditary Breast and Ovarian Cancer BRCA1/2 NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000522530.4 "Hereditary Breast and Ovarian Cancer BRCA1/2 NextGen Sequencing (NGS) and Deletion/Duplication Panel" +GTR#GTR000522530.5 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing and Deletion/Duplication Panel" +GTR#GTR000522530.6 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing and Deletion/Duplication Panel" +GTR#GTR000522530.7 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing and Deletion/Duplication Panel" +GTR#GTR000522530.8 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing and Deletion/Duplication Panel" +GTR#GTR000522530.9 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing and Deletion/Duplication Panel" +GTR#GTR000522559.1 "Cancer Panel, Hereditary, Sequencing 46 Genes, Deletion/Duplication, 47 Genes" +GTR#GTR000522559.2 "Cancer Panel, Hereditary, Sequencing 46 Genes, Deletion/Duplication, 47 Genes" +GTR#GTR000522559.3 "Cancer Panel, Hereditary, Sequencing 46 Genes, Deletion/Duplication, 47 Genes" +GTR#GTR000522565.1 "Hereditary Breast and Ovarian Cancer BRCA1/2 NextGen Sequencing (NGS) Panel" +GTR#GTR000522565.2 "Hereditary Breast and Ovarian Cancer BRCA1/2 NextGen Sequencing (NGS) Panel" +GTR#GTR000522565.3 "Hereditary Breast and Ovarian Cancer BRCA1/2 NextGen Sequencing (NGS) Panel" +GTR#GTR000522565.4 "Hereditary Breast and Ovarian Cancer BRCA1/2 NextGen Sequencing (NGS) Panel" +GTR#GTR000522565.5 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing Panel" +GTR#GTR000522565.6 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing Panel" +GTR#GTR000522565.7 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing Panel" +GTR#GTR000522565.8 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing Panel" +GTR#GTR000522565.9 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sequencing Panel" +GTR#GTR000522730.2 "EGFR Mutation Analysis" +GTR#GTR000522979.1 "Lynch Syndrome: MLH, MSH2, MSH6, and EPCAM Sequencing and Deletion/Duplication Panel" +GTR#GTR000522980.1 "Lynch Syndrome: MLH1, MSH2, MSH6, PMS2, and EPCAM Sequencing and Deletion/Duplication Panel" +GTR#GTR000523226.1 "Brain, CNS, and PNS Cancer: Sequencing and Deletion/Duplication Panel" +GTR#GTR000523226.2 "Brain, CNS, and PNS Cancer: Sequencing and Deletion/Duplication Panel" +GTR#GTR000523226.3 "Brain, CNS, and PNS Cancer: Sequencing and Deletion/Duplication Panel" +GTR#GTR000523226.4 "Brain, CNS, and PNS Cancer: Sequencing Panel" +GTR#GTR000523229.1 "High Risk Breast Cancer: Sequencing and Deletion/Duplication Panel" +GTR#GTR000523229.2 "High Risk Breast Cancer: Sequencing and Deletion/Duplication Panel" +GTR#GTR000523229.3 "High Risk Breast Cancer: Sequencing and Deletion/Duplication Panel" +GTR#GTR000523231.1 "High Risk COlorectal Cancer: Sequencing Panel" +GTR#GTR000523231.2 "High Risk Colorectal Cancer: Sequencing Panel" +GTR#GTR000523232.1 "Renal Cancer: Sequencing Panel" +GTR#GTR000523233.1 "Breast and Ovarian Cancer: Sequencing and Deletion/Duplication Panel" +GTR#GTR000523233.2 "Breast and Ovarian Cancer: Sequencing and Deletion/Duplication Panel" +GTR#GTR000523233.3 "Breast and Ovarian Cancer: Sequencing and Deletion/Duplication Panel" +GTR#GTR000523233.4 "Breast and Ovarian Cancer: Sequencing and Deletion/Duplication Panel" +GTR#GTR000523234.1 "Melanoma: Sequencing Panel" +GTR#GTR000523234.2 "Melanoma: Sequencing Panel" +GTR#GTR000523235.1 "Pancreatic Cancer: Sequencing Panel" +GTR#GTR000523235.2 "Pancreatic Cancer: Sequencing Panel and Deletion/Duplication Panel" +GTR#GTR000523236.1 "Gastrointestinal and Colorectal Cancer: Sequencing Panel" +GTR#GTR000523236.2 "Gastrointestinal and Colorectal Cancer: Sequencing Panel" +GTR#GTR000523295.1 "Ashkenazi Jewish: BRCA Targeted Mutation Panel" +GTR#GTR000523295.2 "Ashkenazi Jewish: BRCA Targeted Mutation Panel" +GTR#GTR000523295.3 "Ashkenazi Jewish: BRCA Targeted Mutation Panel" +GTR#GTR000523311.1 "Diffuse Gastric Cancer Syndrome: CDH1 Gene Sequencing" +GTR#GTR000523311.2 "Diffuse Gastric Cancer Syndrome: CDH1 Gene Sequencing" +GTR#GTR000523311.3 "Diffuse Gastric Cancer Syndrome: CDH1 Gene Sequencing" +GTR#GTR000523331.1 "Cardiofaciocutaneous Syndrome Panel" +GTR#GTR000523331.2 "Cardiofaciocutaneous Syndrome Panel" +GTR#GTR000523331.3 "Cardiofaciocutaneous Syndrome Panel" +GTR#GTR000523331.4 "Cardiofaciocutaneous Syndrome Panel" +GTR#GTR000523331.5 "Cardiofaciocutaneous Syndrome Panel" +GTR#GTR000523331.6 "Cardiofaciocutaneous Syndrome Panel" +GTR#GTR000523332.1 "Noonan Syndrome Panel" +GTR#GTR000523332.2 "Noonan Syndrome Panel" +GTR#GTR000523332.3 "Noonan Syndrome Panel" +GTR#GTR000523332.4 "Noonan Syndrome Panel" +GTR#GTR000523332.5 "Noonan Syndrome Panel" +GTR#GTR000523332.6 "Noonan Syndrome Panel" +GTR#GTR000523334.1 "Noonan Syndrome and related disorders (RASopathies) Panel" +GTR#GTR000523334.2 "Noonan Syndrome and related disorders (RASopathies) Panel" +GTR#GTR000523334.3 "Noonan Syndrome and related disorders (RASopathies) Panel" +GTR#GTR000523334.4 "Noonan Syndrome and related disorders (RASopathies) Panel" +GTR#GTR000523334.5 "Noonan Syndrome and related disorders (RASopathies) Panel" +GTR#GTR000523334.6 "Noonan Syndrome and related disorders (RASopathies) Panel" +GTR#GTR000523358.1 "Familial Thoracic Aortic Aneurysm NGS Panel" +GTR#GTR000523358.2 "Familial Thoracic Aortic Aneurysm NGS Panel" +GTR#GTR000523358.3 "Familial Thoracic Aortic Aneurysm NGS Panel" +GTR#GTR000523358.4 "Familial Thoracic Aortic Aneurysm NGS Panel" +GTR#GTR000523358.5 "Familial Thoracic Aortic Aneurysm NGS Panel" +GTR#GTR000523358.6 "Familial Thoracic Aortic Aneurysm NGS Panel" +GTR#GTR000523359.1 "Marfan Syndrome NGS Panel" +GTR#GTR000523359.2 "Marfan Syndrome NGS Panel" +GTR#GTR000523359.3 "Marfan Syndrome NGS Panel" +GTR#GTR000523359.4 "Marfan Syndrome NGS Panel" +GTR#GTR000523359.5 "Marfan Syndrome NGS Panel" +GTR#GTR000523359.6 "Marfan Syndrome NGS Panel" +GTR#GTR000523360.1 "Loeys-Dietz Syndrome NGS Panel" +GTR#GTR000523360.2 "Loeys-Dietz Syndrome NGS Panel" +GTR#GTR000523360.3 "Loeys-Dietz Syndrome NGS Panel" +GTR#GTR000523360.4 "Loeys-Dietz Syndrome NGS Panel" +GTR#GTR000523360.5 "Loeys-Dietz Syndrome NGS Panel" +GTR#GTR000523360.6 "Loeys-Dietz Syndrome NGS Panel" +GTR#GTR000523360.7 "Loeys-Dietz Syndrome NGS Panel" +GTR#GTR000523563.1 "nucSEEK¬Æ Focus" +GTR#GTR000523563.2 "nucSEEK¬Æ Focus" +GTR#GTR000523563.3 "nucSEEK¬Æ Focus" +GTR#GTR000523563.4 "nucSEEK¬Æ Focus Nuclear Mitochondrial Gene Panel" +GTR#GTR000523563.5 "nucSEEK¬Æ Focus Nuclear Mitochondrial Gene Panel" +GTR#GTR000523829.1 "Familial Thoracic Aortic Aneurysm NGS Panel" +GTR#GTR000525305.1 "Hereditary Gastric Cancer Panel" +GTR#GTR000525305.2 "Hereditary Gastric Cancer Panel" +GTR#GTR000525312.1 "FH Gene Sequencing" +GTR#GTR000525911.2 "Breast Cancer Panel" +GTR#GTR000525919.1 "iGene Cancer Panel" +GTR#GTR000525919.2 "iGene Cancer Panel" +GTR#GTR000527837.1 "Hemato-oncology chromosomal microarray" +GTR#GTR000527839.1 "Oncotype DX Colon Cancer Assay" +GTR#GTR000527839.2 "Oncotype DX Colon Cancer Assay" +GTR#GTR000527839.3 "Oncotype DX Colon Cancer Assay" +GTR#GTR000527839.4 "Oncotype DX Colon Cancer Assay" +GTR#GTR000527839.5 "Oncotype DX Colon Recurrence Score Assay" +GTR#GTR000527973.1 "Breast Cancer High Risk Panel and PALB2" +GTR#GTR000527973.2 "Breast Cancer High Risk Panel and PALB2" +GTR#GTR000527975.1 "Breast Cancer High/Moderate Risk Panel" +GTR#GTR000527975.2 "Breast Cancer High/Moderate Risk Panel" +GTR#GTR000528059.1 "Cowden Syndrome NGS Panel" +GTR#GTR000528059.2 "Cowden Syndrome NGS Panel" +GTR#GTR000528059.3 "Cowden Syndrome NGS Panel" +GTR#GTR000528059.4 "Cowden Syndrome NGS Panel" +GTR#GTR000528059.5 "Cowden Syndrome NGS Panel" +GTR#GTR000528059.6 "Cowden Syndrome NGS Panel" +GTR#GTR000528377.1 "PTEN Gene Sequencing" +GTR#GTR000528377.2 "PTEN Gene Sequencing" +GTR#GTR000528377.3 "PTEN Gene Sequencing" +GTR#GTR000528377.4 "PTEN Gene Sequencing" +GTR#GTR000528377.5 "PTEN Gene Sequencing" +GTR#GTR000528377.6 "PTEN Gene Sequencing" +GTR#GTR000528378.1 "PIK3CA Gene Sequencing" +GTR#GTR000528378.2 "PIK3CA Gene Sequencing" +GTR#GTR000528378.3 "PIK3CA Gene Sequencing" +GTR#GTR000528378.4 "PIK3CA Gene Sequencing" +GTR#GTR000528378.5 "PIK3CA Gene Sequencing" +GTR#GTR000528378.6 "PIK3CA Gene Sequencing" +GTR#GTR000528379.1 "AKT1 Gene Sequencing" +GTR#GTR000528379.2 "AKT1 Gene Sequencing" +GTR#GTR000528379.3 "AKT1 Gene Sequencing" +GTR#GTR000528379.4 "AKT1 Gene Sequencing" +GTR#GTR000528379.5 "AKT1 Gene Sequencing" +GTR#GTR000528379.6 "AKT1 Gene Sequencing" +GTR#GTR000528475.1 "PARK2 Gene Sequencing" +GTR#GTR000528475.2 "PARK2 Gene Sequencing" +GTR#GTR000528475.3 "PARK2 Gene Sequencing" +GTR#GTR000528475.4 "PARK2 Gene Sequencing" +GTR#GTR000528475.5 "PARK2 Gene Sequencing" +GTR#GTR000528475.6 "PARK2 Gene Sequencing" +GTR#GTR000528481.1 "ATR Gene Sequencing" +GTR#GTR000528481.2 "ATR Gene Sequencing" +GTR#GTR000528481.3 "ATR Gene Sequencing" +GTR#GTR000528481.4 "ATR Gene Sequencing" +GTR#GTR000528481.5 "ATR Gene Sequencing" +GTR#GTR000528481.6 "ATR Gene Sequencing" +GTR#GTR000528514.1 "Invitae Breast Cancer High-Risk Panel" +GTR#GTR000528514.2 "Invitae Breast Cancer High-Risk Panel" +GTR#GTR000528514.3 "Invitae Breast Cancer High-Risk Panel" +GTR#GTR000528518.1 "Invitae Common Hereditary Cancers Panel" +GTR#GTR000528518.2 "Invitae Common Hereditary Cancers Panel (Breast, Gyn, GI)" +GTR#GTR000528518.3 "Invitae Common Hereditary Cancers Panel (Breast, Gyn, GI)" +GTR#GTR000528518.4 "Invitae Common Hereditary Cancers Panel (Breast, Gyn, GI)" +GTR#GTR000528529.1 "Invitae Gastric Cancer Panel" +GTR#GTR000528529.2 "Invitae Gastric Cancer Panel" +GTR#GTR000528529.3 "Invitae Gastric Cancer Panel" +GTR#GTR000528529.4 "Invitae Gastric Cancer Panel" +GTR#GTR000528532.1 "Invitae Hereditary Leiomyomatosis and Renal Cell Cancer Test" +GTR#GTR000528532.2 "Invitae Hereditary Leiomyomatosis and Renal Cell Cancer Test" +GTR#GTR000528532.3 "Invitae Hereditary Leiomyomatosis and Renal Cell Cancer Test" +GTR#GTR000528532.4 "Invitae Hereditary Leiomyomatosis and Renal Cell Cancer Test" +GTR#GTR000528534.1 "Inherited Cancer Panel" +GTR#GTR000528578.1 "BRCAware" +GTR#GTR000528578.2 "BRCAware" +GTR#GTR000528654.1 "Invitae Oligodontia-Colorectal Cancer Syndrome Test" +GTR#GTR000528654.2 "Invitae Oligodontia-Colorectal Cancer Syndrome Test" +GTR#GTR000528654.3 "Invitae Oligodontia-Colorectal Cancer Syndrome Test" +GTR#GTR000528654.4 "Invitae Oligodontia-Colorectal Cancer Syndrome Test" +GTR#GTR000528890.1 "Invitae Li-Fraumeni Syndrome Test" +GTR#GTR000528890.2 "Invitae Li-Fraumeni Syndrome Test" +GTR#GTR000528890.3 "Invitae Li-Fraumeni Syndrome Test" +GTR#GTR000528890.4 "Invitae Li-Fraumeni Syndrome Test" +GTR#GTR000528909.1 "Invitae Multi-Cancer Panel" +GTR#GTR000528909.2 "Invitae Multi-Cancer Panel" +GTR#GTR000528909.3 "Invitae Multi-Cancer Panel" +GTR#GTR000528909.4 "Invitae Multi-Cancer Panel" +GTR#GTR000528909.5 "Invitae Multi-Cancer Panel" +GTR#GTR000528910.1 "Invitae Breast Cancer Guidelines-Based Panel" +GTR#GTR000528910.2 "Invitae Breast Cancer Guidelines-Based Panel" +GTR#GTR000528910.3 "Invitae Breast Cancer Guidelines-Based Panel" +GTR#GTR000528910.4 "Invitae Breast Cancer Guidelines-Based Panel" +GTR#GTR000528912.1 "Invitae Thyroid Cancer Panel" +GTR#GTR000528912.2 "Invitae Thyroid Cancer Panel" +GTR#GTR000528912.3 "Invitae Thyroid Cancer Panel" +GTR#GTR000528912.4 "Invitae Thyroid Cancer Panel" +GTR#GTR000528914.1 "Invitae Renal/Urinary Tract Cancer Panel" +GTR#GTR000528914.2 "Invitae Renal/Urinary Tract Cancers Panel" +GTR#GTR000528914.3 "Invitae Renal/Urinary Tract Cancers Panel" +GTR#GTR000528914.4 "Invitae Renal/Urinary Tract Cancers Panel" +GTR#GTR000528914.5 "Invitae Renal/Urinary Tract Cancers Panel" +GTR#GTR000528915.1 "Invitae Prostate Cancer Panel" +GTR#GTR000528915.2 "Invitae Prostate Cancer Panel" +GTR#GTR000528915.3 "Invitae Prostate Cancer Panel" +GTR#GTR000528915.4 "Invitae Prostate Cancer Panel" +GTR#GTR000528916.1 "Invitae Melanoma Panel" +GTR#GTR000528916.2 "Invitae Melanoma Panel" +GTR#GTR000528916.3 "Invitae Melanoma Panel" +GTR#GTR000528916.4 "Invitae Melanoma Panel" +GTR#GTR000528916.5 "Invitae Melanoma Panel" +GTR#GTR000528954.1 "BRCA 1 and BRCA 2 gene sequencing" +GTR#GTR000528954.2 "BRCA 1 and BRCA 2 gene sequencing" +GTR#GTR000528954.3 "BRCA 1 and BRCA 2 gene sequencing" +GTR#GTR000528954.4 "BRCA1 and BRCA2 gene analysis" +GTR#GTR000528954.5 "BRCA1 and BRCA2 gene analysis" +GTR#GTR000529066.1 "Lung cancer IFISH tests" +GTR#GTR000529066.2 "Lung Cancer IFISH Panel" +GTR#GTR000529110.1 "Renal Cancer Panel" +GTR#GTR000529143.1 "IL1RN Gene Sequencing" +GTR#GTR000529143.2 "IL1RN Gene Sequencing" +GTR#GTR000529143.3 "IL1RN Gene Sequencing" +GTR#GTR000529143.4 "IL1RN Gene Sequencing" +GTR#GTR000529143.5 "IL1RN Gene Sequencing" +GTR#GTR000529143.6 "IL1RN Gene Sequencing" +GTR#GTR000529345.1 "Focus Cancer Panel - 40 Genes" +GTR#GTR000529345.2 "Focus Cancer Panel - 40 Genes" +GTR#GTR000529345.3 "Focus Cancer Panel - 28 Genes" +GTR#GTR000529345.4 "Focus Cancer Panel - 40 Genes" +GTR#GTR000530028.1 "myRisk Hereditary Cancer" +GTR#GTR000530028.2 "myRisk Hereditary Cancer" +GTR#GTR000530028.3 "myRisk Hereditary Cancer" +GTR#GTR000530124.1 "Circulo Lung" +GTR#GTR000530126.1 "Circulo Lung" +GTR#GTR000530129.1 "Circulo Lung" +GTR#GTR000530132.1 "Circulo Lung" +GTR#GTR000530133.1 "Circulo Lung" +GTR#GTR000530134.1 "Circulo Lung" +GTR#GTR000530135.1 "Circulo Lung" +GTR#GTR000530136.1 "Circulo Lung" +GTR#GTR000530137.1 "Circulo Lung" +GTR#GTR000530138.1 "Circulo Lung" +GTR#GTR000530141.1 "Circulo Lung" +GTR#GTR000530143.1 "Circulo Lung" +GTR#GTR000530164.1 "Circulo Ovarian" +GTR#GTR000530166.1 "Circulo Ovarian" +GTR#GTR000530175.1 "Circulo Ovarian" +GTR#GTR000530197.1 "Circulo Ovarian" +GTR#GTR000530255.1 "Hereditary Breast, Ovarian, and Endometrial Cancer Panel" +GTR#GTR000530255.2 "Hereditary Breast, Ovarian, and Endometrial Cancer Panel" +GTR#GTR000530256.1 "Hereditary Paraganglioma/Pheochromocytoma Panel" +GTR#GTR000530256.2 "Hereditary Paraganglioma/Pheochromocytoma Panel" +GTR#GTR000530257.1 "Hereditary High-Risk Breast Cancer Panel" +GTR#GTR000530257.2 "Hereditary High-Risk Breast Cancer Panel" +GTR#GTR000530260.1 "Hereditary Colorectal and Gastrointestinal Cancer Panel" +GTR#GTR000530260.2 "Hereditary Colorectal and Gastrointestinal Cancer Panel" +GTR#GTR000530262.1 "Hereditary High-Risk Colorectal Cancer Panel" +GTR#GTR000530262.2 "Hereditary High-Risk Colorectal Cancer Panel" +GTR#GTR000530263.1 "Hereditary Melanoma Panel" +GTR#GTR000530263.2 "Hereditary Melanoma Panel" +GTR#GTR000530264.1 "CHOP Comprehensive Hereditary Cancer Panel" +GTR#GTR000530264.2 "CHOP Comprehensive Hereditary Cancer Panel" +GTR#GTR000530265.1 "Hereditary Pancreatic Cancer Panel" +GTR#GTR000530265.2 "Hereditary Pancreatic Cancer Panel" +GTR#GTR000530266.1 "Hereditary Prostate Cancer Panel" +GTR#GTR000530266.2 "Hereditary Prostate Cancer Panel" +GTR#GTR000530267.1 "Hereditary Brain Tumor Panel" +GTR#GTR000530267.2 "Hereditary Brain Tumor Panel" +GTR#GTR000530269.1 "Hereditary Kidney Cancer Panel" +GTR#GTR000530269.2 "Hereditary Kidney Cancer Panel" +GTR#GTR000530297.1 "KRAS Mutation Analysis" +GTR#GTR000530306.1 "EGFR Mutation Analysis" +GTR#GTR000530329.1 "CancerNext-Expanded" +GTR#GTR000530329.2 "CancerNext-Expanded" +GTR#GTR000530332.1 "POLD1 and POLE-related cancer" +GTR#GTR000530334.1 "Hereditary leiomyomatosis and renal cell carcinoma (HLRCC)" +GTR#GTR000530336.1 "BAP1 gene sequence and deletion/duplication analysis" +GTR#GTR000530336.2 "BAP1 gene sequence and deletion/duplication analysis" +GTR#GTR000530337.1 "BARD1 gene sequence and deletion/duplication analysis" +GTR#GTR000530338.1 "BRIP1 gene sequence and deletion/duplication analysis" +GTR#GTR000530339.1 "MET gene sequence and deletion/duplication analysis" +GTR#GTR000530415.1 "NBN gene sequence and deletion/duplication analysis" +GTR#GTR000530417.1 "RAD51C gene sequence and deletion/duplication analysis" +GTR#GTR000530682.1 "Comprehensive BRCA1/BRCA2 Testing" +GTR#GTR000530683.1 "BRCAplus-Expanded" +GTR#GTR000530684.1 "CDKN2A/CDK4¬†gene sequence and deletion/duplication analysis" +GTR#GTR000530706.1 "BRCA1 Targeted Analysis (BRCAssure)" +GTR#GTR000530706.2 "BRCA1 Targeted Analysis (BRCAssure)" +GTR#GTR000530706.3 "BRCA1 Targeted Analysis (BRCAssure)" +GTR#GTR000530707.1 "BRCA1/2 Ashkenazi Jewish Profile (BRCAssure)" +GTR#GTR000530707.2 "BRCA1/2 Ashkenazi Jewish Profile (BRCAssure)" +GTR#GTR000530708.1 "BRCA1/2 Comprehensive Analysis (BRCAssure)" +GTR#GTR000530708.2 "BRCA1/2 Comprehensive Analysis (BRCAssure)" +GTR#GTR000530730.1 "Breast Cancer Focus Panel" +GTR#GTR000530898.1 "Colorectal Cancer Focus Panel" +GTR#GTR000531077.1 "Endometrial Cancer Focus Panel" +GTR#GTR000531078.1 "Ovarian Cancer Focus Panel" +GTR#GTR000531079.1 "Prostate Cancer Focus Panel" +GTR#GTR000531275.1 "BRCA Panel" +GTR#GTR000531340.1 "BRCA1/2 Deletion/Duplication Analysis (BRCAssure)" +GTR#GTR000531340.2 "BRCA1/2 Deletion/Duplication Analysis (BRCAssure)" +GTR#GTR000531341.1 "BRCA2 Targeted Analysis (BRCAssure)" +GTR#GTR000531341.2 "BRCA2 Targeted Analysis (BRCAssure)" +GTR#GTR000531341.3 "BRCA2 Targeted Analysis (BRCAssure)" +GTR#GTR000531622.1 "Melanoma Comprehensive Panel" +GTR#GTR000531622.2 "Melanoma Comprehensive Panel" +GTR#GTR000531632.1 "Melanoma Comprehensive Panel" +GTR#GTR000531632.2 "Melanoma Comprehensive Panel" +GTR#GTR000531690.1 "Essential Epilepsy NGS Panel" +GTR#GTR000531690.2 "Essential Epilepsy NGS Panel" +GTR#GTR000531702.1 "Early-Onset Epileptic Encephalopathy NGS Panel" +GTR#GTR000531704.1 "Thyroid Cancer Comprehensive Panel" +GTR#GTR000531705.1 "Renal / Urinary Cancer Comprehensive Panel" +GTR#GTR000531707.1 "Comprehensive Epilepsy NGS Panel" +GTR#GTR000531708.1 "Nervous System / Brain Cancer Comprehensive Panel" +GTR#GTR000531709.1 "Hematologic Malignancy Comprehensive Panel" +GTR#GTR000531710.1 "Pancreatic Cancer Comprehensive Panel" +GTR#GTR000531711.1 "Comprehensive Cancer Panel" +GTR#GTR000531712.1 "Breast Cancer Comprehensive Panel" +GTR#GTR000531713.1 "Gastric Cancer Comprehensive Panel" +GTR#GTR000531714.1 "Fanconi Anemia Comprehensive Panel" +GTR#GTR000531715.1 "Endometrial Cancer Comprehensive Panel" +GTR#GTR000531716.1 "Colorectal Cancer Comprehensive Panel" +GTR#GTR000531717.1 "Ovarian Cancer Comprehensive Panel" +GTR#GTR000531718.1 "Prostate Cancer Comprehensive Panel" +GTR#GTR000531719.1 "Sarcoma Comprehensive Panel" +GTR#GTR000531720.1 "Paraganglioma-Pheochromocytoma Comprehensive Panel" +GTR#GTR000531721.1 "Renal / Urinary Cancer Comprehensive Panel" +GTR#GTR000531737.1 "VistaSeq Hereditary Cancer Panel" +GTR#GTR000531738.1 "Vistaseq Hereditary Cancer Panel Without BRCA" +GTR#GTR000531756.1 "Hereditary Breast and Ovarian Cancer 26 Gene Panel" +GTR#GTR000531756.2 "Hereditary Breast and Ovarian Cancer 26 Gene Panel" +GTR#GTR000531756.3 "Hereditary Breast and Ovarian Cancer 26 Gene Panel" +GTR#GTR000531756.4 "Hereditary Breast and Ovarian Cancer 26 Gene Panel" +GTR#GTR000532463.1 "CCDC127" +GTR#GTR000532463.2 "CCDC127" +GTR#GTR000532479.1 "NQO1" +GTR#GTR000532479.2 "NQO1" +GTR#GTR000532915.1 "CDKN2B-AS1" +GTR#GTR000532915.2 "CDKN2B-AS1" +GTR#GTR000533150.1 "TEX14" +GTR#GTR000533256.1 "TMEM91" +GTR#GTR000533280.1 "TIMM8B" +GTR#GTR000533616.1 "TOE1" +GTR#GTR000534244.1 "FNDC8" +GTR#GTR000534244.2 "FNDC8" +GTR#GTR000534298.1 "SRC" +GTR#GTR000534843.1 "SRGAP1" +GTR#GTR000535672.1 "FBXO11" +GTR#GTR000535672.2 "FBXO11" +GTR#GTR000535673.1 "FAM175A" +GTR#GTR000535673.2 "FAM175A" +GTR#GTR000535980.1 "SLC22A18" +GTR#GTR000536401.1 "EHBP1" +GTR#GTR000536401.2 "EHBP1" +GTR#GTR000536685.1 "EPM2AIP1" +GTR#GTR000536685.2 "EPM2AIP1" +GTR#GTR000537235.1 "PALLD" +GTR#GTR000537235.2 "PALLD" +GTR#GTR000537509.1 "DCTN5" +GTR#GTR000537509.2 "DCTN5" +GTR#GTR000538930.1 "POLE" +GTR#GTR000538999.1 "NTHL1" +GTR#GTR000538999.2 "NTHL1" +GTR#GTR000539193.1 "NRAS" +GTR#GTR000539193.2 "NRAS" +GTR#GTR000539439.1 "PLA2G2A" +GTR#GTR000539663.1 "CIAO1" +GTR#GTR000539663.2 "CIAO1" +GTR#GTR000540773.1 "BUB1" +GTR#GTR000540773.2 "BUB1" +GTR#GTR000540797.1 "MAP4K2" +GTR#GTR000540797.2 "MAP4K2" +GTR#GTR000540822.1 "C11orf65" +GTR#GTR000540822.2 "C11orf65" +GTR#GTR000541349.1 "ANKRD49" +GTR#GTR000541349.2 "ANKRD49" +GTR#GTR000541967.1 "AURKA" +GTR#GTR000542195.1 "HSCB" +GTR#GTR000542195.2 "HSCB" +GTR#GTR000542337.1 "AIMP2" +GTR#GTR000542337.2 "AIMP2" +GTR#GTR000542552.1 "HOXB13" +GTR#GTR000542552.2 "HOXB13" +GTR#GTR000542679.1 "KLLN" +GTR#GTR000542679.2 "KLLN" +GTR#GTR000542766.1 "IL5" +GTR#GTR000542766.2 "IL5" +GTR#GTR000543374.1 "POLE" +GTR#GTR000543374.2 "POLE" +GTR#GTR000543760.1 "PLA2G2A" +GTR#GTR000543760.2 "PLA2G2A" +GTR#GTR000543999.1 "TOE1" +GTR#GTR000543999.2 "TOE1" +GTR#GTR000544043.1 "TSPAN31" +GTR#GTR000544043.2 "TSPAN31" +GTR#GTR000544809.1 "TMEM91" +GTR#GTR000544809.2 "TMEM91" +GTR#GTR000545285.1 "ZNF276" +GTR#GTR000545285.2 "ZNF276" +GTR#GTR000545579.1 "TIMM8B" +GTR#GTR000545579.2 "TIMM8B" +GTR#GTR000545652.1 "XRCC2" +GTR#GTR000545652.2 "XRCC2" +GTR#GTR000546201.1 "SRGAP1" +GTR#GTR000546201.2 "SRGAP1" +GTR#GTR000546630.1 "TEX14" +GTR#GTR000546630.2 "TEX14" +GTR#GTR000546686.1 "SRC" +GTR#GTR000547745.1 "SLC22A18" +GTR#GTR000547745.2 "SLC22A18" +GTR#GTR000548237.1 "RET" +GTR#GTR000548245.1 "RPS19" +GTR#GTR000548289.1 "WRAP53" +GTR#GTR000548291.1 "RB1CC1" +GTR#GTR000548322.1 "IRF1" +GTR#GTR000548333.1 "KLF6" +GTR#GTR000548379.1 "SDHC" +GTR#GTR000548409.1 "RASSF1" +GTR#GTR000548431.1 "ESR1" +GTR#GTR000548483.1 "MUTYH" +GTR#GTR000548487.1 "RB1" +GTR#GTR000548501.1 "MINPP1" +GTR#GTR000548504.1 "MRE11A" +GTR#GTR000548519.1 "SMAD7" +GTR#GTR000548543.1 "PHB" +GTR#GTR000548599.1 "PKD1" +GTR#GTR000548680.1 "NQO2" +GTR#GTR000548777.1 "TP53" +GTR#GTR000548779.1 "RAD51" +GTR#GTR000548834.1 "AKT1" +GTR#GTR000548852.1 "XRCC3" +GTR#GTR000548862.1 "WRN" +GTR#GTR000548871.1 "RAD54L" +GTR#GTR000548959.1 "ABCC1" +GTR#GTR000548959.2 "ABCC1" +GTR#GTR000549012.1 "RAD51C" +GTR#GTR000549038.1 "IL1B" +GTR#GTR000549047.1 "MLH3" +GTR#GTR000549073.1 "NBN" +GTR#GTR000549153.1 "STK11" +GTR#GTR000549296.1 "CASP10" +GTR#GTR000549297.1 "CYP17A1" +GTR#GTR000549319.1 "MITF" +GTR#GTR000549328.1 "MAX" +GTR#GTR000549338.1 "MLH1" +GTR#GTR000549340.1 "PTEN" +GTR#GTR000549409.1 "RAD50" +GTR#GTR000549436.1 "PALB2" +GTR#GTR000549442.1 "TGFBR2" +GTR#GTR000549458.1 "FLCN" +GTR#GTR000549469.1 "SMAD4" +GTR#GTR000549508.1 "EPCAM" +GTR#GTR000549520.1 "VHL" +GTR#GTR000549533.1 "MSH6" +GTR#GTR000549561.1 "NF1" +GTR#GTR000549624.1 "POLD1" +GTR#GTR000549645.1 "FANCI" +GTR#GTR000549646.1 "PMS2" +GTR#GTR000549655.1 "KRAS" +GTR#GTR000549663.1 "BARD1" +GTR#GTR000549693.1 "CDK4" +GTR#GTR000549698.1 "CHRNA3" +GTR#GTR000549708.1 "MSH2" +GTR#GTR000549747.1 "FGFR2" +GTR#GTR000549767.1 "SDHAF2" +GTR#GTR000549776.1 "ALDH2" +GTR#GTR000549789.1 "ATM" +GTR#GTR000549798.1 "IL1RN" +GTR#GTR000549960.1 "MEN1" +GTR#GTR000549961.1 "ERBB2" +GTR#GTR000550014.1 "TGFB1" +GTR#GTR000550079.1 "ERCC6" +GTR#GTR000550094.1 "RNASEL" +GTR#GTR000550113.1 "AKAP9" +GTR#GTR000550148.1 "GALNT12" +GTR#GTR000550153.1 "HRAS" +GTR#GTR000550173.1 "EGFR" +GTR#GTR000550184.1 "BRAF" +GTR#GTR000550204.1 "ACTA2" +GTR#GTR000550208.1 "ADH1B" +GTR#GTR000550260.1 "MSR1" +GTR#GTR000550281.1 "CYP2A6" +GTR#GTR000550307.1 "PPM1D" +GTR#GTR000550310.1 "MET" +GTR#GTR000550323.1 "FANCM" +GTR#GTR000550403.1 "SDHA" +GTR#GTR000550423.1 "CCND1" +GTR#GTR000550473.1 "BMPR1A" +GTR#GTR000550491.1 "FANCC" +GTR#GTR000550516.1 "ATR" +GTR#GTR000550546.1 "RAD51D" +GTR#GTR000550573.1 "AR" +GTR#GTR000550575.1 "TSC1" +GTR#GTR000550582.1 "PARK2" +GTR#GTR000550584.1 "MAD1L1" +GTR#GTR000550595.1 "TLR4" +GTR#GTR000550625.1 "GATA3" +GTR#GTR000550630.1 "CHRNA5" +GTR#GTR000550637.1 "BRIP1" +GTR#GTR000550640.1 "SDHD" +GTR#GTR000550818.1 "APC" +GTR#GTR000550830.1 "BRCA1" +GTR#GTR000550844.1 "MSMB" +GTR#GTR000550887.1 "TSC2" +GTR#GTR000550890.1 "PIK3CA" +GTR#GTR000550968.1 "CDKN2A" +GTR#GTR000550972.1 "CASP8" +GTR#GTR000550992.1 "TMEM127" +GTR#GTR000550995.1 "EPHB2" +GTR#GTR000551000.1 "SDHB" +GTR#GTR000551045.1 "PPP2R1B" +GTR#GTR000551056.1 "ELAC2" +GTR#GTR000551113.1 "CDH1" +GTR#GTR000551140.1 "FASLG" +GTR#GTR000551162.1 "BRCA2" +GTR#GTR000551195.1 "AXIN2" +GTR#GTR000551205.1 "FH" +GTR#GTR000551260.1 "BLM" +GTR#GTR000551262.1 "CHEK2" +GTR#GTR000551288.1 "FANCA" +GTR#GTR000551352.1 "Comprehensive Hereditary Cancer Panel" +GTR#GTR000551352.2 "Comprehensive Hereditary Cancer Panel" +GTR#GTR000551352.3 "Comprehensive Hereditary Cancer Panel" +GTR#GTR000551353.1 "Hereditary Leukemia and Breast Cancer Panel" +GTR#GTR000551353.2 "Hereditary Leukemia and Breast Cancer Panel" +GTR#GTR000551440.1 "BRCA1 Mutation & Del/Dup Analysis" +GTR#GTR000551441.1 "BRCA1/2 Mutation & Del/Dup Analysis" +GTR#GTR000551447.1 "BRCA2 Mutation & Del/Dup Analysis" +GTR#GTR000551448.1 "Comprehensive Hereditary Breast-Ovarian Cancer Panel" +GTR#GTR000551448.2 "Hereditary Cancer Comprehensive Panel" +GTR#GTR000551449.1 "EGFR T790M Germline Mutation Analysis" +GTR#GTR000551451.1 "HOXB13 Genotyping" +GTR#GTR000551612.1 "MSH2 Exons 1-7 Inversion Analysis" +GTR#GTR000551736.1 "Invitae Pediatric Hematologic Malignancies Panel" +GTR#GTR000551736.2 "Invitae Pediatric Hematologic Malignancies Panel" +GTR#GTR000551736.3 "Invitae Pediatric Hematologic Malignancies Panel" +GTR#GTR000551741.1 "Invitae Breast Cancer STAT Panel" +GTR#GTR000551741.2 "Invitae Breast Cancer STAT Panel" +GTR#GTR000551741.3 "Invitae Breast Cancer STAT Panel" +GTR#GTR000551746.1 "Invitae Myelodysplastic Syndrome/Leukemia Panel" +GTR#GTR000551746.2 "Invitae Myelodysplastic Syndrome/Leukemia Panel" +GTR#GTR000551746.3 "Invitae Myelodysplastic Syndrome/Leukemia Panel" +GTR#GTR000551805.1 "Invitae Pediatric Solid Tumors Panel" +GTR#GTR000551805.2 "Invitae Pediatric Solid Tumors Panel" +GTR#GTR000551805.3 "Invitae Pediatric Solid Tumors Panel" +GTR#GTR000552076.1 "CustomNext-Cancer" +GTR#GTR000552076.2 "CustomNext-Cancer" +GTR#GTR000552078.1 "Inherited Cancer Screen" +GTR#GTR000552078.2 "Inherited Cancer Screen" +GTR#GTR000552080.1 "ProstateNext" +GTR#GTR000552095.1 "Hypomagnesemia NextGen Sequencing (NGS) Panel" +GTR#GTR000552095.2 "Hypomagnesemia NextGen Sequencing (NGS) Panel" +GTR#GTR000552095.3 "Hypomagnesemia NextGen Sequencing (NGS) Panel" +GTR#GTR000552095.4 "Hypomagnesemia Sequencing Panel" +GTR#GTR000552095.5 "Hypomagnesemia Sequencing Panel with CNV Detection" +GTR#GTR000552095.6 "Hypomagnesemia Sequencing Panel with CNV Detection" +GTR#GTR000552095.7 "Hypomagnesemia Sequencing Panel with CNV Detection" +GTR#GTR000552105.1 "BRCAvantage Plus(TM) (BRCA1, BRCA2, TP53, PTEN, CDH1, STK11, PALB2)" +GTR#GTR000552108.1 "CDH1 Sequencing and Deletion/Duplication" +GTR#GTR000552111.1 "PALB2 Sequencing and Deletion/Duplication" +GTR#GTR000552183.1 "MyVantage(TM) Hereditary Comprehensive Cancer Panel" +GTR#GTR000552183.2 "MyVantage(TM) Hereditary Comprehensive Cancer Panel" +GTR#GTR000552184.1 "GIvantage Hereditary Colon Cancer Panel" +GTR#GTR000552185.1 "Breast Plus Panel without BRCA (TP53, PTEN, CDH1, STK11, PALB2)" +GTR#GTR000552186.1 "MelanomaNext" +GTR#GTR000552192.1 "BrainTumorNext" +GTR#GTR000552194.1 "BRCA1&2" +GTR#GTR000552245.1 "Otogenetics Hereditary Cancers" +GTR#GTR000552245.2 "Otogenetics Hereditary Cancers" +GTR#GTR000552245.3 "Otogenetics Hereditary Cancers" +GTR#GTR000552302.1 "Inherited Breast Cancer" +GTR#GTR000552303.1 "Inherited Colon Cancer" +GTR#GTR000552304.1 "Inherited Ovarian Cancer" +GTR#GTR000552471.1 "KRAS Sequencing" +GTR#GTR000552479.1 "TP53 sequencing and deletion/duplication" +GTR#GTR000552848.1 "Hereditary Thyroid Cancer Panel" +GTR#GTR000552848.2 "Hereditary Thyroid Cancer Panel" +GTR#GTR000553137.1 "Microcephaly Spotlight Panel" +GTR#GTR000553152.1 "FISH - solid tumor" +GTR#GTR000553152.2 "FISH - solid tumor" +GTR#GTR000553154.1 "Hereditary Cancer Panel - Breast9" +GTR#GTR000553154.2 "Hereditary Cancer Panel - Breast9" +GTR#GTR000553155.1 "Hereditary Cancer Panel - Breast/Ovarian/Uterine26" +GTR#GTR000553161.1 "Hereditary Colorectal Cancer High Risk Panel" +GTR#GTR000553163.1 "Hereditary Cancer Panel - Pancreatic14" +GTR#GTR000553164.1 "Hereditary Cancer Panel - Colorectal20" +GTR#GTR000553165.1 "Colorectal Polyposis Panel" +GTR#GTR000553166.1 "Comprehensive Hereditary Colorectal Cancer Panel" +GTR#GTR000553167.1 "Hereditary Cancer Panel - Breast/Ovarian17" +GTR#GTR000553168.1 "Hereditary Breast and Ovarian Cancer High Risk Panel" +GTR#GTR000553170.1 "BRCA1 and BRCA2 Mutation Analysis" +GTR#GTR000553171.1 "BRCA1, BRCA2, and PALB2 Mutation Analysis" +GTR#GTR000553172.1 "BRCA1, BRCA2, and TP53 Mutation Analysis" +GTR#GTR000553173.1 "Comprehensive Hereditary Breast/Ovarian Cancer Panel" +GTR#GTR000553674.1 "BRCA1 & BRCA2 Seq and Del/Dup Analysis" +GTR#GTR000553675.1 "Hereditary Brain, CNS, PNS Cancer Panel" +GTR#GTR000553676.1 "Hereditary High Risk Breast Cancer Panel" +GTR#GTR000553677.1 "Hereditary Brain, CNS, PNS Cancer Panel" +GTR#GTR000553678.1 "BRCA1 & BRCA2 Seq and Del/Dup Analysis" +GTR#GTR000553679.1 "Hereditary High Risk Breast Cancer Panel" +GTR#GTR000553683.1 "Hereditary Melanoma Panel" +GTR#GTR000553685.1 "Hereditary Prostate Cancer Panel" +GTR#GTR000553687.1 "Hereditary Pancreatic Cancer Panel" +GTR#GTR000553688.1 "Hereditary Leukemia/Lymphoma Panel" +GTR#GTR000553689.1 "High Risk Hereditary Colorectal Cancer Panel" +GTR#GTR000553690.1 "Hereditary Endocrine Cancer Panel" +GTR#GTR000553691.1 "Comprehensive Hereditary Cancer Panel" +GTR#GTR000553692.1 "Hereditary Colorectal/Gastrointestinal Cancer Panel" +GTR#GTR000553704.1 "Tooth Agenesis Sequencing Panel" +GTR#GTR000553704.2 "Tooth Agenesis Sequencing Panel with CNV Detection" +GTR#GTR000553704.3 "Tooth Agenesis Sequencing Panel with CNV Detection" +GTR#GTR000553704.4 "Tooth Agenesis Sequencing Panel with CNV Detection" +GTR#GTR000553715.1 "Tooth Agenesis Sequencing Panel" +GTR#GTR000553798.1 "Invitae Autoinflammatory Syndromes Panel" +GTR#GTR000553827.1 "Invitae BRCA1 and BRCA2 STAT Panel" +GTR#GTR000555670.1 "Breast & Ovarian Cancer, Familial (BRCA1 & BRCA2)" +GTR#GTR000556374.1 "genTrue" +GTR#GTR000556509.1 "VisaSeq Breast and GYN Cancer Panel" +GTR#GTR000556509.2 "VisaSeq Breast and GYN Cancer Panel" +GTR#GTR000556511.1 "VistaSeq Breast Cancer Panel" +GTR#GTR000556512.1 "VistaSeq Brain/CNS/PNS Cancer Panel" +GTR#GTR000556513.1 "VistaSeq High Risk Colorectal Cancer Panel" +GTR#GTR000556514.1 "VistaSeq Renal Cell Cancer Panel" +GTR#GTR000556515.1 "VistaSeq High/Moderate Risk Breast Cancer Panel" +GTR#GTR000556516.1 "VistaSeq Pancreatic Cancer Panel" +GTR#GTR000556517.1 "VistaSeq Colorectal Cancer Panel" +GTR#GTR000556519.1 "VistaSeq GYN Panel" +GTR#GTR000556804.1 "152 Integrated Advantage NGS Solid Tumor Panel" +GTR#GTR000556827.1 "Hereditary Polyposis Sequencing and Deletion/Duplication Panel" +GTR#GTR000556827.2 "Hereditary Polyposis Sequencing Panel with CNV Detection" +GTR#GTR000556827.3 "Hereditary Polyposis Sequencing Panel with CNV Detection" +GTR#GTR000556827.4 "Hereditary Polyposis Sequencing Panel with CNV Detection" +GTR#GTR000557728.1 "Focus::BRCA√¢‚Äû¬¢ NGS Panel" +GTR#GTR000557729.1 "Focus::HERSite√Ç¬Æ NGS Panel" +GTR#GTR000557732.1 "Liquid::Lung-cfDNA√¢‚Äû¬¢ NGS Panel" +GTR#GTR000557735.1 "Focus::Oncomine√¢‚Äû¬¢ NGS Panel" +GTR#GTR000557792.1 "GeneStrat Genomic Test" +GTR#GTR000558049.1 "Hereditary Ovarian Cancer Sequencing and Deletion/Duplication Panel" +GTR#GTR000558049.2 "Hereditary Ovarian Cancer Sequencing Panel with CNV Detection" +GTR#GTR000558049.3 "Hereditary Ovarian Cancer Sequencing Panel with CNV Detection" +GTR#GTR000558049.4 "Hereditary Ovarian Cancer Sequencing Panel with CNV Detection" +GTR#GTR000558448.1 "Phosphorus Colorectal Cancer Panel" +GTR#GTR000558451.1 "Phosphorus Ovarian/Uterine Cancer Panel" +GTR#GTR000558456.1 "Phosphorus Prostate Cancer Panel" +GTR#GTR000558458.1 "Phosphorus Thyroid Cancer Panel" +GTR#GTR000558486.1 "Hereditary Endometrial Cancer Sequencing and Deletion/Duplication Panel" +GTR#GTR000558486.2 "Hereditary Endometrial Cancer Sequencing Panel with CNV Detection" +GTR#GTR000558486.3 "Hereditary Endometrial Cancer Sequencing Panel with CNV Detection" +GTR#GTR000558486.4 "Hereditary Endometrial Cancer Sequencing Panel with CNV Detection" +GTR#GTR000558503.1 "Hereditary Cancer" +GTR#GTR000558504.1 "BRCA Test" +GTR#GTR000558536.1 "Autism Spectrum Disorders: Tier 2 Deletion/Duplication Panel" +GTR#GTR000558549.1 "Brain, CNS, and PNS Cancer: Deletion/Duplication Panel" +GTR#GTR000558598.1 "Cardiomyopathy: Deletion/Duplication Panel" +GTR#GTR000558613.1 "Cardiomyopathy: Sequencing Panel" +GTR#GTR000558816.1 "Connective Tissue Disorders: Deletion/Duplication Panel" +GTR#GTR000558821.1 "Early Onset Inflammatory Bowel Disease: Deletion/Duplication Panel" +GTR#GTR000558845.1 "Melanoma Sequencing and Deletion/Duplication Panel" +GTR#GTR000558845.2 "Melanoma Sequencing Panel with CNV Detection" +GTR#GTR000558845.3 "Melanoma Sequencing Panel with CNV Detection" +GTR#GTR000558876.1 "Hereditary Breast and Ovarian Cancer - High Risk and Lynch Syndrome Sequencing Panel with CNV Detection" +GTR#GTR000558876.2 "Hereditary Breast and Ovarian Cancer - High Risk and Lynch Syndrome Sequencing Panel with CNV Detection" +GTR#GTR000558876.3 "Hereditary Breast and Ovarian Cancer - High Risk and Lynch Syndrome Sequencing Panel with CNV Detection" +GTR#GTR000558878.1 "Hereditary Breast and Ovarian Cancer - Expanded and Lynch Syndrome Sequencing Panel with CNV Detection" +GTR#GTR000558878.2 "Hereditary Breast and Ovarian Cancer - Expanded and Lynch Syndrome Sequencing Panel with CNV Detection" +GTR#GTR000558878.3 "Hereditary Breast and Ovarian Cancer - Expanded and Lynch Syndrome Sequencing Panel with CNV Detection" +GTR#GTR000558880.1 "HopeSeq Colon" +GTR#GTR000558883.1 "HopeSeq Lung" +GTR#GTR000558888.1 "HopeSeq Thyroid, FFPE" +GTR#GTR000558889.1 "HopeSeq Thyroid, FNA" +GTR#GTR000558939.1 "Breast Cancer - High / Moderate Risk Sequencing Panel with CNV Detection" +GTR#GTR000558939.2 "Breast Cancer - High / Moderate Risk Sequencing Panel with CNV Detection" +GTR#GTR000558939.3 "Breast Cancer - High / Moderate Risk Sequencing Panel with CNV Detection" +GTR#GTR000558939.4 "Breast Cancer - High / Moderate Risk Sequencing Panel with CNV Detection" +GTR#GTR000559313.1 "Oligodontia - Selective tooth agenesis Comprehensive panel" +GTR#GTR000559315.1 "Oligodontia - Selective tooth agenesis NGS panel" +GTR#GTR000559317.1 "Oligodontia - Selective tooth agenesis Deletion / Duplication panel" +GTR#GTR000559505.1 "Prostate Cancer Sequencing Panel with CNV Detection" +GTR#GTR000559505.2 "Prostate Cancer Sequencing Panel with CNV Detection" +GTR#GTR000560192.1 "Gastrointestinal and Colorectal Cancer: Deletion/Duplication Panel" +GTR#GTR000560493.1 "ATM gene sequence and deletion/duplication" +GTR#GTR000560493.2 "ATM gene sequence and deletion/duplication" +GTR#GTR000560499.1 "BrainTumorNext: gene sequence and deletion/duplication" +GTR#GTR000560499.2 "BrainTumorNext" +GTR#GTR000560500.1 "BRCA Ashkenazi Jewish 3-mutation panel" +GTR#GTR000560500.2 "BRCA Ashkenazi Jewish 3-mutation panel" +GTR#GTR000560501.1 "BRCA Ashkenazi Jewish 3-mutation panel reflext to BRCA1/2 gene sequence and deletion/duplication" +GTR#GTR000560501.2 "BRCA Ashkenazi Jewish 3-mutation panel reflext to BRCA1/2 gene sequence and deletion/duplication" +GTR#GTR000560502.1 "BRCA Portuguese 1-mutation panel specific site analysis" +GTR#GTR000560502.2 "BRCA Portuguese 1-mutation panel specific site analysis" +GTR#GTR000560503.1 "BRCAPlus: gene sequence and deletion/duplication" +GTR#GTR000560503.2 "BRCAplus" +GTR#GTR000560504.1 "BRCA1 and BRCA2 gene sequence and deletion/duplication" +GTR#GTR000560504.2 "BRCA1 and BRCA2 gene sequence and deletion/duplication" +GTR#GTR000560505.1 "Breast and Pancreatic Cancer: PALB2 gene sequence and deletion/duplication" +GTR#GTR000560505.2 "Breast and Pancreatic Cancer: PALB2 gene sequence and deletion/duplication" +GTR#GTR000560505.3 "PALB2 gene sequence and deletion/duplication" +GTR#GTR000560506.1 "BreastNext: gene sequence and deletion/duplication" +GTR#GTR000560506.2 "BreastNext" +GTR#GTR000560508.1 "CancerNext-Expanded: gene sequence and deletion/duplication" +GTR#GTR000560508.2 "CancerNext-Expanded" +GTR#GTR000560509.1 "CancerNext: gene sequence and deletion/duplication" +GTR#GTR000560509.2 "CancerNext" +GTR#GTR000560518.1 "CHEK2 gene sequence and deletion/duplication" +GTR#GTR000560518.2 "CHEK2 gene sequence and deletion/duplication" +GTR#GTR000560521.1 "COL3A1 gene sequence and deletion/duplication reflex TAADNext" +GTR#GTR000560521.2 "COL3A1 gene sequence and deletion/duplication reflex TAADNext" +GTR#GTR000560521.3 "COL3A1 gene sequence and deletion/duplication reflex TAADNext" +GTR#GTR000560521.4 "COL3A1 gene sequence and deletion/duplication reflex TAADNext" +GTR#GTR000560523.1 "ColoNext: gene sequence and deletion/duplication" +GTR#GTR000560523.2 "ColoNext" +GTR#GTR000560526.1 "CustomNext: Cancer" +GTR#GTR000560526.2 "CustomNext: Cancer" +GTR#GTR000560528.1 "CustomNext: Cardio" +GTR#GTR000560528.2 "CustomNext: Cardio" +GTR#GTR000560531.1 "EPCAM deletion/duplication" +GTR#GTR000560531.2 "EPCAM deletion/duplication" +GTR#GTR000560554.1 "FBN1 gene sequence and deletion/duplication reflex TAADNext" +GTR#GTR000560554.2 "FBN1 gene sequence and deletion/duplication reflex TAADNext" +GTR#GTR000560560.1 "GYNPlus: gene sequence and deletion/duplication" +GTR#GTR000560560.2 "GYNplus" +GTR#GTR000560564.1 "Hereditary Diffuse Gastric Cancer (HDGC): CDH1 gene sequence and deletion/duplication" +GTR#GTR000560564.2 "Hereditary Diffuse Gastric Cancer (HDGC): CDH1 gene sequence and deletion/duplication" +GTR#GTR000560564.3 "CDH1 gene sequence and deletion/duplication" +GTR#GTR000560568.1 "HNPCC/Lynch Syndrome: gene sequence and deletion/duplication" +GTR#GTR000560568.2 "HNPCC/Lynch Syndrome Panel" +GTR#GTR000560569.1 "HNPCC/Lynch syndrome: MLH1, MSH2, MSH6 gene sequence and deletion/duplication and EPCAM deletion/duplication reflex to PMS2 gene sequence and deletion/duplication" +GTR#GTR000560569.2 "HNPCC/Lynch syndrome: MLH1, MSH2, MSH6 gene sequence and deletion/duplication and EPCAM deletion/duplication reflex to PMS2 gene sequence and deletion/duplication" +GTR#GTR000560569.3 "MLH1, MSH2, MSH6 gene sequence and deletion/duplication and EPCAM deletion/duplication reflex to PMS2 gene sequence and deletion/duplication" +GTR#GTR000560570.1 "HNPCC/Lynch Syndrome: MSH2 gene sequence and MSH2 and EPCAM deletion/duplication and MSH2 Inversion" +GTR#GTR000560570.2 "MSH2 gene sequence and MSH2 and EPCAM deletion/duplication and MSH2 Inversion" +GTR#GTR000560572.1 "HNPCC/Lynch Syndrome: MSH6 gene sequence and deletion/duplication" +GTR#GTR000560572.2 "HNPCC/Lynch Syndrome: MSH6 gene sequence and deletion/duplication" +GTR#GTR000560572.3 "MSH6 gene sequence and deletion/duplication" +GTR#GTR000560574.1 "HNPCC/Lynch Syndrome: PMS2 gene sequence and deletion/duplication" +GTR#GTR000560574.2 "HNPCC/Lynch Syndrome: PMS2 gene sequence and deletion/duplication" +GTR#GTR000560574.3 "PMS2 gene sequence and deletion/duplication" +GTR#GTR000560579.1 "KRAS gene sequence" +GTR#GTR000560579.2 "KRAS gene sequence" +GTR#GTR000560579.3 "KRAS gene sequence" +GTR#GTR000560581.1 "Li-Fraumeni Syndrome: TP53 gene sequence and deletion/duplication" +GTR#GTR000560581.2 "Li-Fraumeni Syndrome: TP53 gene sequence and deletion/duplication" +GTR#GTR000560581.3 "TP53 gene sequence and deletion/duplication" +GTR#GTR000560583.1 "Lynch Syndrome-tumor and germline paired gene sequence and deletion/duplication" +GTR#GTR000560583.2 "Lynch Syndrome Paired Testing" +GTR#GTR000560584.1 "Malignant Melanoma: CDKN2A and CDK4 gene sequence and deletion/duplication" +GTR#GTR000560584.2 "CDKN2A and CDK4 gene sequence and deletion/duplication" +GTR#GTR000560589.1 "MelanomaNext: gene sequence and deletion/duplication" +GTR#GTR000560589.2 "MelanomaNext: gene sequence and deletion/duplication" +GTR#GTR000560589.3 "MelanomaNext" +GTR#GTR000560606.1 "Noonan Syndrome Panel" +GTR#GTR000560606.2 "Noonan Syndrome Panel" +GTR#GTR000560606.3 "Noonan Syndrome Panel" +GTR#GTR000560607.1 "OvaNext: gene sequence and deletion/duplication" +GTR#GTR000560607.2 "OvaNext: gene sequence and deletion/duplication" +GTR#GTR000560607.3 "OvaNext" +GTR#GTR000560610.1 "ProstateNext: gene sequence and deletion/duplication" +GTR#GTR000560610.2 "ProstateNext" +GTR#GTR000560614.1 "Pleuropulmonary Blastoma: DICER1 gene sequence and deletion/duplication" +GTR#GTR000560614.2 "DICER1 gene sequence and deletion/duplication" +GTR#GTR000560622.1 "PancNext: gene sequence and deletion/duplication" +GTR#GTR000560622.2 "PancNext: gene sequence and deletion/duplication" +GTR#GTR000560622.3 "PancNext" +GTR#GTR000560627.1 "RenalNext: gene sequence and deletion/duplication" +GTR#GTR000560627.2 "RenalNext" +GTR#GTR000560630.1 "Retinoblastoma: RB1 gene sequence and deletion/duplication" +GTR#GTR000560630.2 "Retinoblastoma: RB1 gene sequence and deletion/duplication" +GTR#GTR000560630.3 "RB1 gene sequence and deletion/duplication" +GTR#GTR000560641.1 "TumorNext-BRCA" +GTR#GTR000560641.2 "TumorNext-BRCA" +GTR#GTR000560641.3 "TumorNext-BRCA" +GTR#GTR000560646.1 "TAADNext" +GTR#GTR000560646.2 "TAADNext" +GTR#GTR000560646.3 "TAADNext" +GTR#GTR000560647.1 "TumorNext-Lynch+ColoNext" +GTR#GTR000560647.2 "TumorNext-Lynch+ColoNext" +GTR#GTR000560648.1 "TumorNext-Lynch" +GTR#GTR000560648.2 "TumorNext-Lynch" +GTR#GTR000560649.1 "TumorNext-HRD+CancerNext" +GTR#GTR000560649.2 "TumorNext-HRD+CancerNext" +GTR#GTR000560650.1 "TumorNext-Lynch+CancerNext" +GTR#GTR000560650.2 "TumorNext-Lynch+CancerNext" +GTR#GTR000560651.1 "TumorNext-HRD+OvaNext" +GTR#GTR000560651.2 "TumorNext-HRD+OvaNext" +GTR#GTR000560651.3 "TumorNext-HRD+OvaNext" +GTR#GTR000560652.1 "TumorNext-HRD" +GTR#GTR000560652.2 "TumorNext-HRD" +GTR#GTR000560657.1 "TumorNext-Lynch+OvaNext" +GTR#GTR000560657.2 "TumorNext-Lynch+OvaNext" +GTR#GTR000560682.1 "Craniofacial Deletion/Duplication Panel" +GTR#GTR000560743.1 "Hereditary Breast and Ovarian Cancer Syndrome: BRCA1/BRCA2 Deletion/Duplication Panel" +GTR#GTR000560744.1 "Hereditary Breast and Ovarian Cancer Syndrome: BRCA1/BRCA2 Gene Sequencing and Deletion/Duplication Panel" +GTR#GTR000560745.1 "Hereditary Breast and Ovarian Cancer Syndrome: BRCA1/BRCA2 Gene Sequencing Panel" +GTR#GTR000560746.1 "Hereditary Cancer Syndrome: Deletion/Duplication Panel" +GTR#GTR000560754.1 "High Risk Colorectal Cancer: Deletion/Duplication Panel" \ No newline at end of file From b1e7d8a1ce953e60a2d297fa59624f3569d391e7 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 12 Dec 2018 10:23:13 -0500 Subject: [PATCH 140/289] Sorted out cancer stage panel --- spec/shr_brca.txt | 9 ++- spec/shr_oncologycore.txt | 137 +++++++++++++++++--------------------- 2 files changed, 64 insertions(+), 82 deletions(-) diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 3136e795..60752b7b 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -40,7 +40,7 @@ Based on: CancerDisorderPresent Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." FindingTopicCode from BreastCancerTypeVS - StageInformation.StageDetail value is type BreastCancerStageInformation + StageInformation.StageDetail value is type BreastCancerStagePanel 0..1 FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding AnatomicalLocation.AnatomicalLocationStructured is type BreastSite 0..1 MorphologyBehavior from MorphologyBehaviorVS @@ -51,12 +51,11 @@ Description: "Diagnosis of cancer originating in the tissues of the breast, and Value: CodeableConcept -EntryElement: BreastCancerStageInformation -Based on: CancerStageInformation +EntryElement: BreastCancerStagePanel +Based on: CancerStagePanel Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. Description: "The stage of a breast cancer. The panel should not include both a DCISNuclearGrade and a BreastCancerHistologicGrade, since the latter implies an invasive cancer." - FindingTopicCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" - SpecificFocusOfFinding value is type ref(BreastCancerDisorderPresent) + FindingTopicCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" PanelMembers.Observation includes 0..1 HER2ReceptorStatus includes 0..1 EstrogenReceptorStatus diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index d7ab699a..523f249d 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -15,7 +15,7 @@ Description: "The presence of malignant neoplastic disease, in which abnormal Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" FindingTopicCode from CancerDisorderVS StageInformation.StageSummary from http://loinc.org/vs/LL240-3 // MK - also include stage group here - StageInformation.StageDetail value is type CancerStageInformation + StageInformation.StageDetail value is type CancerStagePanel // 0..1 MorphologyBehavior from MorphologyBehaviorVS //Not carried over from BrCa because it was intended to break out behavior codes from ICD-O-3, and we are no longer using it. @@ -24,12 +24,12 @@ EntryElement: CancerHistologicType Based on: SimpleCodedNonLaboratoryObservation // MK: Would this use a specimen? If so, it has to be a laboratory observation Description: "Classification of the cancer by the type of tissue in which the cancer originates. (Source: NCI)" Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) FindingResult from CancerHistologicTypeVS FindingTopicCode is SCT#371441004 "Histologic type (observable entity)" + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 AnatomicalLocation 0..0 Device -//0..0 DeltaFlag + EntryElement: CancerHistologicGrade // did not use precoordinated codes because only available for clinical and pathologic. @@ -42,6 +42,7 @@ Concept: LNC#21858-6 "Grade Cancer" 0..0 AnatomicalLocation 0..0 Device + EntryElement: CancerProgression Based on: CodedNonLaboratoryObservation Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" @@ -59,14 +60,12 @@ Concept: SCT#246453008 "Course of illness (attribute)" Value: CodeableConcept from CancerProgressionEvidenceVS -Abstract Element: CancerStageGroup +Abstract Element: CancerStagePanel Based on: Observation -Description: "The extent a cancer has spread in the body (source: NCI Dictionary of Cancer Terms)" +Description: "Cancer staging is a way of describing the size of a cancer and whether it has spread into nearby lymph nodes or to other parts of the body. This abstract class is the parent of panels containing information related to clinical and pathologic staging." Concept: SCT#258232002 "Cancer staging (tumor staging)" - // FindingTopicCode is SCT#258232002 "Cancer staging (tumor staging)" - // 0..0 FindingResult from http://loinc.org/vs/LL240-3 SpecificFocusOfFinding value is type ref(CancerDisorderPresent) -// 0..1 StageTiming // not a component since it is not a finding, but a further description of the circumstances of the observation + 0..0 FindingResult // true panel 0..0 ExceptionValue 0..0 ReferenceRange 0..0 AnatomicalLocation @@ -75,52 +74,66 @@ Concept: SCT#258232002 "Cancer staging (tumor staging)" 0..1 FindingMethod from CancerStagingSystemVS -EntryElement: -Based on: CancerStageGroup +EntryElement: CancerClinicalStagePanel +Based on: CancerStagePanel Concept: SCT#385349001 "Clinical stage (observable entity)" +Description: "Clinical staging is performed prior to surgery, based on evidence such as physical examination, imaging, and/or biopsy." FindingTopicCode is SCT#385349001 "Clinical stage (observable entity)" - FindingResult from http://loinc.org/vs/LL240-3 PanelMembers.Observation - includes 0..1 CancerClinicalStageGroup + includes 0..1 CancerClinicalStageGroup includes 0..1 TNMClinicalPrimaryTumorClassification includes 0..1 TNMClinicalRegionalNodesClassification includes 0..1 TNMClinicalDistantMetastasesClassification -EntryElement: CancerPathologicStageGroup -Based on: CancerStageGroup +EntryElement: CancerPathologicStagePanel +Based on: CancerStagePanel Concept: SCT#405978005 "Pathologic stage (observable entity)" +Description: "Pathologic stage is based on examination of tissue samples removed during surgery, in addition to physical examination and imaging." FindingTopicCode is SCT#405978005 "Pathologic stage (observable entity)" - FindingResult from http://loinc.org/vs/LL240-3 PanelMembers.Observation + includes 0..1 CancerPathologicStageGroup includes 0..1 TNMPathologicPrimaryTumorClassification includes 0..1 TNMPathologicRegionalNodesClassification includes 0..1 TNMPathologicDistantMetastasesClassification -Element: StageTiming -Concept: SCT#260869008 "Timing of stage" -Description: "Indicates when the staging was done, in terms of treatment landmarks." -Value: CodeableConcept from StageTimingPrefixVS -Element: StageGroup -// did not use precoordinated codes because only available for clinical and pathologic. -Based on: CodedNonIndependentFinding +Abstract Element: CancerStageGroup +Based on: CodedNonLaboratoryObservation Concept: MTH#C1302362 "Stage Grouping" Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" FindingResult from http://loinc.org/vs/LL240-3 - FindingTopicCode is MTH#C1302362 "Stage Grouping" + FindingTopicCode is MTH#C1302362 "Stage Grouping" + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) +1..1 CancerStageTiming + Element: CancerStageTiming + Concept: SCT#260869008 "Timing of stage" + Description: "Indicates when the staging was done, in terms of treatment landmarks." + Value: CodeableConcept from StageTimingPrefixVS + + EntryElement: CancerClinicalStageGroup + Based on: CancerStageGroup + Concept: TBD + Description: "TBD" + CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" + + EntryElement: CancerPathologicStageGroup + Based on: CancerStageGroup + Concept: TBD + Description: "TBD" + CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" + Element: StageSuffix Based on: CodedNonIndependentFinding Concept: TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. assign a local value set until we get something assigned. Description: "A suffix used in conjuction with certain cancer stage categories, usually qualifying how the category value was determined." - FindingResult from StageSuffixVS // local value set created FindingTopicCode is TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. + FindingResult from StageSuffixVS // local value set created -EntryElement: TNMClinicalPrimaryTumorClassification +Abstract Element: TNMTumorClassification Based on: CodedNonLaboratoryObservation Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" -Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." - FindingResult from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 +Description: "Abstract class parent of TNM staging observations." SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 ReferenceRange 0..0 AnatomicalLocation @@ -129,77 +142,47 @@ Description: "Detailed site-specific codes for the clinical tumor (T) as defi NonIndependentFinding includes 0..1 StageSuffix +EntryElement: TNMClinicalPrimaryTumorClassification +Based on: TNMTumorClassification +Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" +Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." + FindingTopicCode is LNC#21905-5 "Primary tumor.clinical [Class] Cancer" + FindingResult from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 + EntryElement: TNMClinicalRegionalNodesClassification -Based on: CodedNonLaboratoryObservation +Based on: TNMTumorClassification Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC - FindingResult from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) -0..0 ReferenceRange -0..0 AnatomicalLocation -0..0 Device -0..1 FindingMethod from TNMTumorStagingSystemVS if covered - NonIndependentFinding - includes 0..1 StageSuffix + FindingResult from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 EntryElement: TNMClinicalDistantMetastasesClassification -Based on: CodedNonLaboratoryObservation +Based on: TNMTumorClassification Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC - FindingResult from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" -0..0 ReferenceRange -0..0 Device -0..1 FindingMethod from TNMTumorStagingSystemVS if covered - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) - NonIndependentFinding - includes 0..1 StageSuffix - + FindingResult from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 EntryElement: TNMPathologicPrimaryTumorClassification -Based on: CodedNonLaboratoryObservation +Based on: TNMTumorClassification Concept: LNC#21899-0 "Primary tumor.pathology Cancer" -Description: "" //TODO: pull from LOINC - FindingResult from http://loinc.org/vs/LL232-0 // normative +Description: "TODO: pull from LOINC" //TODO: pull from LOINC FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" -0..0 ReferenceRange -0..0 AnatomicalLocation -0..0 Device -0..1 FindingMethod from TNMTumorStagingSystemVS if covered - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) - NonIndependentFinding - includes 0..1 StageSuffix + FindingResult from http://loinc.org/vs/LL232-0 // normative EntryElement: TNMPathologicRegionalNodesClassification -Based on: CodedNonLaboratoryObservation +Based on: TNMTumorClassification Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" -Description: "" //TODO: pull from LOINC - FindingResult from http://loinc.org/vs/LL3136-0 // normative +Description: "TODO: pull from LOINC" //TODO: pull from LOINC FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) -0..0 ReferenceRange -0..0 AnatomicalLocation -0..0 Device -0..1 FindingMethod from TNMTumorStagingSystemVS if covered - NonIndependentFinding - includes 0..1 StageSuffix + FindingResult from http://loinc.org/vs/LL3136-0 // normative EntryElement: TNMPathologicDistantMetastasesClassification -Based on: CodedNonLaboratoryObservation +Based on: TNMTumorClassification Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" -Description: "" //TODO: pull from LOINC - FindingResult from http://loinc.org/vs/LL3137-8 -0..0 ReferenceRange +Description: "TODO: pull from LOINC" //TODO: pull from LOINC FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) -0..0 ReferenceRange -0..0 AnatomicalLocation -0..0 Device -0..1 FindingMethod from TNMTumorStagingSystemVS if covered - NonIndependentFinding - includes 0..1 StageSuffix - + FindingResult from http://loinc.org/vs/LL3137-8 EntryElement: TumorPresent Based on: BodyStructurePresent From 926807e5f46ce544e3d5b79382ba4c688203cf62 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 12 Dec 2018 11:57:15 -0500 Subject: [PATCH 141/289] Finished cleanup of staging elements Streamlined via inheritance --- spec/shr_oncologycore.txt | 95 +++++++++++++++++++++++---------------- 1 file changed, 57 insertions(+), 38 deletions(-) diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 523f249d..ea1d415a 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -50,10 +50,10 @@ Concept: SCT#246453008 "Course of illness (attribute)" FindingResult from CancerProgressionVS FindingTopicCode is SCT#246453008 "Course of illness (attribute)" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) -0..0 AnatomicalLocation -0..0 Device // CancerProgressionEvidence is not yet part of M-CODE, but I don't see a better way to include it for FluxNotes -0..* CancerProgressionEvidence +0..* CancerProgressionEvidence +0..0 AnatomicalLocation +0..0 Device Element: CancerProgressionEvidence Description: "The type of evidence considered in determining disease progression." @@ -65,120 +65,139 @@ Based on: Observation Description: "Cancer staging is a way of describing the size of a cancer and whether it has spread into nearby lymph nodes or to other parts of the body. This abstract class is the parent of panels containing information related to clinical and pathologic staging." Concept: SCT#258232002 "Cancer staging (tumor staging)" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) + 0..1 FindingMethod from TNMTumorStagingSystemVS if covered 0..0 FindingResult // true panel 0..0 ExceptionValue 0..0 ReferenceRange 0..0 AnatomicalLocation 0..0 Specimen 0..0 Device - 0..1 FindingMethod from CancerStagingSystemVS + 0..0 FindingMethod // The expectation is that each member of the panel will declares its own method; if added here, it would be redundant. -EntryElement: CancerClinicalStagePanel +EntryElement: TNMClinicalStagePanel Based on: CancerStagePanel Concept: SCT#385349001 "Clinical stage (observable entity)" Description: "Clinical staging is performed prior to surgery, based on evidence such as physical examination, imaging, and/or biopsy." FindingTopicCode is SCT#385349001 "Clinical stage (observable entity)" PanelMembers.Observation - includes 0..1 CancerClinicalStageGroup + includes 0..1 TNMClinicalStageGroup includes 0..1 TNMClinicalPrimaryTumorClassification includes 0..1 TNMClinicalRegionalNodesClassification includes 0..1 TNMClinicalDistantMetastasesClassification -EntryElement: CancerPathologicStagePanel +EntryElement: TNMPathologicStagePanel Based on: CancerStagePanel Concept: SCT#405978005 "Pathologic stage (observable entity)" Description: "Pathologic stage is based on examination of tissue samples removed during surgery, in addition to physical examination and imaging." FindingTopicCode is SCT#405978005 "Pathologic stage (observable entity)" PanelMembers.Observation - includes 0..1 CancerPathologicStageGroup + includes 0..1 TNMPathologicStageGroup includes 0..1 TNMPathologicPrimaryTumorClassification includes 0..1 TNMPathologicRegionalNodesClassification includes 0..1 TNMPathologicDistantMetastasesClassification -Abstract Element: CancerStageGroup +Element: CancerStageTiming +Concept: SCT#260869008 "Timing of stage" +Description: "Indicates when the staging was done, in terms of treatment landmarks." +Value: CodeableConcept from StageTimingPrefixVS + + +Abstract Element: TNMStageGroup Based on: CodedNonLaboratoryObservation Concept: MTH#C1302362 "Stage Grouping" Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" FindingResult from http://loinc.org/vs/LL240-3 FindingTopicCode is MTH#C1302362 "Stage Grouping" +0..1 FindingMethod from TNMTumorStagingSystemVS if covered SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 1..1 CancerStageTiming +0..0 AnatomicalLocation +0..0 NonIndependentFinding +0..0 PanelMembers +0..0 Device - Element: CancerStageTiming - Concept: SCT#260869008 "Timing of stage" - Description: "Indicates when the staging was done, in terms of treatment landmarks." - Value: CodeableConcept from StageTimingPrefixVS - - EntryElement: CancerClinicalStageGroup - Based on: CancerStageGroup + EntryElement: TNMClinicalStageGroup + Based on: TNMStageGroup Concept: TBD Description: "TBD" CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" - EntryElement: CancerPathologicStageGroup - Based on: CancerStageGroup + EntryElement: TNMPathologicStageGroup + Based on: TNMStageGroup Concept: TBD Description: "TBD" CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" Element: StageSuffix -Based on: CodedNonIndependentFinding Concept: TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. assign a local value set until we get something assigned. Description: "A suffix used in conjuction with certain cancer stage categories, usually qualifying how the category value was determined." - FindingTopicCode is TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. - FindingResult from StageSuffixVS // local value set created +Value: CodeableConcept from StageSuffixVS // local value set created + +Abstract Element: TNMClassification +Based on: CodedNonLaboratoryObservation +Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" +Description: "Abstract class parent of TNM stage classifications." + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) +1..1 CancerStageTiming +0..1 FindingMethod from TNMTumorStagingSystemVS if covered +0..1 StageSuffix +0..0 AnatomicalLocation +0..0 NonIndependentFinding +0..0 PanelMembers +0..0 Device + +Abstract Element: TNMClinicalClassification +Based on: TNMClassification +Concept: TBD +Description: "Abstract class parent for TNM clinical stage classifications." + CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" + +Abstract Element: TNMPathologicClassification +Based on: TNMClassification +Concept: TBD +Description: "Abstract class parent for TNM clinical stage classifications." + CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" -Abstract Element: TNMTumorClassification -Based on: CodedNonLaboratoryObservation -Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" -Description: "Abstract class parent of TNM staging observations." - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) -0..0 ReferenceRange -0..0 AnatomicalLocation -0..0 Device -0..1 FindingMethod from TNMTumorStagingSystemVS if covered - NonIndependentFinding - includes 0..1 StageSuffix EntryElement: TNMClinicalPrimaryTumorClassification -Based on: TNMTumorClassification +Based on: TNMClinicalClassification Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." FindingTopicCode is LNC#21905-5 "Primary tumor.clinical [Class] Cancer" FindingResult from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 EntryElement: TNMClinicalRegionalNodesClassification -Based on: TNMTumorClassification +Based on: TNMClinicalClassification Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" FindingResult from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 EntryElement: TNMClinicalDistantMetastasesClassification -Based on: TNMTumorClassification +Based on: TNMClinicalClassification Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" Description: "" //TODO: pull from LOINC FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" FindingResult from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 EntryElement: TNMPathologicPrimaryTumorClassification -Based on: TNMTumorClassification +Based on: TNMPathologicClassification Concept: LNC#21899-0 "Primary tumor.pathology Cancer" Description: "TODO: pull from LOINC" //TODO: pull from LOINC FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" FindingResult from http://loinc.org/vs/LL232-0 // normative EntryElement: TNMPathologicRegionalNodesClassification -Based on: TNMTumorClassification +Based on: TNMPathologicClassification Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" Description: "TODO: pull from LOINC" //TODO: pull from LOINC FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" FindingResult from http://loinc.org/vs/LL3136-0 // normative EntryElement: TNMPathologicDistantMetastasesClassification -Based on: TNMTumorClassification +Based on: TNMPathologicClassification Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" Description: "TODO: pull from LOINC" //TODO: pull from LOINC FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative From 347499899ea4ab6f4f0ccf3d00dcc7eb74ca6b7d Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 12 Dec 2018 12:05:56 -0500 Subject: [PATCH 142/289] One more 0..0 --- spec/shr_oncologycore.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index ea1d415a..312f09b7 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -67,6 +67,7 @@ Concept: SCT#258232002 "Cancer staging (tumor staging)" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..1 FindingMethod from TNMTumorStagingSystemVS if covered 0..0 FindingResult // true panel + 0..0 NonIndependentFinding 0..0 ExceptionValue 0..0 ReferenceRange 0..0 AnatomicalLocation From 58c20ffd2b7e0f593c9bffea4939b40fdead2255 Mon Sep 17 00:00:00 2001 From: May Terry Date: Wed, 12 Dec 2018 13:34:57 -0500 Subject: [PATCH 143/289] Expanded filter criteria for 'tumors' to include FoundationOne. FoundationOne's description was for "all solid tumors" and therefore missed the GTR filter criteria. --- spec/shr_genetics_vs.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index c5b1313e..878c5357 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -1148,6 +1148,11 @@ GTR#GTR000514931.1 "Familial pancreatic adenocarcinoma" GTR#GTR000514934.1 "High-risk hereditary breast cancers" GTR#GTR000514934.2 "High-risk hereditary breast cancers" GTR#GTR000514934.3 "Hereditary breast cancer, high-risk panel" +GTR#GTR000514942.1 "PTEN hamartoma tumor syndrome" +GTR#GTR000514942.2 "Invitae Cowden Syndrome Test" +GTR#GTR000514942.3 "Invitae PTEN-Related Disorders Test" +GTR#GTR000514942.4 "Invitae PTEN-Related Disorders Test" +GTR#GTR000514942.5 "Invitae PTEN-Related Disorders Test" GTR#GTR000514951.4 "Invitae MUTYH-Associated Polyposis Syndrome Test" GTR#GTR000514951.5 "Invitae MUTYH-Associated Polyposis Syndrome Test" GTR#GTR000514977.4 "Invitae Juvenile Polyposis Syndrome Panel" @@ -1631,6 +1636,8 @@ GTR#GTR000527973.1 "Breast Cancer High Risk Panel and PALB2" GTR#GTR000527973.2 "Breast Cancer High Risk Panel and PALB2" GTR#GTR000527975.1 "Breast Cancer High/Moderate Risk Panel" GTR#GTR000527975.2 "Breast Cancer High/Moderate Risk Panel" +GTR#GTR000527976.1 "FoundationOne" +GTR#GTR000527976.2 "FoundationOne" GTR#GTR000528059.1 "Cowden Syndrome NGS Panel" GTR#GTR000528059.2 "Cowden Syndrome NGS Panel" GTR#GTR000528059.3 "Cowden Syndrome NGS Panel" From a6c641e009b7f519e224c8be479800b39b738af3 Mon Sep 17 00:00:00 2001 From: May Terry Date: Thu, 13 Dec 2018 00:20:48 -0500 Subject: [PATCH 144/289] rename to GeneticMarkerAnalysisResult; added HGNC cancer gene value set. --- spec/shr_genetics.txt | 31 +- spec/shr_genetics_map_dstu2.txt | 3 +- spec/shr_genetics_map_stu3.txt | 2 +- spec/shr_genetics_vs.txt | 2703 ++++++++++++++++++++++++++++++- 4 files changed, 2664 insertions(+), 75 deletions(-) diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index 2c6b94db..b034be12 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -13,7 +13,7 @@ CodeSystem: UCUM = http://unitsofmeasure.org * Markers can apply to multiple cancer types, and potentially other non-cancer diseases. * Must model this in a way that constrains biomarkers by cancer type in each value set. */ -EntryElement: GeneticVariantTestResult +EntryElement: GeneticMarkerAnalysisResult Based on: LaboratoryObservation Concept: MTH#C0017393 // should be a finding (Q+A), not an observable Description: "A finding with respect to variation in a segment of DNA with an identifiable physical location on a chromosome." @@ -77,33 +77,4 @@ Description: "A substance found in tissue or blood or other body fluids that may 0..0 NonIndependentFinding 0..0 AnatomicalLocation 0..0 PanelMembers.Observation // each cancer type can further narrow the value set of tumor markers as needed. -/* -Element: TumorMarkerName -Concept: LNC#TBD "TBD" -Based on: CodedNonIndependentFinding -Description: "TBD (source: LOINC)" - FindingTopicCode is LNC#TBD - FindingResult from TBD -*/ - - // *** MLT: Example DCMs for an individual marker. We don't want to model each marker because that doesn't scale. - /* - EntryElement: PDL1ByCloneSP142ByImmuneStain - Based on: CodedLaboratoryObservation - Concept: LNC#83057-0 - Description: "The degree of PD-L1 (CD274) protein expression in tumor cells as determined by immune staining with anti-PD-L1 clone SP142. (source: LOINC)" - FindingTopicCode is LNC#83057-0 "PD-L1 by clone SP142 [Presence] in Tissue by Immune stain." - FindingResult from ProteinExpressionVS - // Specimen is type BreastSpecimen - 0..0 NonIndependentFinding - PanelMembers.Observation - includes 0..1 PDL1PercentStaining - EntryElement: PDL1PercentStaining - Based on: LaboratoryObservation - Concept: LNC#83053-9 - Description: "Cells.programmed cell death ligand 1/100 viable tumor cells in Tissue by Immune stain. (source: LOINC)" - FindingTopicCode is LNC#83053-9 "Cells.programmed cell death ligand 1/100 viable tumor cells in Tissue by Immune stain." - FindingResult.Quantity with units UCUM#% - // Specimen is type BreastSpecimen -*/ \ No newline at end of file diff --git a/spec/shr_genetics_map_dstu2.txt b/spec/shr_genetics_map_dstu2.txt index 88c50f45..a191b885 100644 --- a/spec/shr_genetics_map_dstu2.txt +++ b/spec/shr_genetics_map_dstu2.txt @@ -2,9 +2,8 @@ Grammar: Map 5.1 Namespace: oncocore Target: FHIR_DSTU_2 -//GeneticVariantTestResult maps to http://hl7.org/fhir/StructureDefinition/genetics: -GeneticVariantTestResult maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-observationresults: +GeneticMarkerAnalysisResult maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-observationresults: GenomicSourceClass maps to http://hl7.org/fhir/StructureDefinition/geneticsGenomicSourceClass GeneName maps to http://hl7.org/fhir/StructureDefinition/geneticsGene DNARegionName maps to http://hl7.org/fhir/StructureDefinition/geneticsDNARegionName diff --git a/spec/shr_genetics_map_stu3.txt b/spec/shr_genetics_map_stu3.txt index f4bb9180..9de0a70b 100644 --- a/spec/shr_genetics_map_stu3.txt +++ b/spec/shr_genetics_map_stu3.txt @@ -3,7 +3,7 @@ Namespace: oncocore Target: FHIR_STU_3 -GeneticVariantTestResult maps to http://hl7.org/fhir/StructureDefinition/observation-genetics: +GeneticMarkerAnalysisResult maps to http://hl7.org/fhir/StructureDefinition/observation-genetics: GenomicSourceClass maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsGenomicSourceClass GeneName maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsGene DNARegionName maps to http://hl7.org/fhir/StructureDefinition/observation-geneticsDNARegionName diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index 878c5357..375a3750 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -294,23 +294,23 @@ GTR#GTR000500640.2 "KRAS Molecular Genetic Testing" GTR#GTR000500646.1 "Microsatellite Instability" GTR#GTR000500743.1 "Loeys-Dietz Syndrome Sequencing" GTR#GTR000500746.1 "Loeys-Dietz (TGFBR1, TGFBR2) Seq & DelDup" -GTR#GTR000500808.1 "mtSEEK¬Æ Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" -GTR#GTR000500808.2 "mtSEEK¬Æ Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" -GTR#GTR000500808.3 "mtSEEK¬Æ Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" -GTR#GTR000500808.4 "mtSEEK¬Æ Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" -GTR#GTR000500808.5 "mtSEEK¬Æ Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" +GTR#GTR000500808.1 "mtSEEK Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" +GTR#GTR000500808.2 "mtSEEK Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" +GTR#GTR000500808.3 "mtSEEK Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" +GTR#GTR000500808.4 "mtSEEK Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" +GTR#GTR000500808.5 "mtSEEK Mitochondrial Genome Sequencing with Deletion Detection and Heteroplasmy Analysis" GTR#GTR000500816.1 "PMS2 HNPCC Sequencing and Del/Dup" GTR#GTR000500816.2 "HNPCC/Lynch Syndrome (PMS2) Sequencing and Deletion/Duplication" GTR#GTR000500826.1 "MSH6 HNPCC Sequencing and Del/Dup" GTR#GTR000500826.2 "HNPCC/Lynch Syndrome (MSH6) Sequencing and Deletion/Duplication" GTR#GTR000500826.3 "HNPCC/Lynch Syndrome (MSH6) Sequencing and Deletion/Duplication" -GTR#GTR000500883.1 "epiSEEK¬Æ Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" -GTR#GTR000500883.2 "epiSEEK¬Æ Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" -GTR#GTR000500883.3 "epiSEEK¬Æ Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" -GTR#GTR000500883.4 "epiSEEK¬Æ Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" -GTR#GTR000500883.5 "epiSEEK¬Æ Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders" -GTR#GTR000500883.6 "epiSEEK¬Æ Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders" -GTR#GTR000500883.7 "epiSEEK¬Æ Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders" +GTR#GTR000500883.1 "epiSEEK Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" +GTR#GTR000500883.2 "epiSEEK Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" +GTR#GTR000500883.3 "epiSEEK Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" +GTR#GTR000500883.4 "epiSEEK Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" +GTR#GTR000500883.5 "epiSEEK Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders" +GTR#GTR000500883.6 "epiSEEK Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders" +GTR#GTR000500883.7 "epiSEEK Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders" GTR#GTR000500933.1 "Integrated BRACAnalysis" GTR#GTR000500933.2 "Integrated BRACAnalysis" GTR#GTR000500933.3 "Integrated BRACAnalysis" @@ -382,11 +382,11 @@ GTR#GTR000503394.2 "BRCA1/2 Deletion/Duplication Analysis only" GTR#GTR000503394.3 "BRCA1/2 Deletion/Duplication Analysis only" GTR#GTR000503394.4 "BRCA1/2 Deletion/Duplication Analysis only" GTR#GTR000503671.1 "Comprehensive Sequence Analysis of Nuclear Mitochondrial Exome" -GTR#GTR000503671.2 "nucSEEK¬Æ Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" -GTR#GTR000503671.3 "nucSEEK¬Æ Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" -GTR#GTR000503671.4 "nucSEEK¬Æ Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" -GTR#GTR000503671.5 "nucSEEK¬Æ Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" -GTR#GTR000503671.6 "nucSEEK¬Æ Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" +GTR#GTR000503671.2 "nucSEEK Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" +GTR#GTR000503671.3 "nucSEEK Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" +GTR#GTR000503671.4 "nucSEEK Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" +GTR#GTR000503671.5 "nucSEEK Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" +GTR#GTR000503671.6 "nucSEEK Comprehensive Sequence Analysis Of The Nuclear Mitochondrial Exome" GTR#GTR000504105.1 "TP53 full sequencing" GTR#GTR000504105.10 "TP53 Full Gene Sequencing" GTR#GTR000504105.11 "TP53 Full Gene Sequencing" @@ -626,8 +626,8 @@ GTR#GTR000508060.1 "MSH6 Gene Deletion or Duplication" GTR#GTR000508061.1 "MSH6 Mutation, One Exon, HNPCC" GTR#GTR000508061.2 "MSH6 Mutation, One Exon, HNPCC" GTR#GTR000508062.1 "MSH6 Mutation, One Exon, HNPCC (NY)" -GTR#GTR000508280.1 "MitoMet¬ÆPlus aCGH Analysis" -GTR#GTR000508280.2 "MitoMet¬ÆPlus aCGH Analysis" +GTR#GTR000508280.1 "MitoMetPlus aCGH Analysis" +GTR#GTR000508280.2 "MitoMetPlus aCGH Analysis" GTR#GTR000508339.1 "Breast Ovarian Cancer NGS panel" GTR#GTR000508339.2 "Breast Ovarian Cancer NGS panel" GTR#GTR000508339.3 "Breast Ovarian Cancer NGS panel" @@ -1034,13 +1034,13 @@ GTR#GTR000512650.5 "Hereditary Cancer Syndrome: Sequencing Panel" GTR#GTR000512726.1 "Tissue of Origin" GTR#GTR000512726.2 "Tissue of Origin" GTR#GTR000512726.3 "Tissue of Origin" -GTR#GTR000512827.1 "BRCATRUE‚Ñ¢" -GTR#GTR000512827.2 "BRCATRUE‚Ñ¢" -GTR#GTR000512827.3 "BRCATRUE‚Ñ¢" -GTR#GTR000512828.1 "COLOTRUE‚Ñ¢" -GTR#GTR000512828.2 "COLOTRUE‚Ñ¢" -GTR#GTR000512828.3 "COLOTRUE‚Ñ¢" -GTR#GTR000512828.4 "COLOTRUE‚Ñ¢" +GTR#GTR000512827.1 "BRCATRUE" +GTR#GTR000512827.2 "BRCATRUE" +GTR#GTR000512827.3 "BRCATRUE" +GTR#GTR000512828.1 "COLOTRUE" +GTR#GTR000512828.2 "COLOTRUE" +GTR#GTR000512828.3 "COLOTRUE" +GTR#GTR000512828.4 "COLOTRUE" GTR#GTR000514555.1 "RRM1 expression" GTR#GTR000514555.2 "RRM1 expression" GTR#GTR000514557.1 "EGFR Mutation by Sanger Sequencing" @@ -1091,11 +1091,11 @@ GTR#GTR000514731.1 "PMS2 Full Gene Analysis" GTR#GTR000514731.2 "PMS2 Full Gene Sequencing" GTR#GTR000514731.3 "PMS2 Full Gene Sequencing" GTR#GTR000514731.4 "PMS2 Full Gene Sequencing" -GTR#GTR000514882.1 "devSEEK‚Ñ¢ Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" -GTR#GTR000514882.2 "devSEEK‚Ñ¢ Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" -GTR#GTR000514882.3 "devSEEK‚Ñ¢ Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" -GTR#GTR000514882.4 "devSEEK‚Ñ¢ Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" -GTR#GTR000514882.5 "devSEEK¬Æ Sequence Analysis for Neurodevelopmental Disorders" +GTR#GTR000514882.1 "devSEEK Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" +GTR#GTR000514882.2 "devSEEK Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" +GTR#GTR000514882.3 "devSEEK Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" +GTR#GTR000514882.4 "devSEEK Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" +GTR#GTR000514882.5 "devSEEK Sequence Analysis for Neurodevelopmental Disorders" GTR#GTR000514883.1 "BRAF Full Gene Sequencing" GTR#GTR000514883.2 "BRAF Full Gene Sequencing" GTR#GTR000514883.3 "BRAF Full Gene Sequencing" @@ -1178,9 +1178,9 @@ GTR#GTR000514996.4 "Invitae Colorectal Cancer Panel" GTR#GTR000514996.5 "Invitae Colorectal Cancer Panel" GTR#GTR000514996.6 "Invitae Colorectal Cancer Panel" GTR#GTR000514996.7 "Invitae Colorectal Cancer Panel" -GTR#GTR000515002.1 "EGFR Mutation Analysis (cobas¬Æ)" +GTR#GTR000515002.1 "EGFR Mutation Analysis (cobas)" GTR#GTR000515009.1 "ALK Break Apart FISH Probe" -GTR#GTR000515013.1 "HER2/neu (PathVysion¬Æ)" +GTR#GTR000515013.1 "HER2/neu (PathVysion)" GTR#GTR000515018.1 "KRAS Mutation Analysis" GTR#GTR000515033.1 "EGFR Mutation Analysis" GTR#GTR000515046.1 "TruGenome Predisposition Screen" @@ -1461,8 +1461,8 @@ GTR#GTR000521246.1 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sanger Sequenc GTR#GTR000521246.2 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sanger Sequencing Panel" GTR#GTR000521246.3 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sanger Sequencing Panel" GTR#GTR000521246.4 "Hereditary Breast and Ovarian Cancer BRCA1/2 Sanger Sequencing Panel" -GTR#GTR000521311.1 "BRACAnalysis CDx‚Ñ¢" -GTR#GTR000521311.2 "BRACAnalysis CDx‚Ñ¢" +GTR#GTR000521311.1 "BRACAnalysis CDx" +GTR#GTR000521311.2 "BRACAnalysis CDx" GTR#GTR000521311.3 "BRACAnalysis CDx√¢‚Äû¬¢" GTR#GTR000521486.1 "Colorectal Cancer Predisposition via the POLD1 Gene" GTR#GTR000521486.2 "Colorectal Cancer Predisposition via the POLD1 Gene" @@ -1614,11 +1614,11 @@ GTR#GTR000523360.4 "Loeys-Dietz Syndrome NGS Panel" GTR#GTR000523360.5 "Loeys-Dietz Syndrome NGS Panel" GTR#GTR000523360.6 "Loeys-Dietz Syndrome NGS Panel" GTR#GTR000523360.7 "Loeys-Dietz Syndrome NGS Panel" -GTR#GTR000523563.1 "nucSEEK¬Æ Focus" -GTR#GTR000523563.2 "nucSEEK¬Æ Focus" -GTR#GTR000523563.3 "nucSEEK¬Æ Focus" -GTR#GTR000523563.4 "nucSEEK¬Æ Focus Nuclear Mitochondrial Gene Panel" -GTR#GTR000523563.5 "nucSEEK¬Æ Focus Nuclear Mitochondrial Gene Panel" +GTR#GTR000523563.1 "nucSEEK Focus" +GTR#GTR000523563.2 "nucSEEK Focus" +GTR#GTR000523563.3 "nucSEEK Focus" +GTR#GTR000523563.4 "nucSEEK Focus Nuclear Mitochondrial Gene Panel" +GTR#GTR000523563.5 "nucSEEK Focus Nuclear Mitochondrial Gene Panel" GTR#GTR000523829.1 "Familial Thoracic Aortic Aneurysm NGS Panel" GTR#GTR000525305.1 "Hereditary Gastric Cancer Panel" GTR#GTR000525305.2 "Hereditary Gastric Cancer Panel" @@ -2150,7 +2150,7 @@ GTR#GTR000556827.2 "Hereditary Polyposis Sequencing Panel with CNV Detection" GTR#GTR000556827.3 "Hereditary Polyposis Sequencing Panel with CNV Detection" GTR#GTR000556827.4 "Hereditary Polyposis Sequencing Panel with CNV Detection" GTR#GTR000557728.1 "Focus::BRCA√¢‚Äû¬¢ NGS Panel" -GTR#GTR000557729.1 "Focus::HERSite√Ç¬Æ NGS Panel" +GTR#GTR000557729.1 "Focus::HERSite√Ç NGS Panel" GTR#GTR000557732.1 "Liquid::Lung-cfDNA√¢‚Äû¬¢ NGS Panel" GTR#GTR000557735.1 "Focus::Oncomine√¢‚Äû¬¢ NGS Panel" GTR#GTR000557792.1 "GeneStrat Genomic Test" @@ -2311,4 +2311,2623 @@ GTR#GTR000560743.1 "Hereditary Breast and Ovarian Cancer Syndrome: BRCA1/BRCA2 GTR#GTR000560744.1 "Hereditary Breast and Ovarian Cancer Syndrome: BRCA1/BRCA2 Gene Sequencing and Deletion/Duplication Panel" GTR#GTR000560745.1 "Hereditary Breast and Ovarian Cancer Syndrome: BRCA1/BRCA2 Gene Sequencing Panel" GTR#GTR000560746.1 "Hereditary Cancer Syndrome: Deletion/Duplication Panel" -GTR#GTR000560754.1 "High Risk Colorectal Cancer: Deletion/Duplication Panel" \ No newline at end of file +GTR#GTR000560754.1 "High Risk Colorectal Cancer: Deletion/Duplication Panel" + +ValueSet: CancerGeneVS +Description: "A gene that is related to the cancer disease process." +HGNC#A2M "alpha-2-macroglobulin" +HGNC#AAAS "aladin WD repeat nucleoporin" +HGNC#AARS "alanyl-tRNA synthetase" +HGNC#AARS2 "alanyl-tRNA synthetase 2, mitochondrial" +HGNC#ABCA1 "ATP binding cassette subfamily A member 1" +HGNC#ABCA12 "ATP binding cassette subfamily A member 12" +HGNC#ABCA3 "ATP binding cassette subfamily A member 3" +HGNC#ABCA4 "ATP binding cassette subfamily A member 4" +HGNC#ABCB1 "ATP binding cassette subfamily B member 1" +HGNC#ABCB11 "ATP binding cassette subfamily B member 11" +HGNC#ABCB4 "ATP binding cassette subfamily B member 4" +HGNC#ABCB6 "ATP binding cassette subfamily B member 6 (Langereis blood group)" +HGNC#ABCB7 "ATP binding cassette subfamily B member 7" +HGNC#ABCC1 "ATP binding cassette subfamily C member 1" +HGNC#ABCC2 "ATP binding cassette subfamily C member 2" +HGNC#ABCC3 "ATP binding cassette subfamily C member 3" +HGNC#ABCC4 "ATP binding cassette subfamily C member 4" +HGNC#ABCC6 "ATP binding cassette subfamily C member 6" +HGNC#ABCC8 "ATP binding cassette subfamily C member 8" +HGNC#ABCC9 "ATP binding cassette subfamily C member 9" +HGNC#ABCD1 "ATP binding cassette subfamily D member 1" +HGNC#ABCD3 "ATP binding cassette subfamily D member 3" +HGNC#ABCE1 "ATP binding cassette subfamily E member 1" +HGNC#ABCF3 "ATP binding cassette subfamily F member 3" +HGNC#ABCG4 "ATP binding cassette subfamily G member 4" +HGNC#ABCG5 "ATP binding cassette subfamily G member 5" +HGNC#ABCG8 "ATP binding cassette subfamily G member 8" +HGNC#ABHD12 "abhydrolase domain containing 12" +HGNC#ABHD5 "abhydrolase domain containing 5" +HGNC#ABL1 "ABL proto-oncogene 1, non-receptor tyrosine kinase" +HGNC#ABL2 "ABL proto-oncogene 2, non-receptor tyrosine kinase" +HGNC#ABRAXAS1 "abraxas 1, BRCA1 A complex subunit" +HGNC#ACAD8 "acyl-CoA dehydrogenase family member 8" +HGNC#ACAD9 "acyl-CoA dehydrogenase family member 9" +HGNC#ACADL "acyl-CoA dehydrogenase long chain" +HGNC#ACADM "acyl-CoA dehydrogenase medium chain" +HGNC#ACADS "acyl-CoA dehydrogenase short chain" +HGNC#ACADSB "acyl-CoA dehydrogenase short/branched chain" +HGNC#ACADVL "acyl-CoA dehydrogenase very long chain" +HGNC#ACAN "aggrecan" +HGNC#ACD "ACD, shelterin complex subunit and telomerase recruitment factor" +HGNC#ACE "angiotensin I converting enzyme" +HGNC#ACHE "acetylcholinesterase (Cartwright blood group)" +HGNC#ACP5 "acid phosphatase 5, tartrate resistant" +HGNC#ACSF3 "acyl-CoA synthetase family member 3" +HGNC#ACSL3 "acyl-CoA synthetase long chain family member 3" +HGNC#ACSL4 "acyl-CoA synthetase long chain family member 4" +HGNC#ACSL5 "acyl-CoA synthetase long chain family member 5" +HGNC#ACSM3 "acyl-CoA synthetase medium chain family member 3" +HGNC#ACTA1 "actin, alpha 1, skeletal muscle" +HGNC#ACTA2 "actin, alpha 2, smooth muscle, aorta" +HGNC#ACTB "actin beta" +HGNC#ACTC1 "actin, alpha, cardiac muscle 1" +HGNC#ACTG1 "actin gamma 1" +HGNC#ACTN2 "actinin alpha 2" +HGNC#ACVR1 "activin A receptor type 1" +HGNC#ACVR1B "activin A receptor type 1B" +HGNC#ACVR2B "activin A receptor type 2B" +HGNC#ACVRL1 "activin A receptor like type 1" +HGNC#ADA "adenosine deaminase" +HGNC#ADA2 "adenosine deaminase 2" +HGNC#ADAM17 "ADAM metallopeptidase domain 17" +HGNC#ADAM9 "ADAM metallopeptidase domain 9" +HGNC#ADAMTS10 "ADAM metallopeptidase with thrombospondin type 1 motif 10" +HGNC#ADAMTS13 "ADAM metallopeptidase with thrombospondin type 1 motif 13" +HGNC#ADAMTS17 "ADAM metallopeptidase with thrombospondin type 1 motif 17" +HGNC#ADAMTS2 "ADAM metallopeptidase with thrombospondin type 1 motif 2" +HGNC#ADAMTS3 "ADAM metallopeptidase with thrombospondin type 1 motif 3" +HGNC#ADAMTSL2 "ADAMTS like 2" +HGNC#ADAMTSL4 "ADAMTS like 4" +HGNC#ADAR "adenosine deaminase, RNA specific" +HGNC#ADAT1 "adenosine deaminase, tRNA specific 1" +HGNC#ADAT3 "adenosine deaminase, tRNA specific 3" +HGNC#ADCY1 "adenylate cyclase 1" +HGNC#ADGRA2 "adhesion G protein-coupled receptor A2" +HGNC#ADGRG1 "adhesion G protein-coupled receptor G1" +HGNC#ADGRV1 "adhesion G protein-coupled receptor V1" +HGNC#ADH1B "alcohol dehydrogenase 1B (class I), beta polypeptide" +HGNC#ADNP "activity dependent neuroprotector homeobox" +HGNC#ADORA2A "adenosine A2a receptor" +HGNC#ADSL "adenylosuccinate lyase" +HGNC#AFF2 "AF4/FMR2 family member 2" +HGNC#AFF3 "AF4/FMR2 family member 3" +HGNC#AFF4 "AF4/FMR2 family member 4" +HGNC#AFG3L2 "AFG3 like matrix AAA peptidase subunit 2" +HGNC#AGBL4 "ATP/GTP binding protein like 4" +HGNC#AGL "amylo-alpha-1, 6-glucosidase, 4-alpha-glucanotransferase" +HGNC#AGPAT2 "1-acylglycerol-3-phosphate O-acyltransferase 2" +HGNC#AGT "angiotensinogen" +HGNC#AGTR1 "angiotensin II receptor type 1" +HGNC#AGTR2 "angiotensin II receptor type 2" +HGNC#AHI1 "Abelson helper integration site 1" +HGNC#AICDA "activation induced cytidine deaminase" +HGNC#AIP "aryl hydrocarbon receptor interacting protein" +HGNC#AIPL1 "aryl hydrocarbon receptor interacting protein like 1" +HGNC#AIRE "autoimmune regulator" +HGNC#AJUBA "ajuba LIM protein" +HGNC#AK1 "adenylate kinase 1" +HGNC#AK2 "adenylate kinase 2" +HGNC#AKAP1 "A-kinase anchoring protein 1" +HGNC#AKAP10 "A-kinase anchoring protein 10" +HGNC#AKAP9 "A-kinase anchoring protein 9" +HGNC#AKR1C3 "aldo-keto reductase family 1 member C3" +HGNC#AKR1D1 "aldo-keto reductase family 1 member D1" +HGNC#AKR7A2 "aldo-keto reductase family 7 member A2" +HGNC#AKT1 "AKT serine/threonine kinase 1" +HGNC#AKT2 "AKT serine/threonine kinase 2" +HGNC#AKT3 "AKT serine/threonine kinase 3" +HGNC#ALDH18A1 "aldehyde dehydrogenase 18 family member A1" +HGNC#ALDH2 "aldehyde dehydrogenase 2 family member" +HGNC#ALDH3A2 "aldehyde dehydrogenase 3 family member A2" +HGNC#ALDH4A1 "aldehyde dehydrogenase 4 family member A1" +HGNC#ALDH5A1 "aldehyde dehydrogenase 5 family member A1" +HGNC#ALDH6A1 "aldehyde dehydrogenase 6 family member A1" +HGNC#ALDH7A1 "aldehyde dehydrogenase 7 family member A1" +HGNC#ALG1 "ALG1, chitobiosyldiphosphodolichol beta-mannosyltransferase" +HGNC#ALG11 "ALG11, alpha-1,2-mannosyltransferase" +HGNC#ALG12 "ALG12, alpha-1,6-mannosyltransferase" +HGNC#ALG13 "ALG13, UDP-N-acetylglucosaminyltransferase subunit" +HGNC#ALG14 "ALG14, UDP-N-acetylglucosaminyltransferase subunit" +HGNC#ALG2 "ALG2, alpha-1,3/1,6-mannosyltransferase" +HGNC#ALG3 "ALG3, alpha-1,3- mannosyltransferase" +HGNC#ALG6 "ALG6, alpha-1,3-glucosyltransferase" +HGNC#ALG8 "ALG8, alpha-1,3-glucosyltransferase" +HGNC#ALG9 "ALG9, alpha-1,2-mannosyltransferase" +HGNC#ALK "ALK receptor tyrosine kinase" +HGNC#ALOX12B "arachidonate 12-lipoxygenase, 12R type" +HGNC#ALOXE3 "arachidonate lipoxygenase 3" +HGNC#ALPL "alkaline phosphatase, biomineralization associated" +HGNC#ALS2 "ALS2, alsin Rho guanine nucleotide exchange factor" +HGNC#ALX1 "ALX homeobox 1" +HGNC#ALX3 "ALX homeobox 3" +HGNC#ALX4 "ALX homeobox 4" +HGNC#AMH "anti-Mullerian hormone" +HGNC#AMHR2 "anti-Mullerian hormone receptor type 2" +HGNC#AMPD1 "adenosine monophosphate deaminase 1" +HGNC#AMPD3 "adenosine monophosphate deaminase 3" +HGNC#ANG "angiogenin" +HGNC#ANK1 "ankyrin 1" +HGNC#ANK2 "ankyrin 2" +HGNC#ANK3 "ankyrin 3" +HGNC#ANKH "ANKH inorganic pyrophosphate transport regulator" +HGNC#ANKRD1 "ankyrin repeat domain 1" +HGNC#ANKRD11 "ankyrin repeat domain 11" +HGNC#ANKRD26 "ankyrin repeat domain 26" +HGNC#ANKRD49 "ankyrin repeat domain 49" +HGNC#ANKS6 "ankyrin repeat and sterile alpha motif domain containing 6" +HGNC#ANO10 "anoctamin 10" +HGNC#ANO5 "anoctamin 5" +HGNC#ANO9 "anoctamin 9" +HGNC#ANOS1 "anosmin 1" +HGNC#AP1S1 "adaptor related protein complex 1 subunit sigma 1" +HGNC#AP1S2 "adaptor related protein complex 1 subunit sigma 2" +HGNC#AP2S1 "adaptor related protein complex 2 subunit sigma 1" +HGNC#AP3B1 "adaptor related protein complex 3 subunit beta 1" +HGNC#AP4B1 "adaptor related protein complex 4 subunit beta 1" +HGNC#AP4E1 "adaptor related protein complex 4 subunit epsilon 1" +HGNC#AP4M1 "adaptor related protein complex 4 subunit mu 1" +HGNC#AP4S1 "adaptor related protein complex 4 subunit sigma 1" +HGNC#APC "APC, WNT signaling pathway regulator" +HGNC#APEX1 "apurinic/apyrimidinic endodeoxyribonuclease 1" +HGNC#APOA1 "apolipoprotein A1" +HGNC#APOB "apolipoprotein B" +HGNC#APOC2 "apolipoprotein C2" +HGNC#APOE "apolipoprotein E" +HGNC#APP "amyloid beta precursor protein" +HGNC#AQP2 "aquaporin 2" +HGNC#AQP7 "aquaporin 7" +HGNC#AR "androgen receptor" +HGNC#ARAF "A-Raf proto-oncogene, serine/threonine kinase" +HGNC#ARAP3 "ArfGAP with RhoGAP domain, ankyrin repeat and PH domain 3" +HGNC#ARFGEF2 "ADP ribosylation factor guanine nucleotide exchange factor 2" +HGNC#ARFRP1 "ADP ribosylation factor related protein 1" +HGNC#ARHGAP20 "Rho GTPase activating protein 20" +HGNC#ARHGAP26 "Rho GTPase activating protein 26" +HGNC#ARHGAP31 "Rho GTPase activating protein 31" +HGNC#ARHGAP35 "Rho GTPase activating protein 35" +HGNC#ARHGEF15 "Rho guanine nucleotide exchange factor 15" +HGNC#ARHGEF25 "Rho guanine nucleotide exchange factor 25" +HGNC#ARHGEF6 "Rac/Cdc42 guanine nucleotide exchange factor 6" +HGNC#ARHGEF9 "Cdc42 guanine nucleotide exchange factor 9" +HGNC#ARID1A "AT-rich interaction domain 1A" +HGNC#ARID1B "AT-rich interaction domain 1B" +HGNC#ARID2 "AT-rich interaction domain 2" +HGNC#ARID5B "AT-rich interaction domain 5B" +HGNC#ARL13B "ADP ribosylation factor like GTPase 13B" +HGNC#ARL6 "ADP ribosylation factor like GTPase 6" +HGNC#ARMC12 "armadillo repeat containing 12" +HGNC#ARSA "arylsulfatase A" +HGNC#ARSB "arylsulfatase B" +HGNC#ARSE "arylsulfatase E" +HGNC#ARX "aristaless related homeobox" +HGNC#AS3MT "arsenite methyltransferase" +HGNC#ASPRV1 "aspartic peptidase retroviral like 1" +HGNC#ASPSCR1 "ASPSCR1, UBX domain containing tether for SLC2A4" +HGNC#ATCAY "ATCAY, caytaxin" +HGNC#ATG13 "autophagy related 13" +HGNC#ATG16L1 "autophagy related 16 like 1" +HGNC#ATIC "5-aminoimidazole-4-carboxamide ribonucleotide formyltransferase/IMP cyclohydrolase" +HGNC#ATM "ATM serine/threonine kinase" +HGNC#ATP10D "ATPase phospholipid transporting 10D (putative)" +HGNC#ATP11B "ATPase phospholipid transporting 11B (putative)" +HGNC#ATP13A2 "ATPase cation transporting 13A2" +HGNC#ATP1A1 "ATPase Na+/K+ transporting subunit alpha 1" +HGNC#ATP1A2 "ATPase Na+/K+ transporting subunit alpha 2" +HGNC#ATP1A3 "ATPase Na+/K+ transporting subunit alpha 3" +HGNC#ATP2A1 "ATPase sarcoplasmic/endoplasmic reticulum Ca2+ transporting 1" +HGNC#ATP2A2 "ATPase sarcoplasmic/endoplasmic reticulum Ca2+ transporting 2" +HGNC#ATP2B4 "ATPase plasma membrane Ca2+ transporting 4" +HGNC#ATP2C1 "ATPase secretory pathway Ca2+ transporting 1" +HGNC#ATP6V0A1 "ATPase H+ transporting V0 subunit a1" +HGNC#ATP6V0A2 "ATPase H+ transporting V0 subunit a2" +HGNC#ATP6V0A4 "ATPase H+ transporting V0 subunit a4" +HGNC#ATP6V1B1 "ATPase H+ transporting V1 subunit B1" +HGNC#ATP7A "ATPase copper transporting alpha" +HGNC#ATP7B "ATPase copper transporting beta" +HGNC#ATP8B1 "ATPase phospholipid transporting 8B1" +HGNC#ATPAF2 "ATP synthase mitochondrial F1 complex assembly factor 2" +HGNC#ATR "ATR serine/threonine kinase" +HGNC#ATRX "ATRX, chromatin remodeler" +HGNC#ATXN7 "ataxin 7" +HGNC#AURKA "aurora kinase A" +HGNC#AURKB "aurora kinase B" +HGNC#AVP "arginine vasopressin" +HGNC#AVPR1A "arginine vasopressin receptor 1A" +HGNC#AVPR2 "arginine vasopressin receptor 2" +HGNC#AXIN1 "axin 1" +HGNC#AXL "AXL receptor tyrosine kinase" +HGNC#B2M "beta-2-microglobulin" +HGNC#B3GALT6 "beta-1,3-galactosyltransferase 6" +HGNC#B3GAT3 "beta-1,3-glucuronyltransferase 3" +HGNC#B3GLCT "beta 3-glucosyltransferase" +HGNC#B4GALT1 "beta-1,4-galactosyltransferase 1" +HGNC#B4GALT7 "beta-1,4-galactosyltransferase 7" +HGNC#B9D1 "B9 domain containing 1" +HGNC#B9D2 "B9 domain containing 2" +HGNC#BAG3 "BCL2 associated athanogene 3" +HGNC#BAP1 "BRCA1 associated protein 1" +HGNC#BARD1 "BRCA1 associated RING domain 1" +HGNC#BAX "BCL2 associated X, apoptosis regulator" +HGNC#BBS1 "Bardet-Biedl syndrome 1" +HGNC#BBS10 "Bardet-Biedl syndrome 10" +HGNC#BBS12 "Bardet-Biedl syndrome 12" +HGNC#BBS2 "Bardet-Biedl syndrome 2" +HGNC#BBS4 "Bardet-Biedl syndrome 4" +HGNC#BBS5 "Bardet-Biedl syndrome 5" +HGNC#BBS7 "Bardet-Biedl syndrome 7" +HGNC#BBS9 "Bardet-Biedl syndrome 9" +HGNC#BCAT2 "branched chain amino acid transaminase 2" +HGNC#BCL10 "BCL10, immune signaling adaptor" +HGNC#BCL11B "BCL11B, BAF complex component" +HGNC#BCL2 "BCL2, apoptosis regulator" +HGNC#BCL2L1 "BCL2 like 1" +HGNC#BCL2L11 "BCL2 like 11" +HGNC#BCL2L2 "BCL2 like 2" +HGNC#BCL6 "BCL6, transcription repressor" +HGNC#BCL7A "BCL7A, BAF complex component" +HGNC#BCL9 "BCL9, transcription coactivator" +HGNC#BCLAF1 "BCL2 associated transcription factor 1" +HGNC#BCOR "BCL6 corepressor" +HGNC#BCORL1 "BCL6 corepressor like 1" +HGNC#BCR "BCR, RhoGEF and GTPase activating protein" +HGNC#BCS1L "BCS1 homolog, ubiquinol-cytochrome c reductase complex chaperone" +HGNC#BDNF "brain derived neurotrophic factor" +HGNC#BEST1 "bestrophin 1" +HGNC#BFSP1 "beaded filament structural protein 1" +HGNC#BFSP2 "beaded filament structural protein 2" +HGNC#BHLHA9 "basic helix-loop-helix family member a9" +HGNC#BIN1 "bridging integrator 1" +HGNC#BIRC2 "baculoviral IAP repeat containing 2" +HGNC#BIRC3 "baculoviral IAP repeat containing 3" +HGNC#BLK "BLK proto-oncogene, Src family tyrosine kinase" +HGNC#BLM "BLM RecQ like helicase" +HGNC#BLOC1S3 "biogenesis of lysosomal organelles complex 1 subunit 3" +HGNC#BMP1 "bone morphogenetic protein 1" +HGNC#BMP15 "bone morphogenetic protein 15" +HGNC#BMP2 "bone morphogenetic protein 2" +HGNC#BMP4 "bone morphogenetic protein 4" +HGNC#BMPER "BMP binding endothelial regulator" +HGNC#BMPR1A "bone morphogenetic protein receptor type 1A" +HGNC#BMPR1B "bone morphogenetic protein receptor type 1B" +HGNC#BMPR2 "bone morphogenetic protein receptor type 2" +HGNC#BRAF "B-Raf proto-oncogene, serine/threonine kinase" +HGNC#BRCA1 "BRCA1, DNA repair associated" +HGNC#BRCA2 "BRCA2, DNA repair associated" +HGNC#BRD2 "bromodomain containing 2" +HGNC#BRD3 "bromodomain containing 3" +HGNC#BRD4 "bromodomain containing 4" +HGNC#BRD7 "bromodomain containing 7" +HGNC#BRIP1 "BRCA1 interacting protein C-terminal helicase 1" +HGNC#BRWD3 "bromodomain and WD repeat domain containing 3" +HGNC#BSND "barttin CLCNK type accessory beta subunit" +HGNC#BTBD16 "BTB domain containing 16" +HGNC#BTG1 "BTG anti-proliferation factor 1" +HGNC#BTK "Bruton tyrosine kinase" +HGNC#BTLA "B and T lymphocyte associated" +HGNC#C1QTNF5 "C1q and TNF related 5" +HGNC#C2 "complement C2" +HGNC#C3 "complement C3" +HGNC#C3AR1 "complement C3a receptor 1" +HGNC#C8orf37 "chromosome 8 open reading frame 37" +HGNC#C9orf72 "chromosome 9 open reading frame 72" +HGNC#CA2 "carbonic anhydrase 2" +HGNC#CA4 "carbonic anhydrase 4" +HGNC#CA8 "carbonic anhydrase 8" +HGNC#CABP2 "calcium binding protein 2" +HGNC#CABP4 "calcium binding protein 4" +HGNC#CACNA1A "calcium voltage-gated channel subunit alpha1 A" +HGNC#CACNA1C "calcium voltage-gated channel subunit alpha1 C" +HGNC#CACNA1D "calcium voltage-gated channel subunit alpha1 D" +HGNC#CACNA1F "calcium voltage-gated channel subunit alpha1 F" +HGNC#CACNA1H "calcium voltage-gated channel subunit alpha1 H" +HGNC#CACNA1S "calcium voltage-gated channel subunit alpha1 S" +HGNC#CACNA2D1 "calcium voltage-gated channel auxiliary subunit alpha2delta 1" +HGNC#CACNA2D2 "calcium voltage-gated channel auxiliary subunit alpha2delta 2" +HGNC#CACNA2D4 "calcium voltage-gated channel auxiliary subunit alpha2delta 4" +HGNC#CACNB2 "calcium voltage-gated channel auxiliary subunit beta 2" +HGNC#CACNB4 "calcium voltage-gated channel auxiliary subunit beta 4" +HGNC#CACNG2 "calcium voltage-gated channel auxiliary subunit gamma 2" +HGNC#CADPS "calcium dependent secretion activator" +HGNC#CALM1 "calmodulin 1" +HGNC#CAND1 "cullin associated and neddylation dissociated 1" +HGNC#CAPN3 "calpain 3" +HGNC#CARD11 "caspase recruitment domain family member 11" +HGNC#CARD14 "caspase recruitment domain family member 14" +HGNC#CASK "calcium/calmodulin dependent serine protein kinase" +HGNC#CASP10 "caspase 10" +HGNC#CASP8 "caspase 8" +HGNC#CASQ2 "calsequestrin 2" +HGNC#CASR "calcium sensing receptor" +HGNC#CATSPER1 "cation channel sperm associated 1" +HGNC#CBL "Cbl proto-oncogene" +HGNC#CBLB "Cbl proto-oncogene B" +HGNC#CBLC "Cbl proto-oncogene C" +HGNC#CBR3 "carbonyl reductase 3" +HGNC#CBX2 "chromobox 2" +HGNC#CC2D1A "coiled-coil and C2 domain containing 1A" +HGNC#CC2D2A "coiled-coil and C2 domain containing 2A" +HGNC#CCDC22 "coiled-coil domain containing 22" +HGNC#CCDC50 "coiled-coil domain containing 50" +HGNC#CCDC8 "coiled-coil domain containing 8" +HGNC#CCL2 "C-C motif chemokine ligand 2" +HGNC#CCNB3 "cyclin B3" +HGNC#CCND1 "cyclin D1" +HGNC#CCND2 "cyclin D2" +HGNC#CCND3 "cyclin D3" +HGNC#CCNE1 "cyclin E1" +HGNC#CCNQ "cyclin Q" +HGNC#CCR2 "C-C motif chemokine receptor 2" +HGNC#CCT5 "chaperonin containing TCP1 subunit 5" +HGNC#CD163 "CD163 molecule" +HGNC#CD19 "CD19 molecule" +HGNC#CD2 "CD2 molecule" +HGNC#CD22 "CD22 molecule" +HGNC#CD244 "CD244 molecule" +HGNC#CD247 "CD247 molecule" +HGNC#CD27 "CD27 molecule" +HGNC#CD274 "CD274 molecule" +HGNC#CD28 "CD28 molecule" +HGNC#CD36 "CD36 molecule" +HGNC#CD38 "CD38 molecule" +HGNC#CD3D "CD3d molecule" +HGNC#CD3E "CD3e molecule" +HGNC#CD3G "CD3g molecule" +HGNC#CD4 "CD4 molecule" +HGNC#CD40 "CD40 molecule" +HGNC#CD40LG "CD40 ligand" +HGNC#CD44 "CD44 molecule (Indian blood group)" +HGNC#CD46 "CD46 molecule" +HGNC#CD68 "CD68 molecule" +HGNC#CD70 "CD70 molecule" +HGNC#CD79A "CD79a molecule" +HGNC#CD79B "CD79b molecule" +HGNC#CD80 "CD80 molecule" +HGNC#CD81 "CD81 molecule" +HGNC#CD86 "CD86 molecule" +HGNC#CD8A "CD8a molecule" +HGNC#CD96 "CD96 molecule" +HGNC#CDC42BPB "CDC42 binding protein kinase beta" +HGNC#CDC73 "cell division cycle 73" +HGNC#CDH1 "cadherin 1" +HGNC#CDH15 "cadherin 15" +HGNC#CDH23 "cadherin related 23" +HGNC#CDH3 "cadherin 3" +HGNC#CDH4 "cadherin 4" +HGNC#CDHR1 "cadherin related family member 1" +HGNC#CDK12 "cyclin dependent kinase 12" +HGNC#CDK16 "cyclin dependent kinase 16" +HGNC#CDK4 "cyclin dependent kinase 4" +HGNC#CDK6 "cyclin dependent kinase 6" +HGNC#CDK8 "cyclin dependent kinase 8" +HGNC#CDKL5 "cyclin dependent kinase like 5" +HGNC#CDKN2B-AS1 "CDKN2B antisense RNA 1" +HGNC#CDKN2C "cyclin dependent kinase inhibitor 2C" +HGNC#CDON "cell adhesion associated, oncogene regulated" +HGNC#CEACAM16 "carcinoembryonic antigen related cell adhesion molecule 16" +HGNC#CEBPA "CCAAT enhancer binding protein alpha" +HGNC#CEBPE "CCAAT enhancer binding protein epsilon" +HGNC#CELSR1 "cadherin EGF LAG seven-pass G-type receptor 1" +HGNC#CEP290 "centrosomal protein 290" +HGNC#CERS3 "ceramide synthase 3" +HGNC#CETP "cholesteryl ester transfer protein" +HGNC#CFAP43 "cilia and flagella associated protein 43" +HGNC#CFB "complement factor B" +HGNC#CFH "complement factor H" +HGNC#CFHR5 "complement factor H related 5" +HGNC#CFI "complement factor I" +HGNC#CFTR "cystic fibrosis transmembrane conductance regulator" +HGNC#CHAF1B "chromatin assembly factor 1 subunit B" +HGNC#CHD2 "chromodomain helicase DNA binding protein 2" +HGNC#CHD4 "chromodomain helicase DNA binding protein 4" +HGNC#CHD7 "chromodomain helicase DNA binding protein 7" +HGNC#CHGB "chromogranin B" +HGNC#CHIT1 "chitinase 1" +HGNC#CHMP1A "charged multivesicular body protein 1A" +HGNC#CHMP2B "charged multivesicular body protein 2B" +HGNC#CHMP4A "charged multivesicular body protein 4A" +HGNC#CHMP4B "charged multivesicular body protein 4B" +HGNC#CHN1 "chimerin 1" +HGNC#CHRNA1 "cholinergic receptor nicotinic alpha 1 subunit" +HGNC#CHRNA2 "cholinergic receptor nicotinic alpha 2 subunit" +HGNC#CHRNA3 "cholinergic receptor nicotinic alpha 3 subunit" +HGNC#CHRNA4 "cholinergic receptor nicotinic alpha 4 subunit" +HGNC#CHRNA5 "cholinergic receptor nicotinic alpha 5 subunit" +HGNC#CHRNA7 "cholinergic receptor nicotinic alpha 7 subunit" +HGNC#CHRNB1 "cholinergic receptor nicotinic beta 1 subunit" +HGNC#CHRNB2 "cholinergic receptor nicotinic beta 2 subunit" +HGNC#CHRND "cholinergic receptor nicotinic delta subunit" +HGNC#CHRNE "cholinergic receptor nicotinic epsilon subunit" +HGNC#CHRNG "cholinergic receptor nicotinic gamma subunit" +HGNC#CHST14 "carbohydrate sulfotransferase 14" +HGNC#CHST3 "carbohydrate sulfotransferase 3" +HGNC#CHST6 "carbohydrate sulfotransferase 6" +HGNC#CHSY1 "chondroitin sulfate synthase 1" +HGNC#CIAO1 "cytosolic iron-sulfur assembly component 1" +HGNC#CIB2 "calcium and integrin binding family member 2" +HGNC#CIITA "class II major histocompatibility complex transactivator" +HGNC#CISD2 "CDGSH iron sulfur domain 2" +HGNC#CKAP5 "cytoskeleton associated protein 5" +HGNC#CLCN1 "chloride voltage-gated channel 1" +HGNC#CLCN2 "chloride voltage-gated channel 2" +HGNC#CLCN4 "chloride voltage-gated channel 4" +HGNC#CLCN5 "chloride voltage-gated channel 5" +HGNC#CLCN7 "chloride voltage-gated channel 7" +HGNC#CLCNKA "chloride voltage-gated channel Ka" +HGNC#CLCNKB "chloride voltage-gated channel Kb" +HGNC#CLDN14 "claudin 14" +HGNC#CLDN16 "claudin 16" +HGNC#CLDN19 "claudin 19" +HGNC#CLIC2 "chloride intracellular channel 2" +HGNC#CLIC5 "chloride intracellular channel 5" +HGNC#CLN8 "CLN8, transmembrane ER and ERGIC protein" +HGNC#CLPB "ClpB homolog, mitochondrial AAA ATPase chaperonin" +HGNC#CLPP "caseinolytic mitochondrial matrix peptidase proteolytic subunit" +HGNC#CLRN1 "clarin 1" +HGNC#CNGA1 "cyclic nucleotide gated channel alpha 1" +HGNC#CNGA3 "cyclic nucleotide gated channel alpha 3" +HGNC#CNGB1 "cyclic nucleotide gated channel beta 1" +HGNC#CNGB3 "cyclic nucleotide gated channel beta 3" +HGNC#CNKSR2 "connector enhancer of kinase suppressor of Ras 2" +HGNC#CNR1 "cannabinoid receptor 1" +HGNC#CNTFR "ciliary neurotrophic factor receptor" +HGNC#CNTN2 "contactin 2" +HGNC#COA5 "cytochrome c oxidase assembly factor 5" +HGNC#COCH "cochlin" +HGNC#COG1 "component of oligomeric golgi complex 1" +HGNC#COG4 "component of oligomeric golgi complex 4" +HGNC#COG5 "component of oligomeric golgi complex 5" +HGNC#COG6 "component of oligomeric golgi complex 6" +HGNC#COG7 "component of oligomeric golgi complex 7" +HGNC#COG8 "component of oligomeric golgi complex 8" +HGNC#COL10A1 "collagen type X alpha 1 chain" +HGNC#COL11A1 "collagen type XI alpha 1 chain" +HGNC#COL11A2 "collagen type XI alpha 2 chain" +HGNC#COL17A1 "collagen type XVII alpha 1 chain" +HGNC#COL18A1 "collagen type XVIII alpha 1 chain" +HGNC#COL1A1 "collagen type I alpha 1 chain" +HGNC#COL1A2 "collagen type I alpha 2 chain" +HGNC#COL27A1 "collagen type XXVII alpha 1 chain" +HGNC#COL2A1 "collagen type II alpha 1 chain" +HGNC#COL3A1 "collagen type III alpha 1 chain" +HGNC#COL4A1 "collagen type IV alpha 1 chain" +HGNC#COL4A2 "collagen type IV alpha 2 chain" +HGNC#COL4A3 "collagen type IV alpha 3 chain" +HGNC#COL4A4 "collagen type IV alpha 4 chain" +HGNC#COL4A5 "collagen type IV alpha 5 chain" +HGNC#COL4A6 "collagen type IV alpha 6 chain" +HGNC#COL5A1 "collagen type V alpha 1 chain" +HGNC#COL5A2 "collagen type V alpha 2 chain" +HGNC#COL6A1 "collagen type VI alpha 1 chain" +HGNC#COL6A2 "collagen type VI alpha 2 chain" +HGNC#COL6A3 "collagen type VI alpha 3 chain" +HGNC#COL7A1 "collagen type VII alpha 1 chain" +HGNC#COL9A1 "collagen type IX alpha 1 chain" +HGNC#COL9A2 "collagen type IX alpha 2 chain" +HGNC#COL9A3 "collagen type IX alpha 3 chain" +HGNC#COMT "catechol-O-methyltransferase" +HGNC#COPA "coatomer protein complex subunit alpha" +HGNC#COPS6 "COP9 signalosome subunit 6" +HGNC#COQ5 "coenzyme Q5, methyltransferase" +HGNC#CORIN "corin, serine peptidase" +HGNC#CORO1A "coronin 1A" +HGNC#COX10 "cytochrome c oxidase assembly factor heme A:farnesyltransferase COX10" +HGNC#COX14 "cytochrome c oxidase assembly factor COX14" +HGNC#COX15 "cytochrome c oxidase assembly homolog COX15" +HGNC#COX4I1 "cytochrome c oxidase subunit 4I1" +HGNC#COX4I2 "cytochrome c oxidase subunit 4I2" +HGNC#COX6B1 "cytochrome c oxidase subunit 6B1" +HGNC#COX7A2 "cytochrome c oxidase subunit 7A2" +HGNC#COX7B "cytochrome c oxidase subunit 7B" +HGNC#CPA6 "carboxypeptidase A6" +HGNC#CR2 "complement C3d receptor 2" +HGNC#CRADD "CASP2 and RIPK1 domain containing adaptor with death domain" +HGNC#CRB1 "crumbs cell polarity complex component 1" +HGNC#CREB1 "cAMP responsive element binding protein 1" +HGNC#CREB3L1 "cAMP responsive element binding protein 3 like 1" +HGNC#CREB3L2 "cAMP responsive element binding protein 3 like 2" +HGNC#CREBBP "CREB binding protein" +HGNC#CRH "corticotropin releasing hormone" +HGNC#CRK "CRK proto-oncogene, adaptor protein" +HGNC#CRKL "CRK like proto-oncogene, adaptor protein" +HGNC#CRLF2 "cytokine receptor like factor 2" +HGNC#CRX "cone-rod homeobox" +HGNC#CRYAA "crystallin alpha A" +HGNC#CRYAB "crystallin alpha B" +HGNC#CRYBA1 "crystallin beta A1" +HGNC#CRYBA4 "crystallin beta A4" +HGNC#CRYBB1 "crystallin beta B1" +HGNC#CRYBB2 "crystallin beta B2" +HGNC#CRYBB3 "crystallin beta B3" +HGNC#CRYGB "crystallin gamma B" +HGNC#CRYGC "crystallin gamma C" +HGNC#CRYGD "crystallin gamma D" +HGNC#CRYGS "crystallin gamma S" +HGNC#CSF1R "colony stimulating factor 1 receptor" +HGNC#CSF3R "colony stimulating factor 3 receptor" +HGNC#CSMD2 "CUB and Sushi multiple domains 2" +HGNC#CSRP3 "cysteine and glycine rich protein 3" +HGNC#CST3 "cystatin C" +HGNC#CSTB "cystatin B" +HGNC#CTC1 "CST telomere replication complex component 1" +HGNC#CTCF "CCCTC-binding factor" +HGNC#CTDP1 "CTD phosphatase subunit 1" +HGNC#CTF1 "cardiotrophin 1" +HGNC#CTLA4 "cytotoxic T-lymphocyte associated protein 4" +HGNC#CTNNA1 "catenin alpha 1" +HGNC#CTNNB1 "catenin beta 1" +HGNC#CTNS "cystinosin, lysosomal cystine transporter" +HGNC#CTPS1 "CTP synthase 1" +HGNC#CTSA "cathepsin A" +HGNC#CTSC "cathepsin C" +HGNC#CTSD "cathepsin D" +HGNC#CTSE "cathepsin E" +HGNC#CTSF "cathepsin F" +HGNC#CTSK "cathepsin K" +HGNC#CUL3 "cullin 3" +HGNC#CUL4B "cullin 4B" +HGNC#CUL7 "cullin 7" +HGNC#CUX1 "cut like homeobox 1" +HGNC#CX3CR1 "C-X3-C motif chemokine receptor 1" +HGNC#CXCL10 "C-X-C motif chemokine ligand 10" +HGNC#CXCR4 "C-X-C motif chemokine receptor 4" +HGNC#CXCR6 "C-X-C motif chemokine receptor 6" +HGNC#CYLD "CYLD lysine 63 deubiquitinase" +HGNC#CYP11A1 "cytochrome P450 family 11 subfamily A member 1" +HGNC#CYP11B1 "cytochrome P450 family 11 subfamily B member 1" +HGNC#CYP11B2 "cytochrome P450 family 11 subfamily B member 2" +HGNC#CYP17A1 "cytochrome P450 family 17 subfamily A member 1" +HGNC#CYP19A1 "cytochrome P450 family 19 subfamily A member 1" +HGNC#CYP1B1 "cytochrome P450 family 1 subfamily B member 1" +HGNC#CYP24A1 "cytochrome P450 family 24 subfamily A member 1" +HGNC#CYP27A1 "cytochrome P450 family 27 subfamily A member 1" +HGNC#CYP27B1 "cytochrome P450 family 27 subfamily B member 1" +HGNC#CYP2A6 "cytochrome P450 family 2 subfamily A member 6" +HGNC#CYP2B6 "cytochrome P450 family 2 subfamily B member 6" +HGNC#CYP2C19 "cytochrome P450 family 2 subfamily C member 19" +HGNC#CYP2C8 "cytochrome P450 family 2 subfamily C member 8" +HGNC#CYP2C9 "cytochrome P450 family 2 subfamily C member 9" +HGNC#CYP2D6 "cytochrome P450 family 2 subfamily D member 6" +HGNC#CYP2R1 "cytochrome P450 family 2 subfamily R member 1" +HGNC#CYP2U1 "cytochrome P450 family 2 subfamily U member 1" +HGNC#CYP3A5 "cytochrome P450 family 3 subfamily A member 5" +HGNC#CYP4V2 "cytochrome P450 family 4 subfamily V member 2" +HGNC#CYP7B1 "cytochrome P450 family 7 subfamily B member 1" +HGNC#CYSLTR1 "cysteinyl leukotriene receptor 1" +HGNC#DARS2 "aspartyl-tRNA synthetase 2, mitochondrial" +HGNC#DCAF17 "DDB1 and CUL4 associated factor 17" +HGNC#DCC "DCC netrin 1 receptor" +HGNC#DCDC2 "doublecortin domain containing 2" +HGNC#DCHS2 "dachsous cadherin-related 2" +HGNC#DCN "decorin" +HGNC#DCTN1 "dynactin subunit 1" +HGNC#DCTN5 "dynactin subunit 5" +HGNC#DCX "doublecortin" +HGNC#DDB2 "damage specific DNA binding protein 2" +HGNC#DDHD2 "DDHD domain containing 2" +HGNC#DDOST "dolichyl-diphosphooligosaccharide--protein glycosyltransferase non-catalytic subunit" +HGNC#DDR2 "discoidin domain receptor tyrosine kinase 2" +HGNC#DDX3X "DEAD-box helicase 3 X-linked" +HGNC#DDX41 "DEAD-box helicase 41" +HGNC#DDX58 "DExD/H-box helicase 58" +HGNC#DDX59 "DEAD-box helicase 59" +HGNC#DEAF1 "DEAF1 transcription factor" +HGNC#DECR1 "2,4-dienoyl-CoA reductase 1" +HGNC#DEPDC5 "DEP domain containing 5" +HGNC#DES "desmin" +HGNC#DHH "desert hedgehog signaling molecule" +HGNC#DHX29 "DExH-box helicase 29" +HGNC#DIABLO "diablo IAP-binding mitochondrial protein" +HGNC#DIAPH1 "diaphanous related formin 1" +HGNC#DICER1 "dicer 1, ribonuclease III" +HGNC#DIS3 "DIS3 homolog, exosome endoribonuclease and 3'-5' exoribonuclease" +HGNC#DIS3L "DIS3 like exosome 3'-5' exoribonuclease" +HGNC#DKC1 "dyskerin pseudouridine synthase 1" +HGNC#DLAT "dihydrolipoamide S-acetyltransferase" +HGNC#DLD "dihydrolipoamide dehydrogenase" +HGNC#DLG3 "discs large MAGUK scaffold protein 3" +HGNC#DLX3 "distal-less homeobox 3" +HGNC#DMD "dystrophin" +HGNC#DMP1 "dentin matrix acidic phosphoprotein 1" +HGNC#DMPK "DM1 protein kinase" +HGNC#DNAAF1 "dynein axonemal assembly factor 1" +HGNC#DNAAF2 "dynein axonemal assembly factor 2" +HGNC#DNAAF3 "dynein axonemal assembly factor 3" +HGNC#DNAH1 "dynein axonemal heavy chain 1" +HGNC#DNAH11 "dynein axonemal heavy chain 11" +HGNC#DNAH3 "dynein axonemal heavy chain 3" +HGNC#DNAH5 "dynein axonemal heavy chain 5" +HGNC#DNAH8 "dynein axonemal heavy chain 8" +HGNC#DNAH9 "dynein axonemal heavy chain 9" +HGNC#DNAI1 "dynein axonemal intermediate chain 1" +HGNC#DNAI2 "dynein axonemal intermediate chain 2" +HGNC#DNAJB6 "DnaJ heat shock protein family (Hsp40) member B6" +HGNC#DNAJC19 "DnaJ heat shock protein family (Hsp40) member C19" +HGNC#DNAJC5 "DnaJ heat shock protein family (Hsp40) member C5" +HGNC#DNAJC6 "DnaJ heat shock protein family (Hsp40) member C6" +HGNC#DNAL1 "dynein axonemal light chain 1" +HGNC#DNM1 "dynamin 1" +HGNC#DNM2 "dynamin 2" +HGNC#DNMT1 "DNA methyltransferase 1" +HGNC#DNMT3A "DNA methyltransferase 3 alpha" +HGNC#DNMT3B "DNA methyltransferase 3 beta" +HGNC#DOCK2 "dedicator of cytokinesis 2" +HGNC#DOCK4 "dedicator of cytokinesis 4" +HGNC#DOCK6 "dedicator of cytokinesis 6" +HGNC#DOCK7 "dedicator of cytokinesis 7" +HGNC#DOCK8 "dedicator of cytokinesis 8" +HGNC#DOT1L "DOT1 like histone lysine methyltransferase" +HGNC#DPH1 "diphthamide biosynthesis 1" +HGNC#DPH7 "diphthamide biosynthesis 7" +HGNC#DPM1 "dolichyl-phosphate mannosyltransferase subunit 1, catalytic" +HGNC#DPP10 "dipeptidyl peptidase like 10" +HGNC#DPP6 "dipeptidyl peptidase like 6" +HGNC#DRD2 "dopamine receptor D2" +HGNC#DRD3 "dopamine receptor D3" +HGNC#DSC2 "desmocollin 2" +HGNC#DSCAML1 "DS cell adhesion molecule like 1" +HGNC#DSG2 "desmoglein 2" +HGNC#DSG4 "desmoglein 4" +HGNC#DSP "desmoplakin" +HGNC#DSPP "dentin sialophosphoprotein" +HGNC#DST "dystonin" +HGNC#DTNA "dystrobrevin alpha" +HGNC#DTNBP1 "dystrobrevin binding protein 1" +HGNC#DUOX2 "dual oxidase 2" +HGNC#DUSP22 "dual specificity phosphatase 22" +HGNC#DYM "dymeclin" +HGNC#DYNC1H1 "dynein cytoplasmic 1 heavy chain 1" +HGNC#DYNC2H1 "dynein cytoplasmic 2 heavy chain 1" +HGNC#DYSF "dysferlin" +HGNC#EARS2 "glutamyl-tRNA synthetase 2, mitochondrial" +HGNC#EBF1 "EBF transcription factor 1" +HGNC#ECSIT "ECSIT signalling integrator" +HGNC#ECT2L "epithelial cell transforming 2 like" +HGNC#EDA "ectodysplasin A" +HGNC#EDAR "ectodysplasin A receptor" +HGNC#EDN3 "endothelin 3" +HGNC#EDNRB "endothelin receptor type B" +HGNC#EED "embryonic ectoderm development" +HGNC#EFCAB6 "EF-hand calcium binding domain 6" +HGNC#EFEMP1 "EGF containing fibulin extracellular matrix protein 1" +HGNC#EFHC1 "EF-hand domain containing 1" +HGNC#EFHC2 "EF-hand domain containing 2" +HGNC#EFNB1 "ephrin B1" +HGNC#EFTUD2 "elongation factor Tu GTP binding domain containing 2" +HGNC#EGFR "epidermal growth factor receptor" +HGNC#EGLN1 "egl-9 family hypoxia inducible factor 1" +HGNC#EGR2 "early growth response 2" +HGNC#EHBP1 "EH domain binding protein 1" +HGNC#EHMT1 "euchromatic histone lysine methyltransferase 1" +HGNC#EIF4A2 "eukaryotic translation initiation factor 4A2" +HGNC#EIF4G1 "eukaryotic translation initiation factor 4 gamma 1" +HGNC#ELAC2 "elaC ribonuclease Z 2" +HGNC#ELANE "elastase, neutrophil expressed" +HGNC#ELF3 "E74 like ETS transcription factor 3" +HGNC#ELMOD3 "ELMO domain containing 3" +HGNC#ELOA2 "elongin A2" +HGNC#ELP4 "elongator acetyltransferase complex subunit 4" +HGNC#EMD "emerin" +HGNC#EMSY "EMSY, BRCA2 interacting transcriptional repressor" +HGNC#EMX2 "empty spiracles homeobox 2" +HGNC#ENG "endoglin" +HGNC#ENO1 "enolase 1" +HGNC#ENO3 "enolase 3" +HGNC#ENOX1 "ecto-NOX disulfide-thiol exchanger 1" +HGNC#EOGT "EGF domain specific O-linked N-acetylglucosamine transferase" +HGNC#EOMES "eomesodermin" +HGNC#EP300 "E1A binding protein p300" +HGNC#EPAS1 "endothelial PAS domain protein 1" +HGNC#EPB41L1 "erythrocyte membrane protein band 4.1 like 1" +HGNC#EPB42 "erythrocyte membrane protein band 4.2" +HGNC#EPCAM "epithelial cell adhesion molecule" +HGNC#EPHA2 "EPH receptor A2" +HGNC#EPHA3 "EPH receptor A3" +HGNC#EPHA5 "EPH receptor A5" +HGNC#EPHA7 "EPH receptor A7" +HGNC#EPHB1 "EPH receptor B1" +HGNC#EPHB2 "EPH receptor B2" +HGNC#EPHB6 "EPH receptor B6" +HGNC#EPM2A "EPM2A, laforin glucan phosphatase" +HGNC#EPOR "erythropoietin receptor" +HGNC#ERAP2 "endoplasmic reticulum aminopeptidase 2" +HGNC#ERBB2 "erb-b2 receptor tyrosine kinase 2" +HGNC#ERBB3 "erb-b2 receptor tyrosine kinase 3" +HGNC#ERBB4 "erb-b2 receptor tyrosine kinase 4" +HGNC#ERCC1 "ERCC excision repair 1, endonuclease non-catalytic subunit" +HGNC#ERCC2 "ERCC excision repair 2, TFIIH core complex helicase subunit" +HGNC#ERCC3 "ERCC excision repair 3, TFIIH core complex helicase subunit" +HGNC#ERCC4 "ERCC excision repair 4, endonuclease catalytic subunit" +HGNC#ERCC5 "ERCC excision repair 5, endonuclease" +HGNC#ERCC6 "ERCC excision repair 6, chromatin remodeling factor" +HGNC#ERCC8 "ERCC excision repair 8, CSA ubiquitin ligase complex subunit" +HGNC#ERF "ETS2 repressor factor" +HGNC#ERG "ETS transcription factor ERG" +HGNC#ESR1 "estrogen receptor 1" +HGNC#ESR2 "estrogen receptor 2" +HGNC#ESRRA "estrogen related receptor alpha" +HGNC#ESRRB "estrogen related receptor beta" +HGNC#ETS1 "ETS proto-oncogene 1, transcription factor" +HGNC#ETS2 "ETS proto-oncogene 2, transcription factor" +HGNC#ETV1 "ETS variant 1" +HGNC#ETV4 "ETS variant 4" +HGNC#ETV5 "ETS variant 5" +HGNC#ETV6 "ETS variant 6" +HGNC#EWSR1 "EWS RNA binding protein 1" +HGNC#EXO1 "exonuclease 1" +HGNC#EXOC2 "exocyst complex component 2" +HGNC#EXOSC3 "exosome component 3" +HGNC#EXT1 "exostosin glycosyltransferase 1" +HGNC#EXT2 "exostosin glycosyltransferase 2" +HGNC#EYA1 "EYA transcriptional coactivator and phosphatase 1" +HGNC#EYA4 "EYA transcriptional coactivator and phosphatase 4" +HGNC#EZH2 "enhancer of zeste 2 polycomb repressive complex 2 subunit" +HGNC#F10 "coagulation factor X" +HGNC#F13A1 "coagulation factor XIII A chain" +HGNC#F13B "coagulation factor XIII B chain" +HGNC#F2 "coagulation factor II, thrombin" +HGNC#F7 "coagulation factor VII" +HGNC#F9 "coagulation factor IX" +HGNC#FA2H "fatty acid 2-hydroxylase" +HGNC#FAM126A "family with sequence similarity 126 member A" +HGNC#FAM20A "FAM20A, golgi associated secretory pathway pseudokinase" +HGNC#FAM20C "FAM20C, golgi associated secretory pathway kinase" +HGNC#FANCA "FA complementation group A" +HGNC#FANCB "FA complementation group B" +HGNC#FANCC "FA complementation group C" +HGNC#FANCD2 "FA complementation group D2" +HGNC#FANCE "FA complementation group E" +HGNC#FANCF "FA complementation group F" +HGNC#FANCG "FA complementation group G" +HGNC#FANCI "FA complementation group I" +HGNC#FANCL "FA complementation group L" +HGNC#FANCM "FA complementation group M" +HGNC#FARS2 "phenylalanyl-tRNA synthetase 2, mitochondrial" +HGNC#FAS "Fas cell surface death receptor" +HGNC#FASLG "Fas ligand" +HGNC#FASN "fatty acid synthase" +HGNC#FASTKD2 "FAST kinase domains 2" +HGNC#FASTKD3 "FAST kinase domains 3" +HGNC#FAT1 "FAT atypical cadherin 1" +HGNC#FBLN1 "fibulin 1" +HGNC#FBLN5 "fibulin 5" +HGNC#FBP1 "fructose-bisphosphatase 1" +HGNC#FBXL4 "F-box and leucine rich repeat protein 4" +HGNC#FBXO11 "F-box protein 11" +HGNC#FBXO7 "F-box protein 7" +HGNC#FBXW4 "F-box and WD repeat domain containing 4" +HGNC#FBXW7 "F-box and WD repeat domain containing 7" +HGNC#FCGR2A "Fc fragment of IgG receptor IIa" +HGNC#FCGR3A "Fc fragment of IgG receptor IIIa" +HGNC#FERMT1 "fermitin family member 1" +HGNC#FERMT3 "fermitin family member 3" +HGNC#FEV "FEV, ETS transcription factor" +HGNC#FGA "fibrinogen alpha chain" +HGNC#FGB "fibrinogen beta chain" +HGNC#FGD1 "FYVE, RhoGEF and PH domain containing 1" +HGNC#FGD2 "FYVE, RhoGEF and PH domain containing 2" +HGNC#FGD4 "FYVE, RhoGEF and PH domain containing 4" +HGNC#FGF1 "fibroblast growth factor 1" +HGNC#FGF2 "fibroblast growth factor 2" +HGNC#FGF4 "fibroblast growth factor 4" +HGNC#FGF5 "fibroblast growth factor 5" +HGNC#FGF6 "fibroblast growth factor 6" +HGNC#FGF7 "fibroblast growth factor 7" +HGNC#FGF8 "fibroblast growth factor 8" +HGNC#FGF9 "fibroblast growth factor 9" +HGNC#FGFR1 "fibroblast growth factor receptor 1" +HGNC#FGFR2 "fibroblast growth factor receptor 2" +HGNC#FGFR3 "fibroblast growth factor receptor 3" +HGNC#FGFR4 "fibroblast growth factor receptor 4" +HGNC#FGG "fibrinogen gamma chain" +HGNC#FGR "FGR proto-oncogene, Src family tyrosine kinase" +HGNC#FHL2 "four and a half LIM domains 2" +HGNC#FIG4 "FIG4 phosphoinositide 5-phosphatase" +HGNC#FIGLA "folliculogenesis specific bHLH transcription factor" +HGNC#FKBP10 "FKBP prolyl isomerase 10" +HGNC#FKBP14 "FKBP prolyl isomerase 14" +HGNC#FLCN "folliculin" +HGNC#FLG "filaggrin" +HGNC#FLI1 "Fli-1 proto-oncogene, ETS transcription factor" +HGNC#FLT1 "fms related tyrosine kinase 1" +HGNC#FLT3 "fms related tyrosine kinase 3" +HGNC#FLT4 "fms related tyrosine kinase 4" +HGNC#FLVCR1 "feline leukemia virus subgroup C cellular receptor 1" +HGNC#FLVCR2 "feline leukemia virus subgroup C cellular receptor family member 2" +HGNC#FMO3 "flavin containing monooxygenase 3" +HGNC#FNDC8 "fibronectin type III domain containing 8" +HGNC#FOXA1 "forkhead box A1" +HGNC#FOXC1 "forkhead box C1" +HGNC#FOXE3 "forkhead box E3" +HGNC#FOXF1 "forkhead box F1" +HGNC#FOXG1 "forkhead box G1" +HGNC#FOXH1 "forkhead box H1" +HGNC#FOXI1 "forkhead box I1" +HGNC#FOXL2 "forkhead box L2" +HGNC#FOXN1 "forkhead box N1" +HGNC#FOXO1 "forkhead box O1" +HGNC#FOXO3 "forkhead box O3" +HGNC#FOXP1 "forkhead box P1" +HGNC#FOXP2 "forkhead box P2" +HGNC#FOXP3 "forkhead box P3" +HGNC#FOXQ1 "forkhead box Q1" +HGNC#FOXRED1 "FAD dependent oxidoreductase domain containing 1" +HGNC#FPR1 "formyl peptide receptor 1" +HGNC#FREM1 "FRAS1 related extracellular matrix 1" +HGNC#FRMD7 "FERM domain containing 7" +HGNC#FRMPD4 "FERM and PDZ domain containing 4" +HGNC#FSCN2 "fascin actin-bundling protein 2, retinal" +HGNC#FSHB "follicle stimulating hormone subunit beta" +HGNC#FSHR "follicle stimulating hormone receptor" +HGNC#FTH1 "ferritin heavy chain 1" +HGNC#FTL "ferritin light chain" +HGNC#FTO "FTO, alpha-ketoglutarate dependent dioxygenase" +HGNC#FTSJ1 "FtsJ RNA methyltransferase homolog 1" +HGNC#FUCA1 "alpha-L-fucosidase 1" +HGNC#FUS "FUS RNA binding protein" +HGNC#FUT2 "fucosyltransferase 2" +HGNC#FYCO1 "FYVE and coiled-coil domain containing 1" +HGNC#FYN "FYN proto-oncogene, Src family tyrosine kinase" +HGNC#FZD4 "frizzled class receptor 4" +HGNC#G6PC "glucose-6-phosphatase catalytic subunit" +HGNC#G6PC3 "glucose-6-phosphatase catalytic subunit 3" +HGNC#GAA "glucosidase alpha, acid" +HGNC#GABBR2 "gamma-aminobutyric acid type B receptor subunit 2" +HGNC#GABRA1 "gamma-aminobutyric acid type A receptor alpha1 subunit" +HGNC#GABRA2 "gamma-aminobutyric acid type A receptor alpha2 subunit" +HGNC#GABRA6 "gamma-aminobutyric acid type A receptor alpha6 subunit" +HGNC#GABRB2 "gamma-aminobutyric acid type A receptor beta2 subunit" +HGNC#GABRB3 "gamma-aminobutyric acid type A receptor beta3 subunit" +HGNC#GABRD "gamma-aminobutyric acid type A receptor delta subunit" +HGNC#GABRG1 "gamma-aminobutyric acid type A receptor gamma1 subunit" +HGNC#GABRG2 "gamma-aminobutyric acid type A receptor gamma2 subunit" +HGNC#GALC "galactosylceramidase" +HGNC#GALE "UDP-galactose-4-epimerase" +HGNC#GALNS "galactosamine (N-acetyl)-6-sulfatase" +HGNC#GALNT12 "polypeptide N-acetylgalactosaminyltransferase 12" +HGNC#GALNT3 "polypeptide N-acetylgalactosaminyltransferase 3" +HGNC#GALNTL5 "polypeptide N-acetylgalactosaminyltransferase like 5" +HGNC#GAMT "guanidinoacetate N-methyltransferase" +HGNC#GAN "gigaxonin" +HGNC#GARS "glycyl-tRNA synthetase" +HGNC#GAS6 "growth arrest specific 6" +HGNC#GATA1 "GATA binding protein 1" +HGNC#GATA2 "GATA binding protein 2" +HGNC#GATA3 "GATA binding protein 3" +HGNC#GATA4 "GATA binding protein 4" +HGNC#GATA6 "GATA binding protein 6" +HGNC#GATAD1 "GATA zinc finger domain containing 1" +HGNC#GATAD2B "GATA zinc finger domain containing 2B" +HGNC#GBA "glucosylceramidase beta" +HGNC#GBE1 "1,4-alpha-glucan branching enzyme 1" +HGNC#GCDH "glutaryl-CoA dehydrogenase" +HGNC#GCNT2 "glucosaminyl (N-acetyl) transferase 2 (I blood group)" +HGNC#GDF10 "growth differentiation factor 10" +HGNC#GDF2 "growth differentiation factor 2" +HGNC#GDF3 "growth differentiation factor 3" +HGNC#GDI1 "GDP dissociation inhibitor 1" +HGNC#GFAP "glial fibrillary acidic protein" +HGNC#GFI1 "growth factor independent 1 transcriptional repressor" +HGNC#GH1 "growth hormone 1" +HGNC#GHR "growth hormone receptor" +HGNC#GHRHR "growth hormone releasing hormone receptor" +HGNC#GHSR "growth hormone secretagogue receptor" +HGNC#GIPC3 "GIPC PDZ domain containing family member 3" +HGNC#GJA1 "gap junction protein alpha 1" +HGNC#GJA3 "gap junction protein alpha 3" +HGNC#GJA5 "gap junction protein alpha 5" +HGNC#GJA8 "gap junction protein alpha 8" +HGNC#GJB1 "gap junction protein beta 1" +HGNC#GJB2 "gap junction protein beta 2" +HGNC#GJB3 "gap junction protein beta 3" +HGNC#GJB6 "gap junction protein beta 6" +HGNC#GJC2 "gap junction protein gamma 2" +HGNC#GK "glycerol kinase" +HGNC#GLA "galactosidase alpha" +HGNC#GLB1 "galactosidase beta 1" +HGNC#GLE1 "GLE1, RNA export mediator" +HGNC#GLI1 "GLI family zinc finger 1" +HGNC#GLI2 "GLI family zinc finger 2" +HGNC#GLI3 "GLI family zinc finger 3" +HGNC#GLIS2 "GLIS family zinc finger 2" +HGNC#GLIS3 "GLIS family zinc finger 3" +HGNC#GLRA1 "glycine receptor alpha 1" +HGNC#GLRB "glycine receptor beta" +HGNC#GLRX5 "glutaredoxin 5" +HGNC#GLS "glutaminase" +HGNC#GNA11 "G protein subunit alpha 11" +HGNC#GNA14 "G protein subunit alpha 14" +HGNC#GNAI2 "G protein subunit alpha i2" +HGNC#GNAO1 "G protein subunit alpha o1" +HGNC#GNAQ "G protein subunit alpha q" +HGNC#GNAS "GNAS complex locus" +HGNC#GNAT1 "G protein subunit alpha transducin 1" +HGNC#GNAT2 "G protein subunit alpha transducin 2" +HGNC#GNGT1 "G protein subunit gamma transducin 1" +HGNC#GNPTAB "N-acetylglucosamine-1-phosphate transferase subunits alpha and beta" +HGNC#GNPTG "N-acetylglucosamine-1-phosphate transferase subunit gamma" +HGNC#GNRH1 "gonadotropin releasing hormone 1" +HGNC#GNRHR "gonadotropin releasing hormone receptor" +HGNC#GNS "glucosamine (N-acetyl)-6-sulfatase" +HGNC#GOSR2 "golgi SNAP receptor complex member 2" +HGNC#GP9 "glycoprotein IX platelet" +HGNC#GPAM "glycerol-3-phosphate acyltransferase, mitochondrial" +HGNC#GPC3 "glypican 3" +HGNC#GPC6 "glypican 6" +HGNC#GPD2 "glycerol-3-phosphate dehydrogenase 2" +HGNC#GPR143 "G protein-coupled receptor 143" +HGNC#GPR179 "G protein-coupled receptor 179" +HGNC#GPR26 "G protein-coupled receptor 26" +HGNC#GPR55 "G protein-coupled receptor 55" +HGNC#GPR82 "G protein-coupled receptor 82" +HGNC#GPSM2 "G protein signaling modulator 2" +HGNC#GPX1 "glutathione peroxidase 1" +HGNC#GPX4 "glutathione peroxidase 4" +HGNC#GREM1 "gremlin 1, DAN family BMP antagonist" +HGNC#GRHL2 "grainyhead like transcription factor 2" +HGNC#GRIA3 "glutamate ionotropic receptor AMPA type subunit 3" +HGNC#GRIK2 "glutamate ionotropic receptor kainate type subunit 2" +HGNC#GRIN1 "glutamate ionotropic receptor NMDA type subunit 1" +HGNC#GRIN2A "glutamate ionotropic receptor NMDA type subunit 2A" +HGNC#GRIN2B "glutamate ionotropic receptor NMDA type subunit 2B" +HGNC#GRIP1 "glutamate receptor interacting protein 1" +HGNC#GRK1 "G protein-coupled receptor kinase 1" +HGNC#GRM1 "glutamate metabotropic receptor 1" +HGNC#GRM3 "glutamate metabotropic receptor 3" +HGNC#GRM6 "glutamate metabotropic receptor 6" +HGNC#GRM8 "glutamate metabotropic receptor 8" +HGNC#GRPR "gastrin releasing peptide receptor" +HGNC#GRWD1 "glutamate rich WD repeat containing 1" +HGNC#GRXCR1 "glutaredoxin and cysteine rich domain containing 1" +HGNC#GRXCR2 "glutaredoxin and cysteine rich domain containing 2" +HGNC#GSDME "gasdermin E" +HGNC#GSN "gelsolin" +HGNC#GSTP1 "glutathione S-transferase pi 1" +HGNC#GUCA1A "guanylate cyclase activator 1A" +HGNC#GUCA1B "guanylate cyclase activator 1B" +HGNC#GUCY2C "guanylate cyclase 2C" +HGNC#GUCY2D "guanylate cyclase 2D, retinal" +HGNC#GUSB "glucuronidase beta" +HGNC#GYS1 "glycogen synthase 1" +HGNC#GYS2 "glycogen synthase 2" +HGNC#GZMB "granzyme B" +HGNC#H19 "H19, imprinted maternally expressed transcript" +HGNC#H3F3A "H3 histone family member 3A" +HGNC#H3F3C "H3 histone family member 3C" +HGNC#HARS "histidyl-tRNA synthetase" +HGNC#HARS2 "histidyl-tRNA synthetase 2, mitochondrial" +HGNC#HAS3 "hyaluronan synthase 3" +HGNC#HAVCR2 "hepatitis A virus cellular receptor 2" +HGNC#HBB "hemoglobin subunit beta" +HGNC#HBD "hemoglobin subunit delta" +HGNC#HCFC1 "host cell factor C1" +HGNC#HCN1 "hyperpolarization activated cyclic nucleotide gated potassium channel 1" +HGNC#HCN2 "hyperpolarization activated cyclic nucleotide gated potassium and sodium channel 2" +HGNC#HCN3 "hyperpolarization activated cyclic nucleotide gated potassium channel 3" +HGNC#HCN4 "hyperpolarization activated cyclic nucleotide gated potassium channel 4" +HGNC#HDAC1 "histone deacetylase 1" +HGNC#HDAC2 "histone deacetylase 2" +HGNC#HDAC4 "histone deacetylase 4" +HGNC#HDAC8 "histone deacetylase 8" +HGNC#HEPACAM "hepatic and glial cell adhesion molecule" +HGNC#HEPACAM2 "HEPACAM family member 2" +HGNC#HERC2 "HECT and RLD domain containing E3 ubiquitin protein ligase 2" +HGNC#HES7 "hes family bHLH transcription factor 7" +HGNC#HESX1 "HESX homeobox 1" +HGNC#HEXA "hexosaminidase subunit alpha" +HGNC#HEXB "hexosaminidase subunit beta" +HGNC#HEY1 "hes related family bHLH transcription factor with YRPW motif 1" +HGNC#HFE "homeostatic iron regulator" +HGNC#HFM1 "HFM1, ATP dependent DNA helicase homolog" +HGNC#HGF "hepatocyte growth factor" +HGNC#HIF1A "hypoxia inducible factor 1 subunit alpha" +HGNC#HIRA "histone cell cycle regulator" +HGNC#HIST1H1C "histone cluster 1 H1 family member c" +HGNC#HIST1H1E "histone cluster 1 H1 family member e" +HGNC#HIST1H3B "histone cluster 1 H3 family member b" +HGNC#HIST1H4E "histone cluster 1 H4 family member e" +HGNC#HLA-A "major histocompatibility complex, class I, A" +HGNC#HLA-B "major histocompatibility complex, class I, B" +HGNC#HLA-C "major histocompatibility complex, class I, C" +HGNC#HLA-DMA "major histocompatibility complex, class II, DM alpha" +HGNC#HLA-DMB "major histocompatibility complex, class II, DM beta" +HGNC#HLA-DOA "major histocompatibility complex, class II, DO alpha" +HGNC#HLA-DOB "major histocompatibility complex, class II, DO beta" +HGNC#HLA-DPA1 "major histocompatibility complex, class II, DP alpha 1" +HGNC#HLA-DPB1 "major histocompatibility complex, class II, DP beta 1" +HGNC#HLA-DQA1 "major histocompatibility complex, class II, DQ alpha 1" +HGNC#HLA-DQA2 "major histocompatibility complex, class II, DQ alpha 2" +HGNC#HLA-DQB1 "major histocompatibility complex, class II, DQ beta 1" +HGNC#HLA-DQB2 "major histocompatibility complex, class II, DQ beta 2" +HGNC#HLA-DRA "major histocompatibility complex, class II, DR alpha" +HGNC#HLA-DRB1 "major histocompatibility complex, class II, DR beta 1" +HGNC#HLA-DRB5 "major histocompatibility complex, class II, DR beta 5" +HGNC#HLA-E "major histocompatibility complex, class I, E" +HGNC#HLA-F "major histocompatibility complex, class I, F" +HGNC#HLA-G "major histocompatibility complex, class I, G" +HGNC#HMCN1 "hemicentin 1" +HGNC#HMGA2 "high mobility group AT-hook 2" +HGNC#HNF1A "HNF1 homeobox A" +HGNC#HNF1B "HNF1 homeobox B" +HGNC#HNF4A "hepatocyte nuclear factor 4 alpha" +HGNC#HNRNPH1 "heterogeneous nuclear ribonucleoprotein H1" +HGNC#HOMER2 "homer scaffold protein 2" +HGNC#HOXA1 "homeobox A1" +HGNC#HOXA11 "homeobox A11" +HGNC#HOXA13 "homeobox A13" +HGNC#HOXA2 "homeobox A2" +HGNC#HOXB13 "homeobox B13" +HGNC#HOXD10 "homeobox D10" +HGNC#HOXD13 "homeobox D13" +HGNC#HP "haptoglobin" +HGNC#HPGD "15-hydroxyprostaglandin dehydrogenase" +HGNC#HPS1 "HPS1, biogenesis of lysosomal organelles complex 3 subunit 1" +HGNC#HPS3 "HPS3, biogenesis of lysosomal organelles complex 2 subunit 1" +HGNC#HPS4 "HPS4, biogenesis of lysosomal organelles complex 3 subunit 2" +HGNC#HPS5 "HPS5, biogenesis of lysosomal organelles complex 2 subunit 2" +HGNC#HPS6 "HPS6, biogenesis of lysosomal organelles complex 2 subunit 3" +HGNC#HRAS "HRas proto-oncogene, GTPase" +HGNC#HS6ST1 "heparan sulfate 6-O-sulfotransferase 1" +HGNC#HSCB "HscB mitochondrial iron-sulfur cluster cochaperone" +HGNC#HSD11B2 "hydroxysteroid 11-beta dehydrogenase 2" +HGNC#HSD17B10 "hydroxysteroid 17-beta dehydrogenase 10" +HGNC#HSD17B3 "hydroxysteroid 17-beta dehydrogenase 3" +HGNC#HSD17B4 "hydroxysteroid 17-beta dehydrogenase 4" +HGNC#HSD3B1 "hydroxy-delta-5-steroid dehydrogenase, 3 beta- and steroid delta-isomerase 1" +HGNC#HSD3B2 "hydroxy-delta-5-steroid dehydrogenase, 3 beta- and steroid delta-isomerase 2" +HGNC#HSP90AA1 "heat shock protein 90 alpha family class A member 1" +HGNC#HSPA9 "heat shock protein family A (Hsp70) member 9" +HGNC#HSPB1 "heat shock protein family B (small) member 1" +HGNC#HSPB3 "heat shock protein family B (small) member 3" +HGNC#HSPB7 "heat shock protein family B (small) member 7" +HGNC#HSPB8 "heat shock protein family B (small) member 8" +HGNC#HSPD1 "heat shock protein family D (Hsp60) member 1" +HGNC#HSPG2 "heparan sulfate proteoglycan 2" +HGNC#HSPH1 "heat shock protein family H (Hsp110) member 1" +HGNC#HTR2A "5-hydroxytryptamine receptor 2A" +HGNC#HTR2C "5-hydroxytryptamine receptor 2C" +HGNC#HTRA1 "HtrA serine peptidase 1" +HGNC#HTRA2 "HtrA serine peptidase 2" +HGNC#HTT "huntingtin" +HGNC#HUWE1 "HECT, UBA and WWE domain containing 1, E3 ubiquitin protein ligase" +HGNC#HYAL1 "hyaluronidase 1" +HGNC#HYDIN "HYDIN, axonemal central pair apparatus protein" +HGNC#IARS2 "isoleucyl-tRNA synthetase 2, mitochondrial" +HGNC#ICOS "inducible T cell costimulator" +HGNC#ICOSLG "inducible T cell costimulator ligand" +HGNC#ID3 "inhibitor of DNA binding 3, HLH protein" +HGNC#IDE "insulin degrading enzyme" +HGNC#IDS "iduronate 2-sulfatase" +HGNC#IDUA "iduronidase, alpha-L-" +HGNC#IFIH1 "interferon induced with helicase C domain 1" +HGNC#IFIT1 "interferon induced protein with tetratricopeptide repeats 1" +HGNC#IFIT2 "interferon induced protein with tetratricopeptide repeats 2" +HGNC#IFIT3 "interferon induced protein with tetratricopeptide repeats 3" +HGNC#IFITM1 "interferon induced transmembrane protein 1" +HGNC#IFITM3 "interferon induced transmembrane protein 3" +HGNC#IFITM5 "interferon induced transmembrane protein 5" +HGNC#IFNAR1 "interferon alpha and beta receptor subunit 1" +HGNC#IFNAR2 "interferon alpha and beta receptor subunit 2" +HGNC#IFNG "interferon gamma" +HGNC#IFNGR1 "interferon gamma receptor 1" +HGNC#IFNGR2 "interferon gamma receptor 2" +HGNC#IFNL3 "interferon lambda 3" +HGNC#IFT122 "intraflagellar transport 122" +HGNC#IFT140 "intraflagellar transport 140" +HGNC#IFT43 "intraflagellar transport 43" +HGNC#IFT80 "intraflagellar transport 80" +HGNC#IGBP1 "immunoglobulin binding protein 1" +HGNC#IGF1 "insulin like growth factor 1" +HGNC#IGF1R "insulin like growth factor 1 receptor" +HGNC#IGF2R "insulin like growth factor 2 receptor" +HGNC#IGHMBP2 "immunoglobulin mu DNA binding protein 2" +HGNC#IHH "Indian hedgehog signaling molecule" +HGNC#IKZF1 "IKAROS family zinc finger 1" +HGNC#IL10 "interleukin 10" +HGNC#IL10RA "interleukin 10 receptor subunit alpha" +HGNC#IL10RB "interleukin 10 receptor subunit beta" +HGNC#IL11RA "interleukin 11 receptor subunit alpha" +HGNC#IL12B "interleukin 12B" +HGNC#IL12RB1 "interleukin 12 receptor subunit beta 1" +HGNC#IL15 "interleukin 15" +HGNC#IL17F "interleukin 17F" +HGNC#IL17RA "interleukin 17 receptor A" +HGNC#IL18RAP "interleukin 18 receptor accessory protein" +HGNC#IL1B "interleukin 1 beta" +HGNC#IL1RAPL1 "interleukin 1 receptor accessory protein like 1" +HGNC#IL1RN "interleukin 1 receptor antagonist" +HGNC#IL21 "interleukin 21" +HGNC#IL21R "interleukin 21 receptor" +HGNC#IL2RA "interleukin 2 receptor subunit alpha" +HGNC#IL2RB "interleukin 2 receptor subunit beta" +HGNC#IL2RG "interleukin 2 receptor subunit gamma" +HGNC#IL33 "interleukin 33" +HGNC#IL36RN "interleukin 36 receptor antagonist" +HGNC#IL5 "interleukin 5" +HGNC#IL6 "interleukin 6" +HGNC#IL6R "interleukin 6 receptor" +HGNC#IL7R "interleukin 7 receptor" +HGNC#ILDR1 "immunoglobulin like domain containing receptor 1" +HGNC#ILK "integrin linked kinase" +HGNC#IMMT "inner membrane mitochondrial protein" +HGNC#ING1 "inhibitor of growth family member 1" +HGNC#ING4 "inhibitor of growth family member 4" +HGNC#INHBA "inhibin subunit beta A" +HGNC#INPP4B "inositol polyphosphate-4-phosphatase type II B" +HGNC#INPP5E "inositol polyphosphate-5-phosphatase E" +HGNC#INPPL1 "inositol polyphosphate phosphatase like 1" +HGNC#INS "insulin" +HGNC#INSR "insulin receptor" +HGNC#INTS3 "integrator complex subunit 3" +HGNC#INTS8 "integrator complex subunit 8" +HGNC#INVS "inversin" +HGNC#IQCB1 "IQ motif containing B1" +HGNC#IQSEC2 "IQ motif and Sec7 domain 2" +HGNC#IRS2 "insulin receptor substrate 2" +HGNC#IRX5 "iroquois homeobox 5" +HGNC#ITGA2 "integrin subunit alpha 2" +HGNC#ITGA2B "integrin subunit alpha 2b" +HGNC#ITGA6 "integrin subunit alpha 6" +HGNC#ITGA7 "integrin subunit alpha 7" +HGNC#ITGAD "integrin subunit alpha D" +HGNC#ITGAM "integrin subunit alpha M" +HGNC#ITGB2 "integrin subunit beta 2" +HGNC#ITGB3 "integrin subunit beta 3" +HGNC#ITGB4 "integrin subunit beta 4" +HGNC#ITGB6 "integrin subunit beta 6" +HGNC#ITK "IL2 inducible T cell kinase" +HGNC#IVD "isovaleryl-CoA dehydrogenase" +HGNC#JAG1 "jagged 1" +HGNC#JAK1 "Janus kinase 1" +HGNC#JAK2 "Janus kinase 2" +HGNC#JAK3 "Janus kinase 3" +HGNC#JAZF1 "JAZF zinc finger 1" +HGNC#JMJD1C "jumonji domain containing 1C" +HGNC#JPH2 "junctophilin 2" +HGNC#JUN "Jun proto-oncogene, AP-1 transcription factor subunit" +HGNC#JUP "junction plakoglobin" +HGNC#KANSL1 "KAT8 regulatory NSL complex subunit 1" +HGNC#KARS "lysyl-tRNA synthetase" +HGNC#KAT6A "lysine acetyltransferase 6A" +HGNC#KAT6B "lysine acetyltransferase 6B" +HGNC#KAT7 "lysine acetyltransferase 7" +HGNC#KATNAL2 "katanin catalytic subunit A1 like 2" +HGNC#KBTBD13 "kelch repeat and BTB domain containing 13" +HGNC#KCNA1 "potassium voltage-gated channel subfamily A member 1" +HGNC#KCNA2 "potassium voltage-gated channel subfamily A member 2" +HGNC#KCNA5 "potassium voltage-gated channel subfamily A member 5" +HGNC#KCNAB1 "potassium voltage-gated channel subfamily A member regulatory beta subunit 1" +HGNC#KCNAB2 "potassium voltage-gated channel subfamily A regulatory beta subunit 2" +HGNC#KCNB1 "potassium voltage-gated channel subfamily B member 1" +HGNC#KCNC1 "potassium voltage-gated channel subfamily C member 1" +HGNC#KCND3 "potassium voltage-gated channel subfamily D member 3" +HGNC#KCNE1 "potassium voltage-gated channel subfamily E regulatory subunit 1" +HGNC#KCNE2 "potassium voltage-gated channel subfamily E regulatory subunit 2" +HGNC#KCNE3 "potassium voltage-gated channel subfamily E regulatory subunit 3" +HGNC#KCNF1 "potassium voltage-gated channel modifier subfamily F member 1" +HGNC#KCNH2 "potassium voltage-gated channel subfamily H member 2" +HGNC#KCNH5 "potassium voltage-gated channel subfamily H member 5" +HGNC#KCNJ1 "potassium voltage-gated channel subfamily J member 1" +HGNC#KCNJ10 "potassium voltage-gated channel subfamily J member 10" +HGNC#KCNJ11 "potassium voltage-gated channel subfamily J member 11" +HGNC#KCNJ13 "potassium voltage-gated channel subfamily J member 13" +HGNC#KCNJ2 "potassium voltage-gated channel subfamily J member 2" +HGNC#KCNJ4 "potassium voltage-gated channel subfamily J member 4" +HGNC#KCNJ5 "potassium voltage-gated channel subfamily J member 5" +HGNC#KCNJ8 "potassium voltage-gated channel subfamily J member 8" +HGNC#KCNK3 "potassium two pore domain channel subfamily K member 3" +HGNC#KCNK9 "potassium two pore domain channel subfamily K member 9" +HGNC#KCNMA1 "potassium calcium-activated channel subfamily M alpha 1" +HGNC#KCNN3 "potassium calcium-activated channel subfamily N member 3" +HGNC#KCNQ1 "potassium voltage-gated channel subfamily Q member 1" +HGNC#KCNQ1OT1 "KCNQ1 opposite strand/antisense transcript 1" +HGNC#KCNQ2 "potassium voltage-gated channel subfamily Q member 2" +HGNC#KCNQ3 "potassium voltage-gated channel subfamily Q member 3" +HGNC#KCNQ4 "potassium voltage-gated channel subfamily Q member 4" +HGNC#KCNT1 "potassium sodium-activated channel subfamily T member 1" +HGNC#KCNV2 "potassium voltage-gated channel modifier subfamily V member 2" +HGNC#KDM1A "lysine demethylase 1A" +HGNC#KDM3A "lysine demethylase 3A" +HGNC#KDM5A "lysine demethylase 5A" +HGNC#KDM5C "lysine demethylase 5C" +HGNC#KDM6A "lysine demethylase 6A" +HGNC#KDR "kinase insert domain receptor" +HGNC#KEAP1 "kelch like ECH associated protein 1" +HGNC#KEL "Kell metallo-endopeptidase (Kell blood group)" +HGNC#KIF11 "kinesin family member 11" +HGNC#KIF12 "kinesin family member 12" +HGNC#KIF16B "kinesin family member 16B" +HGNC#KIF1A "kinesin family member 1A" +HGNC#KIF1B "kinesin family member 1B" +HGNC#KIF1BP "KIF1 binding protein" +HGNC#KIF21A "kinesin family member 21A" +HGNC#KIF22 "kinesin family member 22" +HGNC#KIF5A "kinesin family member 5A" +HGNC#KIF7 "kinesin family member 7" +HGNC#KIR2DL3 "killer cell immunoglobulin like receptor, two Ig domains and long cytoplasmic tail 3" +HGNC#KIR3DL1 "killer cell immunoglobulin like receptor, three Ig domains and long cytoplasmic tail 1" +HGNC#KIRREL3 "kirre like nephrin family adhesion molecule 3" +HGNC#KISS1 "KiSS-1 metastasis suppressor" +HGNC#KISS1R "KISS1 receptor" +HGNC#KIT "KIT proto-oncogene receptor tyrosine kinase" +HGNC#KL "klotho" +HGNC#KLF11 "Kruppel like factor 11" +HGNC#KLF4 "Kruppel like factor 4" +HGNC#KLF6 "Kruppel like factor 6" +HGNC#KLF8 "Kruppel like factor 8" +HGNC#KLHL20 "kelch like family member 20" +HGNC#KLHL3 "kelch like family member 3" +HGNC#KLHL40 "kelch like family member 40" +HGNC#KLHL6 "kelch like family member 6" +HGNC#KLHL7 "kelch like family member 7" +HGNC#KLRD1 "killer cell lectin like receptor D1" +HGNC#KMT2A "lysine methyltransferase 2A" +HGNC#KMT2B "lysine methyltransferase 2B" +HGNC#KMT2C "lysine methyltransferase 2C" +HGNC#KMT2D "lysine methyltransferase 2D" +HGNC#KPNA7 "karyopherin subunit alpha 7" +HGNC#KPRP "keratinocyte proline rich protein" +HGNC#KPTN "kaptin, actin binding protein" +HGNC#KRAS "KRAS proto-oncogene, GTPase" +HGNC#KRIT1 "KRIT1, ankyrin repeat containing" +HGNC#KRT1 "keratin 1" +HGNC#KRT12 "keratin 12" +HGNC#KRT13 "keratin 13" +HGNC#KRT2 "keratin 2" +HGNC#KRT3 "keratin 3" +HGNC#KRT33A "keratin 33A" +HGNC#KRT4 "keratin 4" +HGNC#KRT5 "keratin 5" +HGNC#KRT83 "keratin 83" +HGNC#KRT9 "keratin 9" +HGNC#L1CAM "L1 cell adhesion molecule" +HGNC#LAG3 "lymphocyte activating 3" +HGNC#LAMA2 "laminin subunit alpha 2" +HGNC#LAMA3 "laminin subunit alpha 3" +HGNC#LAMA4 "laminin subunit alpha 4" +HGNC#LAMA5 "laminin subunit alpha 5" +HGNC#LAMB2 "laminin subunit beta 2" +HGNC#LAMB3 "laminin subunit beta 3" +HGNC#LAMC2 "laminin subunit gamma 2" +HGNC#LAMC3 "laminin subunit gamma 3" +HGNC#LAMP2 "lysosomal associated membrane protein 2" +HGNC#LARGE1 "LARGE xylosyl- and glucuronyltransferase 1" +HGNC#LARP1B "La ribonucleoprotein domain family member 1B" +HGNC#LARP7 "La ribonucleoprotein domain family member 7" +HGNC#LARS "leucyl-tRNA synthetase" +HGNC#LARS2 "leucyl-tRNA synthetase 2, mitochondrial" +HGNC#LBR "lamin B receptor" +HGNC#LCK "LCK proto-oncogene, Src family tyrosine kinase" +HGNC#LCT "lactase" +HGNC#LDB3 "LIM domain binding 3" +HGNC#LDLR "low density lipoprotein receptor" +HGNC#LEF1 "lymphoid enhancer binding factor 1" +HGNC#LEMD3 "LEM domain containing 3" +HGNC#LEPR "leptin receptor" +HGNC#LETM1 "leucine zipper and EF-hand containing transmembrane protein 1" +HGNC#LFNG "LFNG O-fucosylpeptide 3-beta-N-acetylglucosaminyltransferase" +HGNC#LHCGR "luteinizing hormone/choriogonadotropin receptor" +HGNC#LHFPL5 "LHFPL tetraspan subfamily member 5" +HGNC#LHX3 "LIM homeobox 3" +HGNC#LHX4 "LIM homeobox 4" +HGNC#LIFR "LIF receptor alpha" +HGNC#LIG4 "DNA ligase 4" +HGNC#LIPA "lipase A, lysosomal acid type" +HGNC#LIPC "lipase C, hepatic type" +HGNC#LMNA "lamin A/C" +HGNC#LMNB1 "lamin B1" +HGNC#LMO1 "LIM domain only 1" +HGNC#LMX1B "LIM homeobox transcription factor 1 beta" +HGNC#LOXHD1 "lipoxygenase homology domains 1" +HGNC#LPIN1 "lipin 1" +HGNC#LPIN2 "lipin 2" +HGNC#LPL "lipoprotein lipase" +HGNC#LRBA "LPS responsive beige-like anchor protein" +HGNC#LRIT3 "leucine rich repeat, Ig-like and transmembrane domains 3" +HGNC#LRP1B "LDL receptor related protein 1B" +HGNC#LRP2 "LDL receptor related protein 2" +HGNC#LRP4 "LDL receptor related protein 4" +HGNC#LRP5 "LDL receptor related protein 5" +HGNC#LRP6 "LDL receptor related protein 6" +HGNC#LRRK2 "leucine rich repeat kinase 2" +HGNC#LRSAM1 "leucine rich repeat and sterile alpha motif containing 1" +HGNC#LRTOMT "leucine rich transmembrane and O-methyltransferase domain containing" +HGNC#LTBP2 "latent transforming growth factor beta binding protein 2" +HGNC#LTBP3 "latent transforming growth factor beta binding protein 3" +HGNC#LTBP4 "latent transforming growth factor beta binding protein 4" +HGNC#LYN "LYN proto-oncogene, Src family tyrosine kinase" +HGNC#LYST "lysosomal trafficking regulator" +HGNC#LYZ "lysozyme" +HGNC#LZTFL1 "leucine zipper transcription factor like 1" +HGNC#LZTR1 "leucine zipper like transcription regulator 1" +HGNC#LZTS1 "leucine zipper tumor suppressor 1" +HGNC#MACF1 "microtubule-actin crosslinking factor 1" +HGNC#MAD2L2 "mitotic arrest deficient 2 like 2" +HGNC#MAF "MAF bZIP transcription factor" +HGNC#MAFB "MAF bZIP transcription factor B" +HGNC#MAGEL2 "MAGE family member L2" +HGNC#MAGI2 "membrane associated guanylate kinase, WW and PDZ domain containing 2" +HGNC#MAGOH "mago homolog, exon junction complex subunit" +HGNC#MAGT1 "magnesium transporter 1" +HGNC#MALAT1 "metastasis associated lung adenocarcinoma transcript 1" +HGNC#MALT1 "MALT1 paracaspase" +HGNC#MAN1B1 "mannosidase alpha class 1B member 1" +HGNC#MAN2B1 "mannosidase alpha class 2B member 1" +HGNC#MANBA "mannosidase beta" +HGNC#MAP2K1 "mitogen-activated protein kinase kinase 1" +HGNC#MAP2K2 "mitogen-activated protein kinase kinase 2" +HGNC#MAP2K4 "mitogen-activated protein kinase kinase 4" +HGNC#MAP3K1 "mitogen-activated protein kinase kinase kinase 1" +HGNC#MAP3K14 "mitogen-activated protein kinase kinase kinase 14" +HGNC#MAP3K3 "mitogen-activated protein kinase kinase kinase 3" +HGNC#MAP3K6 "mitogen-activated protein kinase kinase kinase 6" +HGNC#MAP3K7 "mitogen-activated protein kinase kinase kinase 7" +HGNC#MAP3K9 "mitogen-activated protein kinase kinase kinase 9" +HGNC#MAP4K2 "mitogen-activated protein kinase kinase kinase kinase 2" +HGNC#MAPK1 "mitogen-activated protein kinase 1" +HGNC#MAPK10 "mitogen-activated protein kinase 10" +HGNC#MAPK3 "mitogen-activated protein kinase 3" +HGNC#MAPT "microtubule associated protein tau" +HGNC#MARS2 "methionyl-tRNA synthetase 2, mitochondrial" +HGNC#MARVELD2 "MARVEL domain containing 2" +HGNC#MASP1 "mannan binding lectin serine peptidase 1" +HGNC#MASP2 "mannan binding lectin serine peptidase 2" +HGNC#MAST1 "microtubule associated serine/threonine kinase 1" +HGNC#MAST2 "microtubule associated serine/threonine kinase 2" +HGNC#MASTL "microtubule associated serine/threonine kinase like" +HGNC#MATN3 "matrilin 3" +HGNC#MAVS "mitochondrial antiviral signaling protein" +HGNC#MAX "MYC associated factor X" +HGNC#MBD5 "methyl-CpG binding domain protein 5" +HGNC#MBL2 "mannose binding lectin 2" +HGNC#MC1R "melanocortin 1 receptor" +HGNC#MC2R "melanocortin 2 receptor" +HGNC#MC4R "melanocortin 4 receptor" +HGNC#MCFD2 "multiple coagulation factor deficiency 2" +HGNC#MCL1 "MCL1, BCL2 family apoptosis regulator" +HGNC#MCM4 "minichromosome maintenance complex component 4" +HGNC#MCM8 "minichromosome maintenance 8 homologous recombination repair factor" +HGNC#MCOLN1 "mucolipin 1" +HGNC#MDM2 "MDM2 proto-oncogene" +HGNC#MDM4 "MDM4, p53 regulator" +HGNC#MECOM "MDS1 and EVI1 complex locus" +HGNC#MECP2 "methyl-CpG binding protein 2" +HGNC#MED1 "mediator complex subunit 1" +HGNC#MED12 "mediator complex subunit 12" +HGNC#MED17 "mediator complex subunit 17" +HGNC#MED23 "mediator complex subunit 23" +HGNC#MED25 "mediator complex subunit 25" +HGNC#MEF2A "myocyte enhancer factor 2A" +HGNC#MEF2B "myocyte enhancer factor 2B" +HGNC#MEF2C "myocyte enhancer factor 2C" +HGNC#MEFV "MEFV, pyrin innate immunity regulator" +HGNC#MEGF10 "multiple EGF like domains 10" +HGNC#MEOX1 "mesenchyme homeobox 1" +HGNC#MERTK "MER proto-oncogene, tyrosine kinase" +HGNC#MESP2 "mesoderm posterior bHLH transcription factor 2" +HGNC#MET "MET proto-oncogene, receptor tyrosine kinase" +HGNC#METTL23 "methyltransferase like 23" +HGNC#MGAT2 "mannosyl (alpha-1,6-)-glycoprotein beta-1,2-N-acetylglucosaminyltransferase" +HGNC#MGLL "monoglyceride lipase" +HGNC#MGME1 "mitochondrial genome maintenance exonuclease 1" +HGNC#MGP "matrix Gla protein" +HGNC#MGST3 "microsomal glutathione S-transferase 3" +HGNC#MIB1 "mindbomb E3 ubiquitin protein ligase 1" +HGNC#MID1 "midline 1" +HGNC#MINPP1 "multiple inositol-polyphosphate phosphatase 1" +HGNC#MIP "major intrinsic protein of lens fiber" +HGNC#MITF "melanocyte inducing transcription factor" +HGNC#MKI67 "marker of proliferation Ki-67" +HGNC#MKKS "McKusick-Kaufman syndrome" +HGNC#MKS1 "Meckel syndrome, type 1" +HGNC#MLH1 "mutL homolog 1" +HGNC#MLH3 "mutL homolog 3" +HGNC#MLLT3 "MLLT3, super elongation complex subunit" +HGNC#MMAB "metabolism of cobalamin associated B" +HGNC#MMP13 "matrix metallopeptidase 13" +HGNC#MMP2 "matrix metallopeptidase 2" +HGNC#MMP20 "matrix metallopeptidase 20" +HGNC#MMP9 "matrix metallopeptidase 9" +HGNC#MNX1 "motor neuron and pancreas homeobox 1" +HGNC#MOGS "mannosyl-oligosaccharide glucosidase" +HGNC#MPC1 "mitochondrial pyruvate carrier 1" +HGNC#MPDU1 "mannose-P-dolichol utilization defect 1" +HGNC#MPL "MPL proto-oncogene, thrombopoietin receptor" +HGNC#MPZ "myelin protein zero" +HGNC#MRE11 "MRE11 homolog, double strand break repair nuclease" +HGNC#MRPL3 "mitochondrial ribosomal protein L3" +HGNC#MRPL44 "mitochondrial ribosomal protein L44" +HGNC#MRPL46 "mitochondrial ribosomal protein L46" +HGNC#MRPL48 "mitochondrial ribosomal protein L48" +HGNC#MRPS11 "mitochondrial ribosomal protein S11" +HGNC#MRPS16 "mitochondrial ribosomal protein S16" +HGNC#MRPS22 "mitochondrial ribosomal protein S22" +HGNC#MS4A1 "membrane spanning 4-domains A1" +HGNC#MSH2 "mutS homolog 2" +HGNC#MSH3 "mutS homolog 3" +HGNC#MSH6 "mutS homolog 6" +HGNC#MSI2 "musashi RNA binding protein 2" +HGNC#MSR1 "macrophage scavenger receptor 1" +HGNC#MSRB3 "methionine sulfoxide reductase B3" +HGNC#MSX1 "msh homeobox 1" +HGNC#MSX2 "msh homeobox 2" +HGNC#MT-ATP6 "mitochondrially encoded ATP synthase membrane subunit 6" +HGNC#MT-ATP8 "mitochondrially encoded ATP synthase membrane subunit 8" +HGNC#MT-CO1 "mitochondrially encoded cytochrome c oxidase I" +HGNC#MT-CO2 "mitochondrially encoded cytochrome c oxidase II" +HGNC#MT-CO3 "mitochondrially encoded cytochrome c oxidase III" +HGNC#MT-CYB "mitochondrially encoded cytochrome b" +HGNC#MT-ND1 "mitochondrially encoded NADH:ubiquinone oxidoreductase core subunit 1" +HGNC#MT-ND2 "mitochondrially encoded NADH:ubiquinone oxidoreductase core subunit 2" +HGNC#MT-ND3 "mitochondrially encoded NADH:ubiquinone oxidoreductase core subunit 3" +HGNC#MT-ND4 "mitochondrially encoded NADH:ubiquinone oxidoreductase core subunit 4" +HGNC#MT-ND4L "mitochondrially encoded NADH:ubiquinone oxidoreductase core subunit 4L" +HGNC#MT-ND5 "mitochondrially encoded NADH:ubiquinone oxidoreductase core subunit 5" +HGNC#MT-ND6 "mitochondrially encoded NADH:ubiquinone oxidoreductase core subunit 6" +HGNC#MT-RNR1 "mitochondrially encoded 12S RNA" +HGNC#MT-RNR2 "mitochondrially encoded 16S RNA" +HGNC#MT-TA "mitochondrially encoded tRNA-Ala (GCN)" +HGNC#MT-TC "mitochondrially encoded tRNA-Cys (UGU/C)" +HGNC#MT-TD "mitochondrially encoded tRNA-Asp (GAU/C)" +HGNC#MT-TE "mitochondrially encoded tRNA-Glu (GAA/G)" +HGNC#MT-TF "mitochondrially encoded tRNA-Phe (UUU/C)" +HGNC#MT-TG "mitochondrially encoded tRNA-Gly (GGN)" +HGNC#MT-TH "mitochondrially encoded tRNA-His (CAU/C)" +HGNC#MT-TI "mitochondrially encoded tRNA-Ile (AUU/C)" +HGNC#MT-TK "mitochondrially encoded tRNA-Lys (AAA/G)" +HGNC#MT-TL1 "mitochondrially encoded tRNA-Leu (UUA/G) 1" +HGNC#MT-TL2 "mitochondrially encoded tRNA-Leu (CUN) 2" +HGNC#MT-TM "mitochondrially encoded tRNA-Met (AUA/G)" +HGNC#MT-TN "mitochondrially encoded tRNA-Asn (AAU/C)" +HGNC#MT-TP "mitochondrially encoded tRNA-Pro (CCN)" +HGNC#MT-TQ "mitochondrially encoded tRNA-Gln (CAA/G)" +HGNC#MT-TR "mitochondrially encoded tRNA-Arg (CGN)" +HGNC#MT-TS1 "mitochondrially encoded tRNA-Ser (UCN) 1" +HGNC#MT-TS2 "mitochondrially encoded tRNA-Ser (AGU/C) 2" +HGNC#MT-TT "mitochondrially encoded tRNA-Thr (ACN)" +HGNC#MT-TV "mitochondrially encoded tRNA-Val (GUN)" +HGNC#MT-TW "mitochondrially encoded tRNA-Trp (UGA/G)" +HGNC#MT-TY "mitochondrially encoded tRNA-Tyr (UAU/C)" +HGNC#MTCH2 "mitochondrial carrier 2" +HGNC#MTHFD1 "methylenetetrahydrofolate dehydrogenase, cyclohydrolase and formyltetrahydrofolate synthetase 1" +HGNC#MTM1 "myotubularin 1" +HGNC#MTMR2 "myotubularin related protein 2" +HGNC#MTOR "mechanistic target of rapamycin kinase" +HGNC#MTPAP "mitochondrial poly(A) polymerase" +HGNC#MUC1 "mucin 1, cell surface associated" +HGNC#MUC17 "mucin 17, cell surface associated" +HGNC#MUC6 "mucin 6, oligomeric mucus/gel-forming" +HGNC#MUSK "muscle associated receptor tyrosine kinase" +HGNC#MUTYH "mutY DNA glycosylase" +HGNC#MXD1 "MAX dimerization protein 1" +HGNC#MXRA5 "matrix remodeling associated 5" +HGNC#MYB "MYB proto-oncogene, transcription factor" +HGNC#MYBL1 "MYB proto-oncogene like 1" +HGNC#MYBPC1 "myosin binding protein C, slow type" +HGNC#MYBPC3 "myosin binding protein C, cardiac" +HGNC#MYC "MYC proto-oncogene, bHLH transcription factor" +HGNC#MYCBP2 "MYC binding protein 2, E3 ubiquitin protein ligase" +HGNC#MYCL "MYCL proto-oncogene, bHLH transcription factor" +HGNC#MYCN "MYCN proto-oncogene, bHLH transcription factor" +HGNC#MYD88 "MYD88, innate immune signal transduction adaptor" +HGNC#MYF6 "myogenic factor 6" +HGNC#MYH1 "myosin heavy chain 1" +HGNC#MYH10 "myosin heavy chain 10" +HGNC#MYH11 "myosin heavy chain 11" +HGNC#MYH13 "myosin heavy chain 13" +HGNC#MYH14 "myosin heavy chain 14" +HGNC#MYH15 "myosin heavy chain 15" +HGNC#MYH2 "myosin heavy chain 2" +HGNC#MYH3 "myosin heavy chain 3" +HGNC#MYH4 "myosin heavy chain 4" +HGNC#MYH6 "myosin heavy chain 6" +HGNC#MYH7 "myosin heavy chain 7" +HGNC#MYH8 "myosin heavy chain 8" +HGNC#MYH9 "myosin heavy chain 9" +HGNC#MYL2 "myosin light chain 2" +HGNC#MYL3 "myosin light chain 3" +HGNC#MYLK "myosin light chain kinase" +HGNC#MYLK2 "myosin light chain kinase 2" +HGNC#MYO15A "myosin XVA" +HGNC#MYO16 "myosin XVI" +HGNC#MYO18A "myosin XVIIIA" +HGNC#MYO1A "myosin IA" +HGNC#MYO3A "myosin IIIA" +HGNC#MYO5A "myosin VA" +HGNC#MYO5B "myosin VB" +HGNC#MYO6 "myosin VI" +HGNC#MYO7A "myosin VIIA" +HGNC#MYOCD "myocardin" +HGNC#MYOD1 "myogenic differentiation 1" +HGNC#MYOT "myotilin" +HGNC#MYOZ2 "myozenin 2" +HGNC#MYPN "myopalladin" +HGNC#NAA10 "N(alpha)-acetyltransferase 10, NatA catalytic subunit" +HGNC#NAGA "alpha-N-acetylgalactosaminidase" +HGNC#NAGLU "N-acetyl-alpha-glucosaminidase" +HGNC#NAGS "N-acetylglutamate synthase" +HGNC#NARS2 "asparaginyl-tRNA synthetase 2, mitochondrial" +HGNC#NBEAL2 "neurobeachin like 2" +HGNC#NBN "nibrin" +HGNC#NCF2 "neutrophil cytosolic factor 2" +HGNC#NCOA1 "nuclear receptor coactivator 1" +HGNC#NCOA2 "nuclear receptor coactivator 2" +HGNC#NCOR1 "nuclear receptor corepressor 1" +HGNC#NCOR2 "nuclear receptor corepressor 2" +HGNC#NDP "NDP, norrin cystine knot growth factor" +HGNC#NDST1 "N-deacetylase and N-sulfotransferase 1" +HGNC#NDUFA1 "NADH:ubiquinone oxidoreductase subunit A1" +HGNC#NDUFA10 "NADH:ubiquinone oxidoreductase subunit A10" +HGNC#NDUFA11 "NADH:ubiquinone oxidoreductase subunit A11" +HGNC#NDUFA12 "NADH:ubiquinone oxidoreductase subunit A12" +HGNC#NDUFA13 "NADH:ubiquinone oxidoreductase subunit A13" +HGNC#NDUFA2 "NADH:ubiquinone oxidoreductase subunit A2" +HGNC#NDUFA6 "NADH:ubiquinone oxidoreductase subunit A6" +HGNC#NDUFA7 "NADH:ubiquinone oxidoreductase subunit A7" +HGNC#NDUFA8 "NADH:ubiquinone oxidoreductase subunit A8" +HGNC#NDUFA9 "NADH:ubiquinone oxidoreductase subunit A9" +HGNC#NDUFAF1 "NADH:ubiquinone oxidoreductase complex assembly factor 1" +HGNC#NDUFAF2 "NADH:ubiquinone oxidoreductase complex assembly factor 2" +HGNC#NDUFAF3 "NADH:ubiquinone oxidoreductase complex assembly factor 3" +HGNC#NDUFAF4 "NADH:ubiquinone oxidoreductase complex assembly factor 4" +HGNC#NDUFAF5 "NADH:ubiquinone oxidoreductase complex assembly factor 5" +HGNC#NDUFAF6 "NADH:ubiquinone oxidoreductase complex assembly factor 6" +HGNC#NDUFB1 "NADH:ubiquinone oxidoreductase subunit B1" +HGNC#NDUFB3 "NADH:ubiquinone oxidoreductase subunit B3" +HGNC#NDUFB6 "NADH:ubiquinone oxidoreductase subunit B6" +HGNC#NDUFB9 "NADH:ubiquinone oxidoreductase subunit B9" +HGNC#NDUFC2 "NADH:ubiquinone oxidoreductase subunit C2" +HGNC#NDUFS1 "NADH:ubiquinone oxidoreductase core subunit S1" +HGNC#NDUFS2 "NADH:ubiquinone oxidoreductase core subunit S2" +HGNC#NDUFS3 "NADH:ubiquinone oxidoreductase core subunit S3" +HGNC#NDUFS4 "NADH:ubiquinone oxidoreductase subunit S4" +HGNC#NDUFS5 "NADH:ubiquinone oxidoreductase subunit S5" +HGNC#NDUFS6 "NADH:ubiquinone oxidoreductase subunit S6" +HGNC#NDUFS7 "NADH:ubiquinone oxidoreductase core subunit S7" +HGNC#NDUFS8 "NADH:ubiquinone oxidoreductase core subunit S8" +HGNC#NDUFV1 "NADH:ubiquinone oxidoreductase core subunit V1" +HGNC#NDUFV2 "NADH:ubiquinone oxidoreductase core subunit V2" +HGNC#NDUFV3 "NADH:ubiquinone oxidoreductase subunit V3" +HGNC#NEBL "nebulette" +HGNC#NEDD4L "neural precursor cell expressed, developmentally down-regulated 4-like, E3 ubiquitin protein ligase" +HGNC#NEFH "neurofilament heavy" +HGNC#NEFL "neurofilament light" +HGNC#NEGR1 "neuronal growth regulator 1" +HGNC#NEU1 "neuraminidase 1" +HGNC#NEUROD1 "neuronal differentiation 1" +HGNC#NEXMIF "neurite extension and migration factor" +HGNC#NEXN "nexilin F-actin binding protein" +HGNC#NF1 "neurofibromin 1" +HGNC#NF2 "neurofibromin 2" +HGNC#NFAT5 "nuclear factor of activated T cells 5" +HGNC#NFE2L2 "nuclear factor, erythroid 2 like 2" +HGNC#NFKB1 "nuclear factor kappa B subunit 1" +HGNC#NFKB2 "nuclear factor kappa B subunit 2" +HGNC#NFKBIA "NFKB inhibitor alpha" +HGNC#NGF "nerve growth factor" +HGNC#NHLRC1 "NHL repeat containing E3 ubiquitin protein ligase 1" +HGNC#NHP2 "NHP2 ribonucleoprotein" +HGNC#NIN "ninein" +HGNC#NIPA1 "NIPA magnesium transporter 1" +HGNC#NIPA2 "NIPA magnesium transporter 2" +HGNC#NIPBL "NIPBL, cohesin loading factor" +HGNC#NKX2-1 "NK2 homeobox 1" +HGNC#NKX2-5 "NK2 homeobox 5" +HGNC#NKX2-8 "NK2 homeobox 8" +HGNC#NKX3-2 "NK3 homeobox 2" +HGNC#NLGN3 "neuroligin 3" +HGNC#NLGN4X "neuroligin 4 X-linked" +HGNC#NLRC4 "NLR family CARD domain containing 4" +HGNC#NLRP1 "NLR family pyrin domain containing 1" +HGNC#NLRP12 "NLR family pyrin domain containing 12" +HGNC#NLRP3 "NLR family pyrin domain containing 3" +HGNC#NLRP7 "NLR family pyrin domain containing 7" +HGNC#NLRX1 "NLR family member X1" +HGNC#NME1 "NME/NM23 nucleoside diphosphate kinase 1" +HGNC#NOBOX "NOBOX oogenesis homeobox" +HGNC#NOD2 "nucleotide binding oligomerization domain containing 2" +HGNC#NOP10 "NOP10 ribonucleoprotein" +HGNC#NOTCH1 "notch 1" +HGNC#NOTCH2 "notch 2" +HGNC#NOTCH3 "notch 3" +HGNC#NPAS2 "neuronal PAS domain protein 2" +HGNC#NPC1 "NPC intracellular cholesterol transporter 1" +HGNC#NPHP1 "nephrocystin 1" +HGNC#NPHP3 "nephrocystin 3" +HGNC#NPHP4 "nephrocystin 4" +HGNC#NPHS1 "NPHS1, nephrin" +HGNC#NPPA "natriuretic peptide A" +HGNC#NPPC "natriuretic peptide C" +HGNC#NPR2 "natriuretic peptide receptor 2" +HGNC#NR0B1 "nuclear receptor subfamily 0 group B member 1" +HGNC#NR1I3 "nuclear receptor subfamily 1 group I member 3" +HGNC#NR2E3 "nuclear receptor subfamily 2 group E member 3" +HGNC#NR2F1 "nuclear receptor subfamily 2 group F member 1" +HGNC#NR2F2 "nuclear receptor subfamily 2 group F member 2" +HGNC#NR3C1 "nuclear receptor subfamily 3 group C member 1" +HGNC#NR3C2 "nuclear receptor subfamily 3 group C member 2" +HGNC#NR4A2 "nuclear receptor subfamily 4 group A member 2" +HGNC#NR4A3 "nuclear receptor subfamily 4 group A member 3" +HGNC#NR5A1 "nuclear receptor subfamily 5 group A member 1" +HGNC#NRAS "NRAS proto-oncogene, GTPase" +HGNC#NRG1 "neuregulin 1" +HGNC#NRL "neural retina leucine zipper" +HGNC#NRXN1 "neurexin 1" +HGNC#NSD1 "nuclear receptor binding SET domain protein 1" +HGNC#NSD2 "nuclear receptor binding SET domain protein 2" +HGNC#NSDHL "NAD(P) dependent steroid dehydrogenase-like" +HGNC#NSUN2 "NOP2/Sun RNA methyltransferase family member 2" +HGNC#NT5C2 "5'-nucleotidase, cytosolic II" +HGNC#NT5C3A "5'-nucleotidase, cytosolic IIIA" +HGNC#NTF4 "neurotrophin 4" +HGNC#NTHL1 "nth like DNA glycosylase 1" +HGNC#NTN4 "netrin 4" +HGNC#NTNG1 "netrin G1" +HGNC#NTRK1 "neurotrophic receptor tyrosine kinase 1" +HGNC#NTRK2 "neurotrophic receptor tyrosine kinase 2" +HGNC#NTRK3 "neurotrophic receptor tyrosine kinase 3" +HGNC#NUBPL "nucleotide binding protein like" +HGNC#NUDT15 "nudix hydrolase 15" +HGNC#NUMBL "NUMB like, endocytic adaptor protein" +HGNC#NUP214 "nucleoporin 214" +HGNC#NUP93 "nucleoporin 93" +HGNC#NUP98 "nucleoporin 98" +HGNC#NWD1 "NACHT and WD repeat domain containing 1" +HGNC#OBSL1 "obscurin like 1" +HGNC#OCRL "OCRL, inositol polyphosphate-5-phosphatase" +HGNC#OGG1 "8-oxoguanine DNA glycosylase" +HGNC#OPHN1 "oligophrenin 1" +HGNC#OPN1LW "opsin 1, long wave sensitive" +HGNC#OPN1MW "opsin 1, medium wave sensitive" +HGNC#OPRM1 "opioid receptor mu 1" +HGNC#OR14A16 "olfactory receptor family 14 subfamily A member 16" +HGNC#OR1S2 "olfactory receptor family 1 subfamily S member 2" +HGNC#OR2T1 "olfactory receptor family 2 subfamily T member 1" +HGNC#OR2Z1 "olfactory receptor family 2 subfamily Z member 1" +HGNC#OR4C12 "olfactory receptor family 4 subfamily C member 12" +HGNC#OR5AC2 "olfactory receptor family 5 subfamily AC member 2" +HGNC#OR5L1 "olfactory receptor family 5 subfamily L member 1 (gene/pseudogene)" +HGNC#OR6K2 "olfactory receptor family 6 subfamily K member 2" +HGNC#OR8K3 "olfactory receptor family 8 subfamily K member 3 (gene/pseudogene)" +HGNC#ORC1 "origin recognition complex subunit 1" +HGNC#ORC4 "origin recognition complex subunit 4" +HGNC#ORC6 "origin recognition complex subunit 6" +HGNC#OSBPL2 "oxysterol binding protein like 2" +HGNC#OTOA "otoancorin" +HGNC#OTOF "otoferlin" +HGNC#OTX2 "orthodenticle homeobox 2" +HGNC#P2RX2 "purinergic receptor P2X 2" +HGNC#P2RY8 "P2Y receptor family member 8" +HGNC#P4HB "prolyl 4-hydroxylase subunit beta" +HGNC#PACRG "parkin coregulated" +HGNC#PAFAH1B1 "platelet activating factor acetylhydrolase 1b regulatory subunit 1" +HGNC#PAK3 "p21 (RAC1) activated kinase 3" +HGNC#PALB2 "partner and localizer of BRCA2" +HGNC#PALLD "palladin, cytoskeletal associated protein" +HGNC#PARD3 "par-3 family cell polarity regulator" +HGNC#PARK7 "Parkinsonism associated deglycase" +HGNC#PARL "presenilin associated rhomboid like" +HGNC#PARP1 "poly(ADP-ribose) polymerase 1" +HGNC#PATZ1 "POZ/BTB and AT hook containing zinc finger 1" +HGNC#PAX2 "paired box 2" +HGNC#PAX3 "paired box 3" +HGNC#PAX4 "paired box 4" +HGNC#PAX5 "paired box 5" +HGNC#PAX6 "paired box 6" +HGNC#PAX7 "paired box 7" +HGNC#PAX8 "paired box 8" +HGNC#PAX9 "paired box 9" +HGNC#PBRM1 "polybromo 1" +HGNC#PCDH15 "protocadherin related 15" +HGNC#PCDH19 "protocadherin 19" +HGNC#PCDH9 "protocadherin 9" +HGNC#PCDHA1 "protocadherin alpha 1" +HGNC#PCDHA10 "protocadherin alpha 10" +HGNC#PCDHA2 "protocadherin alpha 2" +HGNC#PCDHA4 "protocadherin alpha 4" +HGNC#PCDHA5 "protocadherin alpha 5" +HGNC#PCDHA6 "protocadherin alpha 6" +HGNC#PCDHA7 "protocadherin alpha 7" +HGNC#PCDHA8 "protocadherin alpha 8" +HGNC#PCDHA9 "protocadherin alpha 9" +HGNC#PCDHB1 "protocadherin beta 1" +HGNC#PCSK1 "proprotein convertase subtilisin/kexin type 1" +HGNC#PCSK9 "proprotein convertase subtilisin/kexin type 9" +HGNC#PDCD1 "programmed cell death 1" +HGNC#PDCD10 "programmed cell death 10" +HGNC#PDCD11 "programmed cell death 11" +HGNC#PDCD1LG2 "programmed cell death 1 ligand 2" +HGNC#PDE10A "phosphodiesterase 10A" +HGNC#PDE1C "phosphodiesterase 1C" +HGNC#PDE4D "phosphodiesterase 4D" +HGNC#PDE6A "phosphodiesterase 6A" +HGNC#PDE6B "phosphodiesterase 6B" +HGNC#PDE6C "phosphodiesterase 6C" +HGNC#PDE6G "phosphodiesterase 6G" +HGNC#PDE6H "phosphodiesterase 6H" +HGNC#PDE7B "phosphodiesterase 7B" +HGNC#PDE8B "phosphodiesterase 8B" +HGNC#PDGFRA "platelet derived growth factor receptor alpha" +HGNC#PDGFRB "platelet derived growth factor receptor beta" +HGNC#PDHA1 "pyruvate dehydrogenase E1 alpha 1 subunit" +HGNC#PDHB "pyruvate dehydrogenase E1 beta subunit" +HGNC#PDHX "pyruvate dehydrogenase complex component X" +HGNC#PDLIM3 "PDZ and LIM domain 3" +HGNC#PDP1 "pyruvate dehyrogenase phosphatase catalytic subunit 1" +HGNC#PDP2 "pyruvate dehyrogenase phosphatase catalytic subunit 2" +HGNC#PDPK1 "3-phosphoinositide dependent protein kinase 1" +HGNC#PDX1 "pancreatic and duodenal homeobox 1" +HGNC#PDYN "prodynorphin" +HGNC#PDZD7 "PDZ domain containing 7" +HGNC#PEX1 "peroxisomal biogenesis factor 1" +HGNC#PEX10 "peroxisomal biogenesis factor 10" +HGNC#PEX11B "peroxisomal biogenesis factor 11 beta" +HGNC#PEX12 "peroxisomal biogenesis factor 12" +HGNC#PEX13 "peroxisomal biogenesis factor 13" +HGNC#PEX14 "peroxisomal biogenesis factor 14" +HGNC#PEX16 "peroxisomal biogenesis factor 16" +HGNC#PEX19 "peroxisomal biogenesis factor 19" +HGNC#PEX2 "peroxisomal biogenesis factor 2" +HGNC#PEX26 "peroxisomal biogenesis factor 26" +HGNC#PEX3 "peroxisomal biogenesis factor 3" +HGNC#PEX5 "peroxisomal biogenesis factor 5" +HGNC#PEX6 "peroxisomal biogenesis factor 6" +HGNC#PEX7 "peroxisomal biogenesis factor 7" +HGNC#PFKM "phosphofructokinase, muscle" +HGNC#PGAM2 "phosphoglycerate mutase 2" +HGNC#PHEX "phosphate regulating endopeptidase homolog X-linked" +HGNC#PHF2 "PHD finger protein 2" +HGNC#PHF6 "PHD finger protein 6" +HGNC#PHF7 "PHD finger protein 7" +HGNC#PHF8 "PHD finger protein 8" +HGNC#PHOX2A "paired like homeobox 2A" +HGNC#PHOX2B "paired like homeobox 2B" +HGNC#PIAS4 "protein inhibitor of activated STAT 4" +HGNC#PICK1 "protein interacting with PRKCA 1" +HGNC#PIEZO2 "piezo type mechanosensitive ion channel component 2" +HGNC#PIGA "phosphatidylinositol glycan anchor biosynthesis class A" +HGNC#PIGH "phosphatidylinositol glycan anchor biosynthesis class H" +HGNC#PIGL "phosphatidylinositol glycan anchor biosynthesis class L" +HGNC#PIGM "phosphatidylinositol glycan anchor biosynthesis class M" +HGNC#PIGN "phosphatidylinositol glycan anchor biosynthesis class N" +HGNC#PIGO "phosphatidylinositol glycan anchor biosynthesis class O" +HGNC#PIGV "phosphatidylinositol glycan anchor biosynthesis class V" +HGNC#PIK3C2B "phosphatidylinositol-4-phosphate 3-kinase catalytic subunit type 2 beta" +HGNC#PIK3CA "phosphatidylinositol-4,5-bisphosphate 3-kinase catalytic subunit alpha" +HGNC#PIK3CB "phosphatidylinositol-4,5-bisphosphate 3-kinase catalytic subunit beta" +HGNC#PIK3CD "phosphatidylinositol-4,5-bisphosphate 3-kinase catalytic subunit delta" +HGNC#PIK3CG "phosphatidylinositol-4,5-bisphosphate 3-kinase catalytic subunit gamma" +HGNC#PIK3R1 "phosphoinositide-3-kinase regulatory subunit 1" +HGNC#PIK3R2 "phosphoinositide-3-kinase regulatory subunit 2" +HGNC#PIKFYVE "phosphoinositide kinase, FYVE-type zinc finger containing" +HGNC#PINK1 "PTEN induced kinase 1" +HGNC#PITPNM3 "PITPNM family member 3" +HGNC#PITX1 "paired like homeodomain 1" +HGNC#PITX2 "paired like homeodomain 2" +HGNC#PITX3 "paired like homeodomain 3" +HGNC#PJVK "pejvakin" +HGNC#PKD1 "polycystin 1, transient receptor potential channel interacting" +HGNC#PKD2 "polycystin 2, transient receptor potential cation channel" +HGNC#PKD2L1 "polycystin 2 like 1, transient receptor potential cation channel" +HGNC#PKN1 "protein kinase N1" +HGNC#PKP1 "plakophilin 1" +HGNC#PKP2 "plakophilin 2" +HGNC#PLA2G2A "phospholipase A2 group IIA" +HGNC#PLA2G5 "phospholipase A2 group V" +HGNC#PLA2G6 "phospholipase A2 group VI" +HGNC#PLAG1 "PLAG1 zinc finger" +HGNC#PLB1 "phospholipase B1" +HGNC#PLCB1 "phospholipase C beta 1" +HGNC#PLCB4 "phospholipase C beta 4" +HGNC#PLCE1 "phospholipase C epsilon 1" +HGNC#PLCG2 "phospholipase C gamma 2" +HGNC#PLEKHG1 "pleckstrin homology and RhoGEF domain containing G1" +HGNC#PLEKHG4B "pleckstrin homology and RhoGEF domain containing G4B" +HGNC#PLEKHG5 "pleckstrin homology and RhoGEF domain containing G5" +HGNC#PLS3 "plastin 3" +HGNC#PML "promyelocytic leukemia" +HGNC#PMM2 "phosphomannomutase 2" +HGNC#PMPCA "peptidase, mitochondrial processing alpha subunit" +HGNC#PMS1 "PMS1 homolog 1, mismatch repair system component" +HGNC#PMS2 "PMS1 homolog 2, mismatch repair system component" +HGNC#PNKP "polynucleotide kinase 3'-phosphatase" +HGNC#PNMT "phenylethanolamine N-methyltransferase" +HGNC#PNPLA1 "patatin like phospholipase domain containing 1" +HGNC#PNPLA2 "patatin like phospholipase domain containing 2" +HGNC#PNPLA6 "patatin like phospholipase domain containing 6" +HGNC#PNPT1 "polyribonucleotide nucleotidyltransferase 1" +HGNC#POC1A "POC1 centriolar protein A" +HGNC#PODN "podocan" +HGNC#POGZ "pogo transposable element derived with ZNF domain" +HGNC#POLD1 "DNA polymerase delta 1, catalytic subunit" +HGNC#POLE "DNA polymerase epsilon, catalytic subunit" +HGNC#POLG "DNA polymerase gamma, catalytic subunit" +HGNC#POLG2 "DNA polymerase gamma 2, accessory subunit" +HGNC#POLH "DNA polymerase eta" +HGNC#POLK "DNA polymerase kappa" +HGNC#POLN "DNA polymerase nu" +HGNC#POLR1C "RNA polymerase I and III subunit C" +HGNC#POLR1D "RNA polymerase I and III subunit D" +HGNC#POLR3A "RNA polymerase III subunit A" +HGNC#POLR3B "RNA polymerase III subunit B" +HGNC#POMC "proopiomelanocortin" +HGNC#POMGNT1 "protein O-linked mannose N-acetylglucosaminyltransferase 1 (beta 1,2-)" +HGNC#POMT1 "protein O-mannosyltransferase 1" +HGNC#POMT2 "protein O-mannosyltransferase 2" +HGNC#PON3 "paraoxonase 3" +HGNC#PORCN "porcupine O-acyltransferase" +HGNC#POT1 "protection of telomeres 1" +HGNC#POU1F1 "POU class 1 homeobox 1" +HGNC#POU2F2 "POU class 2 homeobox 2" +HGNC#POU3F4 "POU class 3 homeobox 4" +HGNC#POU4F3 "POU class 4 homeobox 3" +HGNC#POU5F1 "POU class 5 homeobox 1" +HGNC#POU6F2 "POU class 6 homeobox 2" +HGNC#PPARG "peroxisome proliferator activated receptor gamma" +HGNC#PPARGC1A "PPARG coactivator 1 alpha" +HGNC#PPARGC1B "PPARG coactivator 1 beta" +HGNC#PPIB "peptidylprolyl isomerase B" +HGNC#PPM1D "protein phosphatase, Mg2+/Mn2+ dependent 1D" +HGNC#PPP1R15A "protein phosphatase 1 regulatory subunit 15A" +HGNC#PPP1R3C "protein phosphatase 1 regulatory subunit 3C" +HGNC#PPP2R1A "protein phosphatase 2 scaffold subunit Aalpha" +HGNC#PPP2R1B "protein phosphatase 2 scaffold subunit Abeta" +HGNC#PPP2R2A "protein phosphatase 2 regulatory subunit Balpha" +HGNC#PPP2R5C "protein phosphatase 2 regulatory subunit B'gamma" +HGNC#PPP6C "protein phosphatase 6 catalytic subunit" +HGNC#PPP6R2 "protein phosphatase 6 regulatory subunit 2" +HGNC#PPRC1 "peroxisome proliferator-activated receptor gamma, coactivator-related 1" +HGNC#PQBP1 "polyglutamine binding protein 1" +HGNC#PRCC "proline rich mitotic checkpoint control factor" +HGNC#PRDM1 "PR/SET domain 1" +HGNC#PRDM16 "PR/SET domain 16" +HGNC#PRDM5 "PR/SET domain 5" +HGNC#PREX2 "phosphatidylinositol-3,4,5-trisphosphate dependent Rac exchange factor 2" +HGNC#PRF1 "perforin 1" +HGNC#PRICKLE1 "prickle planar cell polarity protein 1" +HGNC#PRICKLE2 "prickle planar cell polarity protein 2" +HGNC#PRKCA "protein kinase C alpha" +HGNC#PRKCB "protein kinase C beta" +HGNC#PRKCD "protein kinase C delta" +HGNC#PRKCG "protein kinase C gamma" +HGNC#PRKCI "protein kinase C iota" +HGNC#PRKCSH "protein kinase C substrate 80K-H" +HGNC#PRKDC "protein kinase, DNA-activated, catalytic subunit" +HGNC#PRKG1 "protein kinase cGMP-dependent 1" +HGNC#PRKN "parkin RBR E3 ubiquitin protein ligase" +HGNC#PRNP "prion protein" +HGNC#PROC "protein C, inactivator of coagulation factors Va and VIIIa" +HGNC#PROK2 "prokineticin 2" +HGNC#PROKR2 "prokineticin receptor 2" +HGNC#PROM1 "prominin 1" +HGNC#PROP1 "PROP paired-like homeobox 1" +HGNC#PROS1 "protein S" +HGNC#PRPF3 "pre-mRNA processing factor 3" +HGNC#PRPF31 "pre-mRNA processing factor 31" +HGNC#PRPF6 "pre-mRNA processing factor 6" +HGNC#PRPF8 "pre-mRNA processing factor 8" +HGNC#PRPH2 "peripherin 2" +HGNC#PRPS1 "phosphoribosyl pyrophosphate synthetase 1" +HGNC#PRRT2 "proline rich transmembrane protein 2" +HGNC#PRSS1 "serine protease 1" +HGNC#PRSS12 "serine protease 12" +HGNC#PRSS2 "serine protease 2" +HGNC#PRSS22 "serine protease 22" +HGNC#PRSS8 "serine protease 8" +HGNC#PRX "periaxin" +HGNC#PSAP "prosaposin" +HGNC#PSMB8 "proteasome subunit beta 8" +HGNC#PSPH "phosphoserine phosphatase" +HGNC#PSTPIP1 "proline-serine-threonine phosphatase interacting protein 1" +HGNC#PTEN "phosphatase and tensin homolog" +HGNC#PTGES2 "prostaglandin E synthase 2" +HGNC#PTH "parathyroid hormone" +HGNC#PTH1R "parathyroid hormone 1 receptor" +HGNC#PTHLH "parathyroid hormone like hormone" +HGNC#PTK2B "protein tyrosine kinase 2 beta" +HGNC#PTPN11 "protein tyrosine phosphatase, non-receptor type 11" +HGNC#PTPN13 "protein tyrosine phosphatase, non-receptor type 13" +HGNC#PTPN21 "protein tyrosine phosphatase, non-receptor type 21" +HGNC#PTPN22 "protein tyrosine phosphatase, non-receptor type 22" +HGNC#PTPN3 "protein tyrosine phosphatase, non-receptor type 3" +HGNC#PTPRC "protein tyrosine phosphatase, receptor type C" +HGNC#PTPRD "protein tyrosine phosphatase, receptor type D" +HGNC#PUS1 "pseudouridine synthase 1" +HGNC#PYGL "glycogen phosphorylase L" +HGNC#PYGM "glycogen phosphorylase, muscle associated" +HGNC#PYHIN1 "pyrin and HIN domain family member 1" +HGNC#QARS "glutaminyl-tRNA synthetase" +HGNC#QDPR "quinoid dihydropteridine reductase" +HGNC#RAB11FIP5 "RAB11 family interacting protein 5" +HGNC#RAB18 "RAB18, member RAS oncogene family" +HGNC#RAB23 "RAB23, member RAS oncogene family" +HGNC#RAB27A "RAB27A, member RAS oncogene family" +HGNC#RAB33B "RAB33B, member RAS oncogene family" +HGNC#RAB39B "RAB39B, member RAS oncogene family" +HGNC#RAB7A "RAB7A, member RAS oncogene family" +HGNC#RAC1 "Rac family small GTPase 1" +HGNC#RAC2 "Rac family small GTPase 2" +HGNC#RAD21 "RAD21 cohesin complex component" +HGNC#RAD50 "RAD50 double strand break repair protein" +HGNC#RAD51 "RAD51 recombinase" +HGNC#RAD51C "RAD51 paralog C" +HGNC#RAF1 "Raf-1 proto-oncogene, serine/threonine kinase" +HGNC#RAG1 "recombination activating 1" +HGNC#RANBP2 "RAN binding protein 2" +HGNC#RAPSN "receptor associated protein of the synapse" +HGNC#RARA "retinoic acid receptor alpha" +HGNC#RARS2 "arginyl-tRNA synthetase 2, mitochondrial" +HGNC#RASA1 "RAS p21 protein activator 1" +HGNC#RASAL2 "RAS protein activator like 2" +HGNC#RASGRP2 "RAS guanyl releasing protein 2" +HGNC#RASSF1 "Ras association domain family member 1" +HGNC#RAX "retina and anterior neural fold homeobox" +HGNC#RAX2 "retina and anterior neural fold homeobox 2" +HGNC#RB1 "RB transcriptional corepressor 1" +HGNC#RB1CC1 "RB1 inducible coiled-coil 1" +HGNC#RBAK "RB associated KRAB zinc finger" +HGNC#RBBP8 "RB binding protein 8, endonuclease" +HGNC#RBCK1 "RANBP2-type and C3HC4-type zinc finger containing 1" +HGNC#RBFOX1 "RNA binding fox-1 homolog 1" +HGNC#RBFOX3 "RNA binding fox-1 homolog 3" +HGNC#RBM10 "RNA binding motif protein 10" +HGNC#RBM15 "RNA binding motif protein 15" +HGNC#RBM20 "RNA binding motif protein 20" +HGNC#RBP4 "retinol binding protein 4" +HGNC#RBPJ "recombination signal binding protein for immunoglobulin kappa J region" +HGNC#RDH12 "retinol dehydrogenase 12" +HGNC#RDH5 "retinol dehydrogenase 5" +HGNC#RDX "radixin" +HGNC#RECQL4 "RecQ like helicase 4" +HGNC#REEP1 "receptor accessory protein 1" +HGNC#RELA "RELA proto-oncogene, NF-kB subunit" +HGNC#RERGL "RERG like" +HGNC#RET "ret proto-oncogene" +HGNC#RFX5 "regulatory factor X5" +HGNC#RFX6 "regulatory factor X6" +HGNC#RFXANK "regulatory factor X associated ankyrin containing protein" +HGNC#RGR "retinal G protein coupled receptor" +HGNC#RGS9 "regulator of G protein signaling 9" +HGNC#RHBDF2 "rhomboid 5 homolog 2" +HGNC#RHEB "Ras homolog, mTORC1 binding" +HGNC#RHO "rhodopsin" +HGNC#RHOA "ras homolog family member A" +HGNC#RHOBTB2 "Rho related BTB domain containing 2" +HGNC#RHOH "ras homolog family member H" +HGNC#RICTOR "RPTOR independent companion of MTOR complex 2" +HGNC#RIMS1 "regulating synaptic membrane exocytosis 1" +HGNC#RIN2 "Ras and Rab interactor 2" +HGNC#RIPK4 "receptor interacting serine/threonine kinase 4" +HGNC#RIPOR2 "RHO family interacting cell polarization regulator 2" +HGNC#RIT1 "Ras like without CAAX 1" +HGNC#RLIM "ring finger protein, LIM domain interacting" +HGNC#RNASEL "ribonuclease L" +HGNC#RNF135 "ring finger protein 135" +HGNC#RNF139 "ring finger protein 139" +HGNC#RNF43 "ring finger protein 43" +HGNC#RNU4ATAC "RNA, U4atac small nuclear (U12-dependent splicing)" +HGNC#ROBO2 "roundabout guidance receptor 2" +HGNC#ROBO3 "roundabout guidance receptor 3" +HGNC#ROM1 "retinal outer segment membrane protein 1" +HGNC#ROR2 "receptor tyrosine kinase like orphan receptor 2" +HGNC#ROS1 "ROS proto-oncogene 1, receptor tyrosine kinase" +HGNC#RP1 "RP1, axonemal microtubule associated" +HGNC#RP1L1 "RP1 like 1" +HGNC#RPGRIP1 "RPGR interacting protein 1" +HGNC#RPGRIP1L "RPGRIP1 like" +HGNC#RPL10 "ribosomal protein L10" +HGNC#RPL10L "ribosomal protein L10 like" +HGNC#RPL11 "ribosomal protein L11" +HGNC#RPL35A "ribosomal protein L35a" +HGNC#RPL5 "ribosomal protein L5" +HGNC#RPN2 "ribophorin II" +HGNC#RPS10 "ribosomal protein S10" +HGNC#RPS14 "ribosomal protein S14" +HGNC#RPS15 "ribosomal protein S15" +HGNC#RPS19 "ribosomal protein S19" +HGNC#RPS24 "ribosomal protein S24" +HGNC#RPS26 "ribosomal protein S26" +HGNC#RPS6KA3 "ribosomal protein S6 kinase A3" +HGNC#RPS6KB1 "ribosomal protein S6 kinase B1" +HGNC#RPS6KC1 "ribosomal protein S6 kinase C1" +HGNC#RPS7 "ribosomal protein S7" +HGNC#RPTOR "regulatory associated protein of MTOR complex 1" +HGNC#RSF1 "remodeling and spacing factor 1" +HGNC#RSPO1 "R-spondin 1" +HGNC#RSPO2 "R-spondin 2" +HGNC#RSPO3 "R-spondin 3" +HGNC#RTEL1 "regulator of telomere elongation helicase 1" +HGNC#RTTN "rotatin" +HGNC#RUBCNL "rubicon like autophagy regulator" +HGNC#RUNX1T1 "RUNX1 translocation partner 1" +HGNC#RXRA "retinoid X receptor alpha" +HGNC#RYR1 "ryanodine receptor 1" +HGNC#RYR2 "ryanodine receptor 2" +HGNC#RYR3 "ryanodine receptor 3" +HGNC#SACS "sacsin molecular chaperone" +HGNC#SAG "S-antigen visual arrestin" +HGNC#SALL1 "spalt like transcription factor 1" +HGNC#SALL4 "spalt like transcription factor 4" +HGNC#SAMD9 "sterile alpha motif domain containing 9" +HGNC#SAMD9L "sterile alpha motif domain containing 9 like" +HGNC#SAMHD1 "SAM and HD domain containing deoxynucleoside triphosphate triphosphohydrolase 1" +HGNC#SARS2 "seryl-tRNA synthetase 2, mitochondrial" +HGNC#SATB2 "SATB homeobox 2" +HGNC#SBF2 "SET binding factor 2" +HGNC#SC5D "sterol-C5-desaturase" +HGNC#SCARB2 "scavenger receptor class B member 2" +HGNC#SCG5 "secretogranin V" +HGNC#SCN10A "sodium voltage-gated channel alpha subunit 10" +HGNC#SCN11A "sodium voltage-gated channel alpha subunit 11" +HGNC#SCN1A "sodium voltage-gated channel alpha subunit 1" +HGNC#SCN1B "sodium voltage-gated channel beta subunit 1" +HGNC#SCN2A "sodium voltage-gated channel alpha subunit 2" +HGNC#SCN2B "sodium voltage-gated channel beta subunit 2" +HGNC#SCN3A "sodium voltage-gated channel alpha subunit 3" +HGNC#SCN3B "sodium voltage-gated channel beta subunit 3" +HGNC#SCN4A "sodium voltage-gated channel alpha subunit 4" +HGNC#SCN4B "sodium voltage-gated channel beta subunit 4" +HGNC#SCN5A "sodium voltage-gated channel alpha subunit 5" +HGNC#SCN8A "sodium voltage-gated channel alpha subunit 8" +HGNC#SCN9A "sodium voltage-gated channel alpha subunit 9" +HGNC#SCNN1A "sodium channel epithelial 1 alpha subunit" +HGNC#SCNN1B "sodium channel epithelial 1 beta subunit" +HGNC#SCO1 "SCO1, cytochrome c oxidase assembly protein" +HGNC#SCO2 "SCO2, cytochrome c oxidase assembly protein" +HGNC#SDCCAG8 "serologically defined colon cancer antigen 8" +HGNC#SDHA "succinate dehydrogenase complex flavoprotein subunit A" +HGNC#SDHAF1 "succinate dehydrogenase complex assembly factor 1" +HGNC#SDHAF2 "succinate dehydrogenase complex assembly factor 2" +HGNC#SDHB "succinate dehydrogenase complex iron sulfur subunit B" +HGNC#SDHC "succinate dehydrogenase complex subunit C" +HGNC#SDHD "succinate dehydrogenase complex subunit D" +HGNC#SEC63 "SEC63 homolog, protein translocation regulator" +HGNC#SEM1 "SEM1, 26S proteasome complex subunit" +HGNC#SEMA3A "semaphorin 3A" +HGNC#SEMA3C "semaphorin 3C" +HGNC#SEMA4A "semaphorin 4A" +HGNC#SEPT9 "septin 9" +HGNC#SERAC1 "serine active site containing 1" +HGNC#SERPINA1 "serpin family A member 1" +HGNC#SERPINB4 "serpin family B member 4" +HGNC#SERPINB6 "serpin family B member 6" +HGNC#SERPINC1 "serpin family C member 1" +HGNC#SERPINE1 "serpin family E member 1" +HGNC#SERPINF1 "serpin family F member 1" +HGNC#SERPING1 "serpin family G member 1" +HGNC#SERPINH1 "serpin family H member 1" +HGNC#SERPINI1 "serpin family I member 1" +HGNC#SETD2 "SET domain containing 2" +HGNC#SETD5 "SET domain containing 5" +HGNC#SETX "senataxin" +HGNC#SEZ6L "seizure related 6 homolog like" +HGNC#SF3B1 "splicing factor 3b subunit 1" +HGNC#SF3B3 "splicing factor 3b subunit 3" +HGNC#SF3B4 "splicing factor 3b subunit 4" +HGNC#SFTPC "surfactant protein C" +HGNC#SGSH "N-sulfoglucosamine sulfohydrolase" +HGNC#SH2B3 "SH2B adaptor protein 3" +HGNC#SH2D1A "SH2 domain containing 1A" +HGNC#SH3BP2 "SH3 domain binding protein 2" +HGNC#SH3TC2 "SH3 domain and tetratricopeptide repeats 2" +HGNC#SHANK2 "SH3 and multiple ankyrin repeat domains 2" +HGNC#SHANK3 "SH3 and multiple ankyrin repeat domains 3" +HGNC#SHH "sonic hedgehog signaling molecule" +HGNC#SHOX "short stature homeobox" +HGNC#SHOX2 "short stature homeobox 2" +HGNC#SHROOM4 "shroom family member 4" +HGNC#SI "sucrase-isomaltase" +HGNC#SIGIRR "single Ig and TIR domain containing" +HGNC#SIL1 "SIL1 nucleotide exchange factor" +HGNC#SIM1 "SIM bHLH transcription factor 1" +HGNC#SIN3A "SIN3 transcription regulator family member A" +HGNC#SIRT1 "sirtuin 1" +HGNC#SIRT3 "sirtuin 3" +HGNC#SIRT5 "sirtuin 5" +HGNC#SIX1 "SIX homeobox 1" +HGNC#SIX3 "SIX homeobox 3" +HGNC#SIX5 "SIX homeobox 5" +HGNC#SIX6 "SIX homeobox 6" +HGNC#SKI "SKI proto-oncogene" +HGNC#SKIL "SKI like proto-oncogene" +HGNC#SKIV2L "Ski2 like RNA helicase" +HGNC#SLC11A2 "solute carrier family 11 member 2" +HGNC#SLC12A1 "solute carrier family 12 member 1" +HGNC#SLC12A3 "solute carrier family 12 member 3" +HGNC#SLC12A5 "solute carrier family 12 member 5" +HGNC#SLC12A6 "solute carrier family 12 member 6" +HGNC#SLC13A3 "solute carrier family 13 member 3" +HGNC#SLC13A5 "solute carrier family 13 member 5" +HGNC#SLC16A1 "solute carrier family 16 member 1" +HGNC#SLC16A2 "solute carrier family 16 member 2" +HGNC#SLC17A5 "solute carrier family 17 member 5" +HGNC#SLC17A8 "solute carrier family 17 member 8" +HGNC#SLC19A1 "solute carrier family 19 member 1" +HGNC#SLC19A2 "solute carrier family 19 member 2" +HGNC#SLC19A3 "solute carrier family 19 member 3" +HGNC#SLC1A1 "solute carrier family 1 member 1" +HGNC#SLC1A3 "solute carrier family 1 member 3" +HGNC#SLC20A2 "solute carrier family 20 member 2" +HGNC#SLC22A12 "solute carrier family 22 member 12" +HGNC#SLC22A18 "solute carrier family 22 member 18" +HGNC#SLC22A4 "solute carrier family 22 member 4" +HGNC#SLC22A5 "solute carrier family 22 member 5" +HGNC#SLC24A1 "solute carrier family 24 member 1" +HGNC#SLC25A1 "solute carrier family 25 member 1" +HGNC#SLC25A12 "solute carrier family 25 member 12" +HGNC#SLC25A13 "solute carrier family 25 member 13" +HGNC#SLC25A15 "solute carrier family 25 member 15" +HGNC#SLC25A19 "solute carrier family 25 member 19" +HGNC#SLC25A20 "solute carrier family 25 member 20" +HGNC#SLC25A22 "solute carrier family 25 member 22" +HGNC#SLC25A3 "solute carrier family 25 member 3" +HGNC#SLC25A38 "solute carrier family 25 member 38" +HGNC#SLC25A39 "solute carrier family 25 member 39" +HGNC#SLC25A4 "solute carrier family 25 member 4" +HGNC#SLC25A47 "solute carrier family 25 member 47" +HGNC#SLC26A2 "solute carrier family 26 member 2" +HGNC#SLC26A3 "solute carrier family 26 member 3" +HGNC#SLC26A4 "solute carrier family 26 member 4" +HGNC#SLC26A5 "solute carrier family 26 member 5" +HGNC#SLC26A8 "solute carrier family 26 member 8" +HGNC#SLC27A4 "solute carrier family 27 member 4" +HGNC#SLC29A1 "solute carrier family 29 member 1 (Augustine blood group)" +HGNC#SLC29A3 "solute carrier family 29 member 3" +HGNC#SLC2A1 "solute carrier family 2 member 1" +HGNC#SLC2A10 "solute carrier family 2 member 10" +HGNC#SLC2A2 "solute carrier family 2 member 2" +HGNC#SLC2A9 "solute carrier family 2 member 9" +HGNC#SLC30A10 "solute carrier family 30 member 10" +HGNC#SLC33A1 "solute carrier family 33 member 1" +HGNC#SLC34A1 "solute carrier family 34 member 1" +HGNC#SLC34A3 "solute carrier family 34 member 3" +HGNC#SLC35A1 "solute carrier family 35 member A1" +HGNC#SLC35A2 "solute carrier family 35 member A2" +HGNC#SLC35C1 "solute carrier family 35 member C1" +HGNC#SLC35D1 "solute carrier family 35 member D1" +HGNC#SLC35G1 "solute carrier family 35 member G1" +HGNC#SLC37A4 "solute carrier family 37 member 4" +HGNC#SLC39A13 "solute carrier family 39 member 13" +HGNC#SLC39A4 "solute carrier family 39 member 4" +HGNC#SLC3A1 "solute carrier family 3 member 1" +HGNC#SLC40A1 "solute carrier family 40 member 1" +HGNC#SLC45A2 "solute carrier family 45 member 2" +HGNC#SLC46A1 "solute carrier family 46 member 1" +HGNC#SLC46A3 "solute carrier family 46 member 3" +HGNC#SLC47A2 "solute carrier family 47 member 2" +HGNC#SLC4A1 "solute carrier family 4 member 1 (Diego blood group)" +HGNC#SLC4A10 "solute carrier family 4 member 10" +HGNC#SLC4A11 "solute carrier family 4 member 11" +HGNC#SLC4A4 "solute carrier family 4 member 4" +HGNC#SLC5A1 "solute carrier family 5 member 1" +HGNC#SLC5A2 "solute carrier family 5 member 2" +HGNC#SLC5A5 "solute carrier family 5 member 5" +HGNC#SLC5A7 "solute carrier family 5 member 7" +HGNC#SLC6A1 "solute carrier family 6 member 1" +HGNC#SLC6A17 "solute carrier family 6 member 17" +HGNC#SLC6A2 "solute carrier family 6 member 2" +HGNC#SLC6A20 "solute carrier family 6 member 20" +HGNC#SLC6A3 "solute carrier family 6 member 3" +HGNC#SLC6A4 "solute carrier family 6 member 4" +HGNC#SLC6A5 "solute carrier family 6 member 5" +HGNC#SLC6A8 "solute carrier family 6 member 8" +HGNC#SLC6A9 "solute carrier family 6 member 9" +HGNC#SLC7A7 "solute carrier family 7 member 7" +HGNC#SLC7A9 "solute carrier family 7 member 9" +HGNC#SLC8A3 "solute carrier family 8 member A3" +HGNC#SLC9A3R1 "SLC9A3 regulator 1" +HGNC#SLC9A6 "solute carrier family 9 member A6" +HGNC#SLC9A9 "solute carrier family 9 member A9" +HGNC#SLCO1B1 "solute carrier organic anion transporter family member 1B1" +HGNC#SLCO1B3 "solute carrier organic anion transporter family member 1B3" +HGNC#SLCO2A1 "solute carrier organic anion transporter family member 2A1" +HGNC#SLURP1 "secreted LY6/PLAUR domain containing 1" +HGNC#SLX4 "SLX4 structure-specific endonuclease subunit" +HGNC#SMAD2 "SMAD family member 2" +HGNC#SMAD3 "SMAD family member 3" +HGNC#SMAD4 "SMAD family member 4" +HGNC#SMAD6 "SMAD family member 6" +HGNC#SMAD7 "SMAD family member 7" +HGNC#SMAD9 "SMAD family member 9" +HGNC#SMARCA1 "SWI/SNF related, matrix associated, actin dependent regulator of chromatin, subfamily a, member 1" +HGNC#SMARCA2 "SWI/SNF related, matrix associated, actin dependent regulator of chromatin, subfamily a, member 2" +HGNC#SMARCA4 "SWI/SNF related, matrix associated, actin dependent regulator of chromatin, subfamily a, member 4" +HGNC#SMARCB1 "SWI/SNF related, matrix associated, actin dependent regulator of chromatin, subfamily b, member 1" +HGNC#SMARCE1 "SWI/SNF related, matrix associated, actin dependent regulator of chromatin, subfamily e, member 1" +HGNC#SMC1A "structural maintenance of chromosomes 1A" +HGNC#SMC3 "structural maintenance of chromosomes 3" +HGNC#SMG6 "SMG6, nonsense mediated mRNA decay factor" +HGNC#SMO "smoothened, frizzled class receptor" +HGNC#SMOC1 "SPARC related modular calcium binding 1" +HGNC#SMPX "small muscle protein X-linked" +HGNC#SMUG1 "single-strand-selective monofunctional uracil-DNA glycosylase 1" +HGNC#SNAI2 "snail family transcriptional repressor 2" +HGNC#SNAP25 "synaptosome associated protein 25" +HGNC#SNAP29 "synaptosome associated protein 29" +HGNC#SNCA "synuclein alpha" +HGNC#SNCAIP "synuclein alpha interacting protein" +HGNC#SNIP1 "Smad nuclear interacting protein 1" +HGNC#SNRNP200 "small nuclear ribonucleoprotein U5 subunit 200" +HGNC#SNRPN "small nuclear ribonucleoprotein polypeptide N" +HGNC#SNTA1 "syntrophin alpha 1" +HGNC#SNX10 "sorting nexin 10" +HGNC#SOCS1 "suppressor of cytokine signaling 1" +HGNC#SOHLH1 "spermatogenesis and oogenesis specific basic helix-loop-helix 1" +HGNC#SOS1 "SOS Ras/Rac guanine nucleotide exchange factor 1" +HGNC#SOST "sclerostin" +HGNC#SOX10 "SRY-box 10" +HGNC#SOX11 "SRY-box 11" +HGNC#SOX2 "SRY-box 2" +HGNC#SOX3 "SRY-box 3" +HGNC#SOX5 "SRY-box 5" +HGNC#SOX9 "SRY-box 9" +HGNC#SP110 "SP110 nuclear body protein" +HGNC#SP7 "Sp7 transcription factor" +HGNC#SPARC "secreted protein acidic and cysteine rich" +HGNC#SPAST "spastin" +HGNC#SPEN "spen family transcriptional repressor" +HGNC#SPG7 "SPG7, paraplegin matrix AAA peptidase subunit" +HGNC#SPINK1 "serine peptidase inhibitor, Kazal type 1" +HGNC#SPINK5 "serine peptidase inhibitor, Kazal type 5" +HGNC#SPOP "speckle type BTB/POZ protein" +HGNC#SPR "sepiapterin reductase" +HGNC#SPRED1 "sprouty related EVH1 domain containing 1" +HGNC#SPTA1 "spectrin alpha, erythrocytic 1" +HGNC#SPTAN1 "spectrin alpha, non-erythrocytic 1" +HGNC#SPTBN2 "spectrin beta, non-erythrocytic 2" +HGNC#SQSTM1 "sequestosome 1" +HGNC#SRC "SRC proto-oncogene, non-receptor tyrosine kinase" +HGNC#SRCAP "Snf2 related CREBBP activator protein" +HGNC#SRGAP1 "SLIT-ROBO Rho GTPase activating protein 1" +HGNC#SRGAP2 "SLIT-ROBO Rho GTPase activating protein 2" +HGNC#SRP72 "signal recognition particle 72" +HGNC#SRPX2 "sushi repeat containing protein X-linked 2" +HGNC#SRSF2 "serine and arginine rich splicing factor 2" +HGNC#SRY "sex determining region Y" +HGNC#SS18 "SS18, nBAF chromatin remodeling complex subunit" +HGNC#SS18L1 "SS18L1, nBAF chromatin remodeling complex subunit" +HGNC#SSBP2 "single stranded DNA binding protein 2" +HGNC#ST3GAL3 "ST3 beta-galactoside alpha-2,3-sialyltransferase 3" +HGNC#ST3GAL5 "ST3 beta-galactoside alpha-2,3-sialyltransferase 5" +HGNC#STAG2 "stromal antigen 2" +HGNC#STAR "steroidogenic acute regulatory protein" +HGNC#STAT1 "signal transducer and activator of transcription 1" +HGNC#STAT3 "signal transducer and activator of transcription 3" +HGNC#STAT4 "signal transducer and activator of transcription 4" +HGNC#STAT5A "signal transducer and activator of transcription 5A" +HGNC#STAT5B "signal transducer and activator of transcription 5B" +HGNC#STAT6 "signal transducer and activator of transcription 6" +HGNC#STS "steroid sulfatase" +HGNC#STX11 "syntaxin 11" +HGNC#STX16 "syntaxin 16" +HGNC#STX1B "syntaxin 1B" +HGNC#STX8 "syntaxin 8" +HGNC#SULF1 "sulfatase 1" +HGNC#SULT1A1 "sulfotransferase family 1A member 1" +HGNC#SURF1 "SURF1, cytochrome c oxidase assembly factor" +HGNC#SUZ12 "SUZ12, polycomb repressive complex 2 subunit" +HGNC#SYK "spleen associated tyrosine kinase" +HGNC#SYN1 "synapsin I" +HGNC#SYNE1 "spectrin repeat containing nuclear envelope protein 1" +HGNC#SYNE2 "spectrin repeat containing nuclear envelope protein 2" +HGNC#SYNE4 "spectrin repeat containing nuclear envelope family member 4" +HGNC#SYNGAP1 "synaptic Ras GTPase activating protein 1" +HGNC#SYNGR1 "synaptogyrin 1" +HGNC#SYNJ1 "synaptojanin 1" +HGNC#SYP "synaptophysin" +HGNC#SYT14 "synaptotagmin 14" +HGNC#SZT2 "SZT2, KICSTOR complex subunit" +HGNC#TAC3 "tachykinin 3" +HGNC#TACR3 "tachykinin receptor 3" +HGNC#TAF1 "TATA-box binding protein associated factor 1" +HGNC#TAF15 "TATA-box binding protein associated factor 15" +HGNC#TAF2 "TATA-box binding protein associated factor 2" +HGNC#TAF6 "TATA-box binding protein associated factor 6" +HGNC#TAL1 "TAL bHLH transcription factor 1, erythroid differentiation factor" +HGNC#TANC1 "tetratricopeptide repeat, ankyrin repeat and coiled-coil containing 1" +HGNC#TAP1 "transporter 1, ATP binding cassette subfamily B member" +HGNC#TAP2 "transporter 2, ATP binding cassette subfamily B member" +HGNC#TAPBP "TAP binding protein" +HGNC#TARDBP "TAR DNA binding protein" +HGNC#TAS2R20 "taste 2 receptor member 20" +HGNC#TBC1D24 "TBC1 domain family member 24" +HGNC#TBL1XR1 "transducin beta like 1 X-linked receptor 1" +HGNC#TBR1 "T-box, brain 1" +HGNC#TBX1 "T-box 1" +HGNC#TBX15 "T-box 15" +HGNC#TBX19 "T-box 19" +HGNC#TBX20 "T-box 20" +HGNC#TBX21 "T-box 21" +HGNC#TBX22 "T-box 22" +HGNC#TBX3 "T-box 3" +HGNC#TBX4 "T-box 4" +HGNC#TBX5 "T-box 5" +HGNC#TBX6 "T-box 6" +HGNC#TBXAS1 "thromboxane A synthase 1" +HGNC#TCF12 "transcription factor 12" +HGNC#TCF3 "transcription factor 3" +HGNC#TCF4 "transcription factor 4" +HGNC#TCF7L2 "transcription factor 7 like 2" +HGNC#TCIRG1 "T cell immune regulator 1, ATPase H+ transporting V0 subunit a3" +HGNC#TCTN1 "tectonic family member 1" +HGNC#TCTN2 "tectonic family member 2" +HGNC#TCTN3 "tectonic family member 3" +HGNC#TDRD7 "tudor domain containing 7" +HGNC#TEAD1 "TEA domain transcription factor 1" +HGNC#TECTA "tectorin alpha" +HGNC#TEK "TEK receptor tyrosine kinase" +HGNC#TF "transferrin" +HGNC#TFB1M "transcription factor B1, mitochondrial" +HGNC#TFE3 "transcription factor binding to IGHM enhancer 3" +HGNC#TFEB "transcription factor EB" +HGNC#TGDS "TDP-glucose 4,6-dehydratase" +HGNC#TGFB1 "transforming growth factor beta 1" +HGNC#TGFB2 "transforming growth factor beta 2" +HGNC#TGFB3 "transforming growth factor beta 3" +HGNC#TGFBR1 "transforming growth factor beta receptor 1" +HGNC#TGFBR2 "transforming growth factor beta receptor 2" +HGNC#TGFBR3 "transforming growth factor beta receptor 3" +HGNC#TGIF1 "TGFB induced factor homeobox 1" +HGNC#TGM1 "transglutaminase 1" +HGNC#TGM5 "transglutaminase 5" +HGNC#TGM6 "transglutaminase 6" +HGNC#THADA "THADA, armadillo repeat containing" +HGNC#THAP1 "THAP domain containing 1" +HGNC#THBD "thrombomodulin" +HGNC#THPO "thrombopoietin" +HGNC#THRB "thyroid hormone receptor beta" +HGNC#TIGIT "T cell immunoreceptor with Ig and ITIM domains" +HGNC#TIMM44 "translocase of inner mitochondrial membrane 44" +HGNC#TIMP3 "TIMP metallopeptidase inhibitor 3" +HGNC#TINF2 "TERF1 interacting nuclear factor 2" +HGNC#TJP2 "tight junction protein 2" +HGNC#TLR3 "toll like receptor 3" +HGNC#TLR4 "toll like receptor 4" +HGNC#TMC1 "transmembrane channel like 1" +HGNC#TMEM132E "transmembrane protein 132E" +HGNC#TMEM231 "transmembrane protein 231" +HGNC#TMEM67 "transmembrane protein 67" +HGNC#TMEM91 "transmembrane protein 91" +HGNC#TMIE "transmembrane inner ear" +HGNC#TMPO "thymopoietin" +HGNC#TMPRSS2 "transmembrane serine protease 2" +HGNC#TMPRSS3 "transmembrane serine protease 3" +HGNC#TMPRSS6 "transmembrane serine protease 6" +HGNC#TNF "tumor necrosis factor" +HGNC#TNFAIP3 "TNF alpha induced protein 3" +HGNC#TNFRSF11A "TNF receptor superfamily member 11a" +HGNC#TNFRSF11B "TNF receptor superfamily member 11b" +HGNC#TNFRSF13B "TNF receptor superfamily member 13B" +HGNC#TNFRSF13C "TNF receptor superfamily member 13C" +HGNC#TNFRSF14 "TNF receptor superfamily member 14" +HGNC#TNFRSF17 "TNF receptor superfamily member 17" +HGNC#TNFRSF18 "TNF receptor superfamily member 18" +HGNC#TNFRSF1A "TNF receptor superfamily member 1A" +HGNC#TNFRSF4 "TNF receptor superfamily member 4" +HGNC#TNFRSF8 "TNF receptor superfamily member 8" +HGNC#TNFRSF9 "TNF receptor superfamily member 9" +HGNC#TNFSF11 "TNF superfamily member 11" +HGNC#TNFSF4 "TNF superfamily member 4" +HGNC#TNK2 "tyrosine kinase non receptor 2" +HGNC#TNNC1 "troponin C1, slow skeletal and cardiac type" +HGNC#TNNI2 "troponin I2, fast skeletal type" +HGNC#TNNI3 "troponin I3, cardiac type" +HGNC#TNNT1 "troponin T1, slow skeletal type" +HGNC#TNNT2 "troponin T2, cardiac type" +HGNC#TNNT3 "troponin T3, fast skeletal type" +HGNC#TNXB "tenascin XB" +HGNC#TOMM40 "translocase of outer mitochondrial membrane 40" +HGNC#TOP1 "DNA topoisomerase I" +HGNC#TOP1MT "DNA topoisomerase I mitochondrial" +HGNC#TOP2A "DNA topoisomerase II alpha" +HGNC#TOP2B "DNA topoisomerase II beta" +HGNC#TOPORS "TOP1 binding arginine/serine rich protein" +HGNC#TP53BP1 "tumor protein p53 binding protein 1" +HGNC#TPM1 "tropomyosin 1" +HGNC#TPM2 "tropomyosin 2" +HGNC#TPM3 "tropomyosin 3" +HGNC#TPMT "thiopurine S-methyltransferase" +HGNC#TPO "thyroid peroxidase" +HGNC#TPRN "taperin" +HGNC#TRAF2 "TNF receptor associated factor 2" +HGNC#TRAF3 "TNF receptor associated factor 3" +HGNC#TRAF7 "TNF receptor associated factor 7" +HGNC#TRAPPC2 "trafficking protein particle complex 2" +HGNC#TRAPPC9 "trafficking protein particle complex 9" +HGNC#TREM2 "triggering receptor expressed on myeloid cells 2" +HGNC#TREX1 "three prime repair exonuclease 1" +HGNC#TRHR "thyrotropin releasing hormone receptor" +HGNC#TRIM32 "tripartite motif containing 32" +HGNC#TRIM34 "tripartite motif containing 34" +HGNC#TRIM37 "tripartite motif containing 37" +HGNC#TRIOBP "TRIO and F-actin binding protein" +HGNC#TRIP12 "thyroid hormone receptor interactor 12" +HGNC#TRPC4 "transient receptor potential cation channel subfamily C member 4" +HGNC#TRPC6 "transient receptor potential cation channel subfamily C member 6" +HGNC#TRPM1 "transient receptor potential cation channel subfamily M member 1" +HGNC#TRPM3 "transient receptor potential cation channel subfamily M member 3" +HGNC#TRPM4 "transient receptor potential cation channel subfamily M member 4" +HGNC#TRPM6 "transient receptor potential cation channel subfamily M member 6" +HGNC#TRPS1 "transcriptional repressor GATA binding 1" +HGNC#TRPV3 "transient receptor potential cation channel subfamily V member 3" +HGNC#TRPV4 "transient receptor potential cation channel subfamily V member 4" +HGNC#TRRAP "transformation/transcription domain associated protein" +HGNC#TSC1 "TSC complex subunit 1" +HGNC#TSC2 "TSC complex subunit 2" +HGNC#TSEN2 "tRNA splicing endonuclease subunit 2" +HGNC#TSEN34 "tRNA splicing endonuclease subunit 34" +HGNC#TSEN54 "tRNA splicing endonuclease subunit 54" +HGNC#TSHB "thyroid stimulating hormone beta" +HGNC#TSHR "thyroid stimulating hormone receptor" +HGNC#TSHZ1 "teashirt zinc finger homeobox 1" +HGNC#TSHZ2 "teashirt zinc finger homeobox 2" +HGNC#TSHZ3 "teashirt zinc finger homeobox 3" +HGNC#TSPAN12 "tetraspanin 12" +HGNC#TSPAN31 "tetraspanin 31" +HGNC#TSPAN5 "tetraspanin 5" +HGNC#TSPAN7 "tetraspanin 7" +HGNC#TSPEAR "thrombospondin type laminin G domain and EAR repeats" +HGNC#TTC19 "tetratricopeptide repeat domain 19" +HGNC#TTC21B "tetratricopeptide repeat domain 21B" +HGNC#TTC37 "tetratricopeptide repeat domain 37" +HGNC#TTC8 "tetratricopeptide repeat domain 8" +HGNC#TTI2 "TELO2 interacting protein 2" +HGNC#TTN "titin" +HGNC#TTR "transthyretin" +HGNC#TUBA1A "tubulin alpha 1a" +HGNC#TUBA8 "tubulin alpha 8" +HGNC#TUBB2A "tubulin beta 2A class IIa" +HGNC#TUBB2B "tubulin beta 2B class IIb" +HGNC#TUBB3 "tubulin beta 3 class III" +HGNC#TUSC3 "tumor suppressor candidate 3" +HGNC#TWIST1 "twist family bHLH transcription factor 1" +HGNC#TWNK "twinkle mtDNA helicase" +HGNC#TXNL4A "thioredoxin like 4A" +HGNC#TXNRD2 "thioredoxin reductase 2" +HGNC#TYK2 "tyrosine kinase 2" +HGNC#TYMP "thymidine phosphorylase" +HGNC#U2AF1 "U2 small nuclear RNA auxiliary factor 1" +HGNC#UBA1 "ubiquitin like modifier activating enzyme 1" +HGNC#UBE2A "ubiquitin conjugating enzyme E2 A" +HGNC#UBE2T "ubiquitin conjugating enzyme E2 T" +HGNC#UBR5 "ubiquitin protein ligase E3 component n-recognin 5" +HGNC#UCHL1 "ubiquitin C-terminal hydrolase L1" +HGNC#UCP1 "uncoupling protein 1" +HGNC#UCP2 "uncoupling protein 2" +HGNC#UCP3 "uncoupling protein 3" +HGNC#UGT1A1 "UDP glucuronosyltransferase family 1 member A1" +HGNC#UGT1A9 "UDP glucuronosyltransferase family 1 member A9" +HGNC#UNC13D "unc-13 homolog D" +HGNC#UNC79 "unc-79 homolog, NALCN channel complex subunit" +HGNC#UNG "uracil DNA glycosylase" +HGNC#UPF3B "UPF3B, regulator of nonsense mediated mRNA decay" +HGNC#UQCRB "ubiquinol-cytochrome c reductase binding protein" +HGNC#UQCRQ "ubiquinol-cytochrome c reductase complex III subunit VII" +HGNC#USH1C "USH1 protein network component harmonin" +HGNC#USH1G "USH1 protein network component sans" +HGNC#USH2A "usherin" +HGNC#USP24 "ubiquitin specific peptidase 24" +HGNC#USP28 "ubiquitin specific peptidase 28" +HGNC#USP48 "ubiquitin specific peptidase 48" +HGNC#USP6 "ubiquitin specific peptidase 6" +HGNC#USP9X "ubiquitin specific peptidase 9 X-linked" +HGNC#UTP4 "UTP4, small subunit processome component" +HGNC#VAX1 "ventral anterior homeobox 1" +HGNC#VCAN "versican" +HGNC#VCP "valosin containing protein" +HGNC#VDAC1 "voltage dependent anion channel 1" +HGNC#VDR "vitamin D receptor" +HGNC#VEGFA "vascular endothelial growth factor A" +HGNC#VIM "vimentin" +HGNC#VLDLR "very low density lipoprotein receptor" +HGNC#VPS35 "VPS35, retromer complex component" +HGNC#VSIR "V-set immunoregulatory receptor" +HGNC#VSX1 "visual system homeobox 1" +HGNC#VSX2 "visual system homeobox 2" +HGNC#VWF "von Willebrand factor" +HGNC#WAS "Wiskott-Aldrich syndrome" +HGNC#WDFY3 "WD repeat and FYVE domain containing 3" +HGNC#WDPCP "WD repeat containing planar cell polarity effector" +HGNC#WDR11 "WD repeat domain 11" +HGNC#WDR13 "WD repeat domain 13" +HGNC#WDR19 "WD repeat domain 19" +HGNC#WDR26 "WD repeat domain 26" +HGNC#WDR35 "WD repeat domain 35" +HGNC#WDR36 "WD repeat domain 36" +HGNC#WDR45 "WD repeat domain 45" +HGNC#WDR49 "WD repeat domain 49" +HGNC#WDR60 "WD repeat domain 60" +HGNC#WDR62 "WD repeat domain 62" +HGNC#WDR72 "WD repeat domain 72" +HGNC#WDR81 "WD repeat domain 81" +HGNC#WFS1 "wolframin ER transmembrane glycoprotein" +HGNC#WHRN "whirlin" +HGNC#WNK1 "WNK lysine deficient protein kinase 1" +HGNC#WNT1 "Wnt family member 1" +HGNC#WNT10A "Wnt family member 10A" +HGNC#WNT10B "Wnt family member 10B" +HGNC#WNT3 "Wnt family member 3" +HGNC#WNT4 "Wnt family member 4" +HGNC#WNT5A "Wnt family member 5A" +HGNC#WNT7A "Wnt family member 7A" +HGNC#WRAP53 "WD repeat containing antisense to TP53" +HGNC#WRN "Werner syndrome RecQ like helicase" +HGNC#WT1 "Wilms tumor 1" +HGNC#WT1-AS "WT1 antisense RNA" +HGNC#WWOX "WW domain containing oxidoreductase" +HGNC#XIAP "X-linked inhibitor of apoptosis" +HGNC#XIST "X inactive specific transcript" +HGNC#XK "X-linked Kx blood group" +HGNC#XPA "XPA, DNA damage recognition and repair factor" +HGNC#XPC "XPC complex subunit, DNA damage recognition and repair factor" +HGNC#XPNPEP3 "X-prolyl aminopeptidase 3" +HGNC#XPO1 "exportin 1" +HGNC#XRCC2 "X-ray repair cross complementing 2" +HGNC#XYLT1 "xylosyltransferase 1" +HGNC#XYLT2 "xylosyltransferase 2" +HGNC#YARS "tyrosyl-tRNA synthetase" +HGNC#YARS2 "tyrosyl-tRNA synthetase 2" +HGNC#YEATS4 "YEATS domain containing 4" +HGNC#YES1 "YES proto-oncogene 1, Src family tyrosine kinase" +HGNC#YWHAE "tyrosine 3-monooxygenase/tryptophan 5-monooxygenase activation protein epsilon" +HGNC#ZAP70 "zeta chain of T cell receptor associated protein kinase 70" +HGNC#ZBTB16 "zinc finger and BTB domain containing 16" +HGNC#ZBTB2 "zinc finger and BTB domain containing 2" +HGNC#ZBTB24 "zinc finger and BTB domain containing 24" +HGNC#ZC4H2 "zinc finger C4H2-type containing" +HGNC#ZCCHC12 "zinc finger CCHC-type containing 12" +HGNC#ZDHHC15 "zinc finger DHHC-type containing 15" +HGNC#ZDHHC8 "zinc finger DHHC-type containing 8" +HGNC#ZDHHC9 "zinc finger DHHC-type containing 9" +HGNC#ZEB1 "zinc finger E-box binding homeobox 1" +HGNC#ZEB2 "zinc finger E-box binding homeobox 2" +HGNC#ZFHX3 "zinc finger homeobox 3" +HGNC#ZFP57 "ZFP57 zinc finger protein" +HGNC#ZFYVE26 "zinc finger FYVE-type containing 26" +HGNC#ZFYVE27 "zinc finger FYVE-type containing 27" +HGNC#ZIC1 "Zic family member 1" +HGNC#ZIC2 "Zic family member 2" +HGNC#ZIC3 "Zic family member 3" +HGNC#ZKSCAN1 "zinc finger with KRAB and SCAN domains 1" +HGNC#ZMAT3 "zinc finger matrin-type 3" +HGNC#ZMYM3 "zinc finger MYM-type containing 3" +HGNC#ZMYND11 "zinc finger MYND-type containing 11" +HGNC#ZNF100 "zinc finger protein 100" +HGNC#ZNF136 "zinc finger protein 136" +HGNC#ZNF184 "zinc finger protein 184" +HGNC#ZNF217 "zinc finger protein 217" +HGNC#ZNF224 "zinc finger protein 224" +HGNC#ZNF276 "zinc finger protein 276" +HGNC#ZNF287 "zinc finger protein 287" +HGNC#ZNF304 "zinc finger protein 304" +HGNC#ZNF335 "zinc finger protein 335" +HGNC#ZNF41 "zinc finger protein 41" +HGNC#ZNF419 "zinc finger protein 419" +HGNC#ZNF423 "zinc finger protein 423" +HGNC#ZNF431 "zinc finger protein 431" +HGNC#ZNF469 "zinc finger protein 469" +HGNC#ZNF471 "zinc finger protein 471" +HGNC#ZNF48 "zinc finger protein 48" +HGNC#ZNF507 "zinc finger protein 507" +HGNC#ZNF513 "zinc finger protein 513" +HGNC#ZNF534 "zinc finger protein 534" +HGNC#ZNF560 "zinc finger protein 560" +HGNC#ZNF620 "zinc finger protein 620" +HGNC#ZNF674 "zinc finger protein 674" +HGNC#ZNF711 "zinc finger protein 711" +HGNC#ZNF717 "zinc finger protein 717" +HGNC#ZNF772 "zinc finger protein 772" +HGNC#ZNF776 "zinc finger protein 776" +HGNC#ZNF81 "zinc finger protein 81" +HGNC#ZNHIT6 "zinc finger HIT-type containing 6" +HGNC#ZNRF3 "zinc and ring finger 3" +HGNC#ZP1 "zona pellucida glycoprotein 1" +HGNC#ZP4 "zona pellucida glycoprotein 4" +HGNC#ZRSR2 "zinc finger CCCH-type, RNA binding motif and serine/arginine rich 2" +HGNC#ZSCAN2 "zinc finger and SCAN domain containing 2" \ No newline at end of file From 7b18559ee9a638b656fc3680242337eea13ee8e3 Mon Sep 17 00:00:00 2001 From: Chris Moesel Date: Thu, 13 Dec 2018 09:49:13 -0500 Subject: [PATCH 145/289] Fix mapping bugs (mainly related to slicing) `PanelMembers maps to related` was setting related cardinality to 0..1 (since that is PanelMembers cardinality). This isn't what we want. Mappings to `component` were slicing on `coding.code`, which isn't a valid relative path from component. It should be `code.coding.code`. --- .gitignore | 1 + spec/shr_base_map_dstu2.txt | 6 ++---- spec/shr_base_map_stu3.txt | 6 ++---- spec/shr_occupation_map_dstu2.txt | 2 +- spec/shr_occupation_map_stu3.txt | 2 +- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index e69de29b..0dc7b4b0 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/.vscode \ No newline at end of file diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 71553a48..1db724e2 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -44,7 +44,7 @@ Observation maps to Observation: // ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo // dstu 2 change (no such attribute) // ReferenceRange.ApplicableAgeRange maps to referenceRange.age - NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) + NonIndependentFinding maps to component (slice on = code.coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason @@ -52,7 +52,6 @@ Observation maps to Observation: //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member - PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) FindingResult maps to value[x] ExceptionValue maps to dataAbsentReason @@ -88,7 +87,7 @@ LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinitio // ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo // dstu 2 change (no such attribute) // ReferenceRange.ApplicableAgeRange maps to referenceRange.age - NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) + NonIndependentFinding maps to component (slice on = code.coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason @@ -96,7 +95,6 @@ LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinitio //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member - PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) FindingResult maps to value[x] ExceptionValue maps to dataAbsentReason diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 56a18f36..83616fd3 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -40,14 +40,13 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.Type maps to referenceRange.type ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age - NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) + NonIndependentFinding maps to component (slice on = code.coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member - PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) FindingResult maps to value[x] ExceptionValue maps to dataAbsentReason @@ -76,14 +75,13 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us ReferenceRange.Type maps to referenceRange.type ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age - NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) + NonIndependentFinding maps to component (slice on = code.coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member - PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) FindingResult maps to value[x] ExceptionValue maps to dataAbsentReason diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt index cd0749b1..38a23bdb 100644 --- a/spec/shr_occupation_map_dstu2.txt +++ b/spec/shr_occupation_map_dstu2.txt @@ -6,7 +6,7 @@ SocialHistoryObservation maps to Observation: Patient maps to subject FindingTopicCode maps to code Category maps to category - NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) + NonIndependentFinding maps to component (slice on = code.coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason diff --git a/spec/shr_occupation_map_stu3.txt b/spec/shr_occupation_map_stu3.txt index 639f80fc..0e4458fe 100644 --- a/spec/shr_occupation_map_stu3.txt +++ b/spec/shr_occupation_map_stu3.txt @@ -7,7 +7,7 @@ SocialHistoryObservation maps to Observation: Patient maps to subject FindingTopicCode maps to code Category maps to category - NonIndependentFinding maps to component (slice on = coding.code; slice strategy = includes) + NonIndependentFinding maps to component (slice on = code.coding.code; slice strategy = includes) NonIndependentFinding.FindingTopicCode maps to component.code NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason From d513d8078f33dc9e33690a5224168db7b94673a7 Mon Sep 17 00:00:00 2001 From: May Terry Date: Thu, 13 Dec 2018 23:07:17 -0500 Subject: [PATCH 146/289] Update shr_genetics_vs.txt --- spec/shr_genetics_vs.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index 375a3750..65e0a55d 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -2346,7 +2346,7 @@ HGNC#ABHD12 "abhydrolase domain containing 12" HGNC#ABHD5 "abhydrolase domain containing 5" HGNC#ABL1 "ABL proto-oncogene 1, non-receptor tyrosine kinase" HGNC#ABL2 "ABL proto-oncogene 2, non-receptor tyrosine kinase" -HGNC#ABRAXAS1 "abraxas 1, BRCA1 A complex subunit" +HGNC#ABRAXAS1 "abraxas 1, BRCA1 A complex subunit" HGNC#ACAD8 "acyl-CoA dehydrogenase family member 8" HGNC#ACAD9 "acyl-CoA dehydrogenase family member 9" HGNC#ACADL "acyl-CoA dehydrogenase long chain" @@ -4690,8 +4690,8 @@ HGNC#TJP2 "tight junction protein 2" HGNC#TLR3 "toll like receptor 3" HGNC#TLR4 "toll like receptor 4" HGNC#TMC1 "transmembrane channel like 1" -HGNC#TMEM132E "transmembrane protein 132E" -HGNC#TMEM231 "transmembrane protein 231" +HGNC#TMEM132E "transmembrane protein 132E" +HGNC#TMEM231 "transmembrane protein 231" HGNC#TMEM67 "transmembrane protein 67" HGNC#TMEM91 "transmembrane protein 91" HGNC#TMIE "transmembrane inner ear" @@ -4738,8 +4738,8 @@ HGNC#TPRN "taperin" HGNC#TRAF2 "TNF receptor associated factor 2" HGNC#TRAF3 "TNF receptor associated factor 3" HGNC#TRAF7 "TNF receptor associated factor 7" -HGNC#TRAPPC2 "trafficking protein particle complex 2" -HGNC#TRAPPC9 "trafficking protein particle complex 9" +HGNC#TRAPPC2 "trafficking protein particle complex 2" +HGNC#TRAPPC9 "trafficking protein particle complex 9" HGNC#TREM2 "triggering receptor expressed on myeloid cells 2" HGNC#TREX1 "three prime repair exonuclease 1" HGNC#TRHR "thyrotropin releasing hormone receptor" From 841609240a7d91d94c6c368052a511ce221dd2ac Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 14 Dec 2018 09:42:13 -0500 Subject: [PATCH 147/289] Removed morphology in onco core tumor finding Should be using the Condition code to describe the morphology --- spec/shr_base_finding.txt | 5 ---- spec/shr_core_vs.txt | 62 +++++++++++++++++++-------------------- spec/shr_genetics.txt | 4 +-- spec/shr_oncologycore.txt | 2 +- 4 files changed, 34 insertions(+), 39 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index b03861f0..85b5558c 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -383,13 +383,8 @@ Based on: PresenceAssertion Description: "A body structure such as wound or tumor, observed to be present in a patient." 1..1 Patient 0..1 AnatomicalLocationStructured -1..1 Morphology 0..* Media 0..1 RelevantTime 0..0 SpecificFocusOfFinding 0..0 ReferenceRange 0..0 ExceptionValue - - Element: Morphology - Concept: SCT#116676008 "Associated morphology (attribute)" - Value: CodeableConcept \ No newline at end of file diff --git a/spec/shr_core_vs.txt b/spec/shr_core_vs.txt index d3d6aa3d..f9dc3440 100644 --- a/spec/shr_core_vs.txt +++ b/spec/shr_core_vs.txt @@ -351,37 +351,37 @@ Includes codes descending from SCT#123037004 "Body Structure" ValueSet: AnatomicalDirectionVS Concept: NCI#C99074 Description: "Anatomical location or specimen further detailing directionality. Codes are from NCI" -#C25231 "ANTERIOR Denoting the front portion of the body or a structure." -#C25423 "APICAL Relating to or located at the apex." -#C90067 "BASAL Relating to or located at the lowest portion of a structure." -#C73851 "CAUDAL Toward the tail in a body." -#C25445 "CENTRAL A point or area that is approximately central within some larger region or structure." -#C37936 "CRANIAL Toward the head in a body." -#C25240 "DEEP Extending relatively far inward." -#C25237 "DISTAL Situated farthest from a point of reference." -#C45874 "DORSAL Pertaining to the back or upper surface of the body." -#C90376 "DORSOLATERAL Toward the back and side of a body." -#C90386 "FORE Of or involving the front of a main body." -#C90393 "HIND Of or involving the back of a main body." -#C25353 "INFERIOR Pertaining to a point below a given reference point." -#C37980 "INNER Inside or closer to the inside of the body or object." -#C73705 "INTERMEDIATE Located between two points or extremes." -#C25309 "LOWER The bottom one of two." -#C25232 "MEDIAL Toward the middle or in a limb toward the median plane." -#C81170 "MIDLINE A medial line, especially the medial line or medial plane of the body (or some part of the body)." -#C27958 "NASAL Of, or related to, or in the direction of the nose." -#C38166 "OUTER Being on or toward the outside of the body or object." -#C25233 "PERIPHERAL On or near an edge or constituting an outer boundary;the outer area." -#C25622 "POSTERIOR Denoting the back portion of the body or a structure." -#C94393 "ROSTRAL Toward the muzzle in the head." -#C25239 "SUPERFICIAL Of or pertaining to the exterior surface." -#C25235 "SUPERIOR Pertaining to a point above a given reference point." -#C25245 "SURFACE The extended two-dimensional outer layer or area of a three-dimensional object." -#C117754 "TEMPORAL Of, or related to, anatomic sites that are located in the cranium, brain, and eye." -#C90069 "TIP The pointed end of a structure." -#C25355 "UPPER The top one of two." -#C45875 "VENTRAL Pertaining to the front or lower surface of the body." -#C98798 "VENTROLATERAL Of or pertaining to the front and side of a main body." +NCI#C25231 "ANTERIOR Denoting the front portion of the body or a structure." +NCI#C25423 "APICAL Relating to or located at the apex." +NCI#C90067 "BASAL Relating to or located at the lowest portion of a structure." +NCI#C73851 "CAUDAL Toward the tail in a body." +NCI#C25445 "CENTRAL A point or area that is approximately central within some larger region or structure." +NCI#C37936 "CRANIAL Toward the head in a body." +NCI#C25240 "DEEP Extending relatively far inward." +NCI#C25237 "DISTAL Situated farthest from a point of reference." +NCI#C45874 "DORSAL Pertaining to the back or upper surface of the body." +NCI#C90376 "DORSOLATERAL Toward the back and side of a body." +NCI#C90386 "FORE Of or involving the front of a main body." +NCI#C90393 "HIND Of or involving the back of a main body." +NCI#C25353 "INFERIOR Pertaining to a point below a given reference point." +NCI#C37980 "INNER Inside or closer to the inside of the body or object." +NCI#C73705 "INTERMEDIATE Located between two points or extremes." +NCI#C25309 "LOWER The bottom one of two." +NCI#C25232 "MEDIAL Toward the middle or in a limb toward the median plane." +NCI#C81170 "MIDLINE A medial line, especially the medial line or medial plane of the body (or some part of the body)." +NCI#C27958 "NASAL Of, or related to, or in the direction of the nose." +NCI#C38166 "OUTER Being on or toward the outside of the body or object." +NCI#C25233 "PERIPHERAL On or near an edge or constituting an outer boundary;the outer area." +NCI#C25622 "POSTERIOR Denoting the back portion of the body or a structure." +NCI#C94393 "ROSTRAL Toward the muzzle in the head." +NCI#C25239 "SUPERFICIAL Of or pertaining to the exterior surface." +NCI#C25235 "SUPERIOR Pertaining to a point above a given reference point." +NCI#C25245 "SURFACE The extended two-dimensional outer layer or area of a three-dimensional object." +NCI#C117754 "TEMPORAL Of, or related to, anatomic sites that are located in the cranium, brain, and eye." +NCI#C90069 "TIP The pointed end of a structure." +NCI#C25355 "UPPER The top one of two." +NCI#C45875 "VENTRAL Pertaining to the front or lower surface of the body." +NCI#C98798 "VENTROLATERAL Of or pertaining to the front and side of a main body." /*------------- NCI Code: C99073 LAT, Codelist extensible: Yes diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index ae1d01b9..f4fa4f4b 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -28,7 +28,7 @@ Description: "A finding with respect to variation in a segment of DNA with an id 0..1 DNASequenceVariantId 0..1 DNASequenceVariantType 0..0 AnatomicalLocation -0..0 PanelMembers.Observation +0..0 PanelMembers Element: GenomicSourceClass Concept: LNC#48002-0 "Genomic source class [Type]" @@ -76,7 +76,7 @@ Description: "A substance found in tissue or blood or other body fluids that may FindingResult from TumorMarkerVS // should we populate TumorMarkerVS with the list of all possible tumor markers? 0..0 NonIndependentFinding 0..0 AnatomicalLocation -0..0 PanelMembers.Observation // each cancer type can further narrow the value set of tumor markers as needed. +0..0 PanelMembers // each cancer type can further narrow the value set of tumor markers as needed. /* Element: TumorMarkerName Concept: LNC#TBD "TBD" diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt index 312f09b7..00f79712 100644 --- a/spec/shr_oncologycore.txt +++ b/spec/shr_oncologycore.txt @@ -209,7 +209,7 @@ Based on: BodyStructurePresent Description: "The presence of an abnormal mass of tissue (neoplasm) that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). (source: NCI Dictionary)." Concept: SCT#395557000 "Tumor finding (finding)" FindingTopicCode is SCT#395557000 "Tumor finding (finding)" - Morphology from TumorMorphologyVS + ConditionOrDiagnosisCode from TumorMorphologyVS 0..1 IsPrimaryTumor Element: IsPrimaryTumor From 2c66e6e00c36b0a1dc41106585d7669c48d961c9 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 14 Dec 2018 12:26:09 -0500 Subject: [PATCH 148/289] Split off staging into another file, redid inheritance --- spec/shr_base_finding.txt | 19 ++ spec/shr_oncocore.txt | 121 ++++++++ spec/shr_oncocore_staging.txt | 140 ++++++++++ ...ncologycore_vs.txt => shr_oncocore_vs.txt} | 4 +- spec/shr_oncologycore.txt | 263 ------------------ 5 files changed, 282 insertions(+), 265 deletions(-) create mode 100644 spec/shr_oncocore.txt create mode 100644 spec/shr_oncocore_staging.txt rename spec/{shr_oncologycore_vs.txt => shr_oncocore_vs.txt} (98%) delete mode 100644 spec/shr_oncologycore.txt diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 85b5558c..b28b577b 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -202,6 +202,25 @@ Description: "A coded finding from a laboratory test without further panel membe 0..0 NonIndependentFinding 0..0 PanelMembers + +Abstract Element: Panel +Based on: Observation +Description: "A set of independent but related observations that are often presented together to facilitate interpretation, such as a lipid panel." +0..0 FindingResult // true panel composed of observations only +0..0 NonIndependentFinding // true panel composed of observations only +0..0 AnatomicalLocation +0..0 Specimen +0..0 Device + + +Abstract Element: HeadlessPanel +Based on: Panel +Description: "A panel that does not have an overall value that summarizes the entire panel." +0..0 FindingResult +0..0 ExceptionValue +0..0 ReferenceRange + + //---------- Assertions ------------- Abstract Element: ExistenceAssertion diff --git a/spec/shr_oncocore.txt b/spec/shr_oncocore.txt new file mode 100644 index 00000000..6bc35d52 --- /dev/null +++ b/spec/shr_oncocore.txt @@ -0,0 +1,121 @@ +Grammar: DataElement 5.0 +Namespace: oncocore +Description: "SHR implementation of ASCO requirements." +Uses: shr.core, shr.base, shr.entity + +CodeSystem: SCT = http://snomed.info/sct +CodeSystem: LNC = http://loinc.org +CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: UCUM = http://unitsofmeasure.org + + +EntryElement: CancerDisorderPresent +Based on: ConditionPresentAssertion +Description: "The presence of malignant neoplastic disease, in which abnormal cells divide without control and can invade nearby tissues." +Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" + FindingTopicCode from CancerDisorderVS +// StageInformation.StageSummary from http://loinc.org/vs/LL240-3 // Commented out because LL240-3 only applies to TNM stage group - is this correct? + StageInformation.StageDetail value is type CancerStagePanel +// 0..1 MorphologyBehavior from MorphologyBehaviorVS //Not carried over from BrCa because it was intended to break out behavior codes from ICD-O-3, and we are no longer using it. + + +EntryElement: CancerHistologicType +// did not use precoordinated codes because only available for clinical and pathologic. +Based on: SimpleCodedNonLaboratoryObservation // MK: Would this use a specimen? If so, it has to be a laboratory observation +Description: "Classification of the cancer by the type of tissue in which the cancer originates. (Source: NCI)" +Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." + FindingResult from CancerHistologicTypeVS + FindingTopicCode is SCT#371441004 "Histologic type (observable entity)" + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) +0..0 AnatomicalLocation +0..0 Device + + +EntryElement: CancerHistologicGrade +// did not use precoordinated codes because only available for clinical and pathologic. +Based on: CodedLaboratoryObservation +Description: "A description of a tumor based on how abnormal the cancer cells and tissue look under a microscope and how quickly the cancer cells are likely to grow and spread. Low-grade cancer cells look more like normal cells and tend to grow and spread more slowly than high-grade cancer cells. (Source: NCI Dictionary of Cancer Terms)" +Concept: LNC#21858-6 "Grade Cancer" + FindingResult from http://loinc.org/vs/LL213-0 + FindingTopicCode is LNC#21858-6 "Grade Cancer" + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) +0..0 AnatomicalLocation +0..0 Device + + +EntryElement: TumorPresent +Based on: BodyStructurePresent +Concept: SCT#395557000 "Tumor finding (finding)" +Description: "The presence of an abnormal mass of tissue (neoplasm) that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). (source: NCI Dictionary)." + FindingTopicCode from TumorMorphologyVS +// note - like other existential findings, the topic code is WHAT is present or absent, and the result code is present or absent (in this case, present) +0..1 IsPrimaryTumor +// TODO: Add tumor size + + + Element: IsPrimaryTumor + Concept: TBD + Description: "Whether the tumor is the original or first tumor in the body, for a particular cancer." + Value: CodeableConcept from YesNoUnknownVS // could be boolean but this VS allows for unknown + + +EntryElement: CancerProgression +Based on: CodedNonLaboratoryObservation +Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" +Concept: SCT#246453008 "Course of illness (attribute)" + FindingResult from CancerProgressionVS + FindingTopicCode is SCT#246453008 "Course of illness (attribute)" + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) +// CancerProgressionEvidence is not yet part of M-CODE, but I don't see a better way to include it for FluxNotes +0..* CancerProgressionEvidence +0..0 AnatomicalLocation +0..0 Device + + Element: CancerProgressionEvidence + Description: "The type of evidence considered in determining disease progression." + Value: CodeableConcept from CancerProgressionEvidenceVS + + +/**** replaced by Onset of CancerDisorderPresent +EntryElement: EarliestDateOfCancerDiagnosis +//TODO_discussion: added, but not convinced we need a separate element for this given the WhenClinicallyRecognized property of ConditionPresentAssertion. +Based on: SimpleNonLaboratoryObservation +Concept: LNC#77975-1 "Earliest date of diagnosis" +Description: "The earliest date of diagnosis (clinical or laboratory) of an illness or condition (Source: LOINC). This element is the same as the WhenClinicallyRecognized property in CancerDiagnosis." +Value: dateTime // parent class only allows time, dateTime or TimePeriod as choices. +0..0 ReferenceRange +0..0 AnatomicalLocation + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) +*/ + +/********** Assessments **************/ + +EntryElement: ECOGPerformanceStatus +Based on: SimpleNonLaboratoryObservation +Description: "The Eastern Cooperative Oncology Group (ECOG) performance status grade or score, which indicates a patient’s level of daily functioning and physical ability. Source: LOINC" +Concept: LNC#89247-1 "ECOG Performance Status score" + FindingResult value is type IntegerQuantity +//0..0 ReferenceRange // set to 0 to 5 +0..0 SpecificFocusOfFinding +0..0 AnatomicalLocation +0..0 Device + Interpretation from http://loinc.org/vs/LL529-9 + +EntryElement: KarnofskyPerformanceStatus +Based on: SimpleNonLaboratoryObservation +Description: "The Karnofsky Performance Status (KPS) is a tool used to measure a patient's functional status. It can be used to compare the effectiveness of different therapies and to help assess the prognosis of certain patients, such as those with certain cancers. The KPS score ranges from 0 to 100. Higher scores are associated with better functional status, with 100 representing no symptoms or evidence of disease, and 0 representing death [PMID: 23870327] . This panel contains LOINC terms to report the KPS score [LOINC: 89243-0] and its interpretation [LOINC: 89245-5]." +Concept: LNC#89243-0 "Karnofsky Performance Status panel" + FindingResult value is type IntegerQuantity +0..0 SpecificFocusOfFinding +0..0 AnatomicalLocation +0..0 Device +// ReferenceRange.Range.LowerBound.Quantity.Number is 0.0 +// ReferenceRange.Range.LowerBound.Quantity.Units is UCUM#1 +// ReferenceRange.Range.UpperBound.Quantity.Number is 5.0 +// ReferenceRange.Range.UpperBound.Quantity.Units is UCUM#1 +0..0 ReferenceRange.ApplicableSubpopulation +0..0 ReferenceRange.ApplicableAgeRange + Interpretation from http://loinc.org/vs/LL4986-7 // normative answer list + + + diff --git a/spec/shr_oncocore_staging.txt b/spec/shr_oncocore_staging.txt new file mode 100644 index 00000000..8bb84d0a --- /dev/null +++ b/spec/shr_oncocore_staging.txt @@ -0,0 +1,140 @@ +Grammar: DataElement 5.0 +Namespace: oncocore +Description: "SHR implementation of ASCO requirements." +Uses: shr.core, shr.base, shr.entity + +CodeSystem: SCT = http://snomed.info/sct +CodeSystem: LNC = http://loinc.org +CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: UCUM = http://unitsofmeasure.org + + +Element: CancerStageTiming +Concept: SCT#260869008 "Timing of stage" +Description: "Indicates when staging was done, in terms of treatment landmarks." +Value: CodeableConcept from CancerStageTimingVS if covered + +Element: CancerStageSuffix +Concept: TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. assign a local value set until we get something assigned. +Description: "A suffix used in conjuction with certain cancer stage categories, usually qualifying how the category value was determined." +Value: CodeableConcept from CancerStageSuffixVS // local value set created + +Abstract Element: CancerStagePanel +Based on: HeadlessPanel +Description: "A panel that contains cancer staging information. This abstract class is the parent of panels containing information related to clinical and pathologic staging." +0..1 CancerStageTiming +0..1 FindingMethod from CancerStagingSystemVS if covered + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) + +Abstract Element: CancerStagePanelMember +Based on: CodedNonLaboratoryObservation +Description: "Abstract parent class for members of cancer staging panels. Cancer panel members must include a timing element and staging system, and focus on a cancer disorder. Specific realizations will have value sets specific to certain staging systems." + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) +1..1 CancerStageTiming +0..1 FindingMethod from CancerStagingSystemVS if covered +0..0 AnatomicalLocation +0..0 ReferenceRange +0..0 NonIndependentFinding +0..0 PanelMembers +0..0 Device + + +EntryElement: TNMClinicalPrognosticStagePanel +Based on: CancerStagePanel +Concept: LNC#75620-5 "TNM clinical staging before treatment panel Cancer" +Description: "A panel of staging information that is performed prior to surgery, based on evidence such as physical examination, imaging, and/or biopsy." + FindingTopicCode is LNC#75620-5 "TNM clinical staging before treatment panel Cancer" + CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" // timing is implicit in LOINC code, so this attribute could potentially could be eliminated + FindingMethod from TNMTumorStagingSystemVS if covered + PanelMembers.Observation + includes 0..1 TNMClinicalStageGroup + includes 0..1 TNMClinicalPrimaryTumorClassification + includes 0..1 TNMClinicalRegionalNodesClassification + includes 0..1 TNMClinicalDistantMetastasesClassification + + EntryElement: TNMClinicalStageGroup + Based on: CancerStagePanelMember + Concept: LNC#21908-9 "Stage group.clinical Cancer" + Description: "TBD" + FindingTopicCode is LNC#21908-9 "Stage group.clinical Cancer" + FindingResult from http://loinc.org/vs/LL240-3 + CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" + FindingMethod from TNMTumorStagingSystemVS if covered + + EntryElement: TNMClinicalPrimaryTumorClassification + Based on: CancerStagePanelMember + Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" + Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." + FindingTopicCode is LNC#21905-5 "Primary tumor.clinical [Class] Cancer" + FindingResult from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 + CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" + FindingMethod from TNMTumorStagingSystemVS if covered + + EntryElement: TNMClinicalRegionalNodesClassification + Based on: CancerStagePanelMember + Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" + Description: "" //TODO: pull from LOINC + FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" + FindingResult from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 + CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" + FindingMethod from TNMTumorStagingSystemVS if covered + + EntryElement: TNMClinicalDistantMetastasesClassification + Based on: CancerStagePanelMember + Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" + Description: "" //TODO: pull from LOINC + FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" + FindingResult from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 + CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" + FindingMethod from TNMTumorStagingSystemVS if covered + + +EntryElement: TNMPathologicPrognosticStagePanel +Based on: CancerStagePanel +Concept: LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" +Description: "A panel of staging information that is based on examination of tissue samples removed during surgery, in addition to physical examination and imaging and potentially, other prognostic factors." + FindingTopicCode is LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" +0..1 FindingMethod from TNMTumorStagingSystemVS if covered + CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" + PanelMembers.Observation + includes 0..1 TNMPathologicStageGroup + includes 0..1 TNMPathologicPrimaryTumorClassification + includes 0..1 TNMPathologicRegionalNodesClassification + includes 0..1 TNMPathologicDistantMetastasesClassification + + EntryElement: TNMPathologicStageGroup + Based on: CancerStagePanelMember + Concept: LNC#21902-2 "Stage group.pathology Cancer" + Description: "Detailed site-specific codes for the pathologic stage group as defined by AJCC and recorded by the physician. Pathologic, clinical, and other stage data are given three separate areas in the NAACCR Data Exchange Record Layout." + FindingTopicCode is LNC#21902-2 "Stage group.pathology Cancer" + FindingResult from http://loinc.org/vs/LL234-6 + CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" + FindingMethod from TNMTumorStagingSystemVS if covered + + EntryElement: TNMPathologicPrimaryTumorClassification + Based on: CancerStagePanelMember + Concept: LNC#21899-0 "Primary tumor.pathology Cancer" + Description: "TODO: pull from LOINC" //TODO: pull from LOINC + FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" + FindingResult from http://loinc.org/vs/LL232-0 + CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" + FindingMethod from TNMTumorStagingSystemVS if covered + + EntryElement: TNMPathologicRegionalNodesClassification + Based on: CancerStagePanelMember + Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" + Description: "TODO: pull from LOINC" //TODO: pull from LOINC + FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" + FindingResult from http://loinc.org/vs/LL3136-0 + CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" + FindingMethod from TNMTumorStagingSystemVS if covered + + EntryElement: TNMPathologicDistantMetastasesClassification + Based on: CancerStagePanelMember + Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" + Description: "TODO: pull from LOINC" //TODO: pull from LOINC + FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative + FindingResult from http://loinc.org/vs/LL3137-8 + CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" + FindingMethod from TNMTumorStagingSystemVS if covered + diff --git a/spec/shr_oncologycore_vs.txt b/spec/shr_oncocore_vs.txt similarity index 98% rename from spec/shr_oncologycore_vs.txt rename to spec/shr_oncocore_vs.txt index fdd6d075..0a71da11 100644 --- a/spec/shr_oncologycore_vs.txt +++ b/spec/shr_oncocore_vs.txt @@ -28,7 +28,7 @@ MTH#C0031809 "Cancer progression determined based on physical examination" MTH#C0005516 "Cancer progression determined based on biomarkers" -ValueSet: StageTimingPrefixVS +ValueSet: CancerStageTimingVS //TODO: the value set is missing codes for recurrence and anatomical staging. //TODO: need new terms for post-therapeutic clinical and pathological staging. Description: "When staging was done, relative to treatment events (qualifier)." @@ -51,7 +51,7 @@ ValueSet: TumorMorphologyVS Description: "Neoplasm (morphologic abnormality)" Includes codes descending from SCT#108369006 "Neoplasm (morphologic abnormality)" -ValueSet: StageSuffixVS +ValueSet: CancerStageSuffixVS Description: "Modifiers related to the staging category. Examples of modifiers include the type of procedure performed in determining the pathological node classification. The staging suffix notation is the abbreviation enclosed by parentheses. For example, CN1a(sn) where (sn) designates that the N category was identified based on a sentinel node biopsy." #sn "sentinel node biopsy" #f "Fine needle aspiration or core biopsy" diff --git a/spec/shr_oncologycore.txt b/spec/shr_oncologycore.txt deleted file mode 100644 index 00f79712..00000000 --- a/spec/shr_oncologycore.txt +++ /dev/null @@ -1,263 +0,0 @@ -Grammar: DataElement 5.0 -Namespace: oncocore -Description: "SHR implementation of ASCO requirements." -Uses: shr.core, shr.base, shr.entity - -CodeSystem: SCT = http://snomed.info/sct -CodeSystem: LNC = http://loinc.org -CodeSystem: MTH = http://ncimeta.nci.nih.gov -CodeSystem: UCUM = http://unitsofmeasure.org - - -EntryElement: CancerDisorderPresent -Based on: ConditionPresentAssertion -Description: "The presence of malignant neoplastic disease, in which abnormal cells divide without control and can invade nearby tissues." -Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" - FindingTopicCode from CancerDisorderVS - StageInformation.StageSummary from http://loinc.org/vs/LL240-3 // MK - also include stage group here - StageInformation.StageDetail value is type CancerStagePanel -// 0..1 MorphologyBehavior from MorphologyBehaviorVS //Not carried over from BrCa because it was intended to break out behavior codes from ICD-O-3, and we are no longer using it. - - -EntryElement: CancerHistologicType -// did not use precoordinated codes because only available for clinical and pathologic. -Based on: SimpleCodedNonLaboratoryObservation // MK: Would this use a specimen? If so, it has to be a laboratory observation -Description: "Classification of the cancer by the type of tissue in which the cancer originates. (Source: NCI)" -Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." - FindingResult from CancerHistologicTypeVS - FindingTopicCode is SCT#371441004 "Histologic type (observable entity)" - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) -0..0 AnatomicalLocation -0..0 Device - - -EntryElement: CancerHistologicGrade -// did not use precoordinated codes because only available for clinical and pathologic. -Based on: CodedLaboratoryObservation -Description: "A description of a tumor based on how abnormal the cancer cells and tissue look under a microscope and how quickly the cancer cells are likely to grow and spread. Low-grade cancer cells look more like normal cells and tend to grow and spread more slowly than high-grade cancer cells. (Source: NCI Dictionary of Cancer Terms)" -Concept: LNC#21858-6 "Grade Cancer" - FindingResult from http://loinc.org/vs/LL213-0 - FindingTopicCode is LNC#21858-6 "Grade Cancer" - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) -0..0 AnatomicalLocation -0..0 Device - - -EntryElement: CancerProgression -Based on: CodedNonLaboratoryObservation -Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" -Concept: SCT#246453008 "Course of illness (attribute)" - FindingResult from CancerProgressionVS - FindingTopicCode is SCT#246453008 "Course of illness (attribute)" - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) -// CancerProgressionEvidence is not yet part of M-CODE, but I don't see a better way to include it for FluxNotes -0..* CancerProgressionEvidence -0..0 AnatomicalLocation -0..0 Device - - Element: CancerProgressionEvidence - Description: "The type of evidence considered in determining disease progression." - Value: CodeableConcept from CancerProgressionEvidenceVS - - -Abstract Element: CancerStagePanel -Based on: Observation -Description: "Cancer staging is a way of describing the size of a cancer and whether it has spread into nearby lymph nodes or to other parts of the body. This abstract class is the parent of panels containing information related to clinical and pathologic staging." -Concept: SCT#258232002 "Cancer staging (tumor staging)" - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) - 0..1 FindingMethod from TNMTumorStagingSystemVS if covered - 0..0 FindingResult // true panel - 0..0 NonIndependentFinding - 0..0 ExceptionValue - 0..0 ReferenceRange - 0..0 AnatomicalLocation - 0..0 Specimen - 0..0 Device - 0..0 FindingMethod // The expectation is that each member of the panel will declares its own method; if added here, it would be redundant. - - -EntryElement: TNMClinicalStagePanel -Based on: CancerStagePanel -Concept: SCT#385349001 "Clinical stage (observable entity)" -Description: "Clinical staging is performed prior to surgery, based on evidence such as physical examination, imaging, and/or biopsy." - FindingTopicCode is SCT#385349001 "Clinical stage (observable entity)" - PanelMembers.Observation - includes 0..1 TNMClinicalStageGroup - includes 0..1 TNMClinicalPrimaryTumorClassification - includes 0..1 TNMClinicalRegionalNodesClassification - includes 0..1 TNMClinicalDistantMetastasesClassification - -EntryElement: TNMPathologicStagePanel -Based on: CancerStagePanel -Concept: SCT#405978005 "Pathologic stage (observable entity)" -Description: "Pathologic stage is based on examination of tissue samples removed during surgery, in addition to physical examination and imaging." - FindingTopicCode is SCT#405978005 "Pathologic stage (observable entity)" - PanelMembers.Observation - includes 0..1 TNMPathologicStageGroup - includes 0..1 TNMPathologicPrimaryTumorClassification - includes 0..1 TNMPathologicRegionalNodesClassification - includes 0..1 TNMPathologicDistantMetastasesClassification - - -Element: CancerStageTiming -Concept: SCT#260869008 "Timing of stage" -Description: "Indicates when the staging was done, in terms of treatment landmarks." -Value: CodeableConcept from StageTimingPrefixVS - - -Abstract Element: TNMStageGroup -Based on: CodedNonLaboratoryObservation -Concept: MTH#C1302362 "Stage Grouping" -Description: "The classification resulting from cancer staging. Each type of cancer has its own Each type of cancer has its own stage groups based on where the cancer has grown and spread. There are either four or five stage groups per cancer. (Source: NCCN Cancer Staging Guide)" - FindingResult from http://loinc.org/vs/LL240-3 - FindingTopicCode is MTH#C1302362 "Stage Grouping" -0..1 FindingMethod from TNMTumorStagingSystemVS if covered - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) -1..1 CancerStageTiming -0..0 AnatomicalLocation -0..0 NonIndependentFinding -0..0 PanelMembers -0..0 Device - - EntryElement: TNMClinicalStageGroup - Based on: TNMStageGroup - Concept: TBD - Description: "TBD" - CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" - - EntryElement: TNMPathologicStageGroup - Based on: TNMStageGroup - Concept: TBD - Description: "TBD" - CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" - -Element: StageSuffix -Concept: TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. assign a local value set until we get something assigned. -Description: "A suffix used in conjuction with certain cancer stage categories, usually qualifying how the category value was determined." -Value: CodeableConcept from StageSuffixVS // local value set created - -Abstract Element: TNMClassification -Based on: CodedNonLaboratoryObservation -Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" -Description: "Abstract class parent of TNM stage classifications." - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) -1..1 CancerStageTiming -0..1 FindingMethod from TNMTumorStagingSystemVS if covered -0..1 StageSuffix -0..0 AnatomicalLocation -0..0 NonIndependentFinding -0..0 PanelMembers -0..0 Device - -Abstract Element: TNMClinicalClassification -Based on: TNMClassification -Concept: TBD -Description: "Abstract class parent for TNM clinical stage classifications." - CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" - -Abstract Element: TNMPathologicClassification -Based on: TNMClassification -Concept: TBD -Description: "Abstract class parent for TNM clinical stage classifications." - CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" - - -EntryElement: TNMClinicalPrimaryTumorClassification -Based on: TNMClinicalClassification -Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" -Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." - FindingTopicCode is LNC#21905-5 "Primary tumor.clinical [Class] Cancer" - FindingResult from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 - -EntryElement: TNMClinicalRegionalNodesClassification -Based on: TNMClinicalClassification -Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" -Description: "" //TODO: pull from LOINC - FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" - FindingResult from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 - -EntryElement: TNMClinicalDistantMetastasesClassification -Based on: TNMClinicalClassification -Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" -Description: "" //TODO: pull from LOINC - FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" - FindingResult from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 - -EntryElement: TNMPathologicPrimaryTumorClassification -Based on: TNMPathologicClassification -Concept: LNC#21899-0 "Primary tumor.pathology Cancer" -Description: "TODO: pull from LOINC" //TODO: pull from LOINC - FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" - FindingResult from http://loinc.org/vs/LL232-0 // normative - -EntryElement: TNMPathologicRegionalNodesClassification -Based on: TNMPathologicClassification -Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" -Description: "TODO: pull from LOINC" //TODO: pull from LOINC - FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" - FindingResult from http://loinc.org/vs/LL3136-0 // normative - -EntryElement: TNMPathologicDistantMetastasesClassification -Based on: TNMPathologicClassification -Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" -Description: "TODO: pull from LOINC" //TODO: pull from LOINC - FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative - FindingResult from http://loinc.org/vs/LL3137-8 - -EntryElement: TumorPresent -Based on: BodyStructurePresent -Description: "The presence of an abnormal mass of tissue (neoplasm) that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). (source: NCI Dictionary)." -Concept: SCT#395557000 "Tumor finding (finding)" - FindingTopicCode is SCT#395557000 "Tumor finding (finding)" - ConditionOrDiagnosisCode from TumorMorphologyVS -0..1 IsPrimaryTumor - - Element: IsPrimaryTumor - Concept: TBD - Description: "Whether the tumor is the original or first tumor in the body, for a particular cancer." - Value: CodeableConcept from YesNoUnknownVS // could be boolean but this VS allows for unknown - - -/**** replaced by Onset of CancerDisorderPresent -EntryElement: EarliestDateOfCancerDiagnosis -//TODO_discussion: added, but not convinced we need a separate element for this given the WhenClinicallyRecognized property of ConditionPresentAssertion. -Based on: SimpleNonLaboratoryObservation -Concept: LNC#77975-1 "Earliest date of diagnosis" -Description: "The earliest date of diagnosis (clinical or laboratory) of an illness or condition (Source: LOINC). This element is the same as the WhenClinicallyRecognized property in CancerDiagnosis." -Value: dateTime // parent class only allows time, dateTime or TimePeriod as choices. -0..0 ReferenceRange -0..0 AnatomicalLocation - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) -*/ - -/********** Assessments **************/ - -EntryElement: ECOGPerformanceStatus -Based on: SimpleNonLaboratoryObservation -Description: "The Eastern Cooperative Oncology Group (ECOG) performance status grade or score, which indicates a patient’s level of daily functioning and physical ability. Source: LOINC" -Concept: LNC#89247-1 "ECOG Performance Status score" - FindingResult value is type IntegerQuantity -//0..0 ReferenceRange // set to 0 to 5 -0..0 SpecificFocusOfFinding -0..0 AnatomicalLocation -0..0 Device - Interpretation from http://loinc.org/vs/LL529-9 - -EntryElement: KarnofskyPerformanceStatus -Based on: SimpleNonLaboratoryObservation -Description: "The Karnofsky Performance Status (KPS) is a tool used to measure a patient's functional status. It can be used to compare the effectiveness of different therapies and to help assess the prognosis of certain patients, such as those with certain cancers. The KPS score ranges from 0 to 100. Higher scores are associated with better functional status, with 100 representing no symptoms or evidence of disease, and 0 representing death [PMID: 23870327] . This panel contains LOINC terms to report the KPS score [LOINC: 89243-0] and its interpretation [LOINC: 89245-5]." -Concept: LNC#89243-0 "Karnofsky Performance Status panel" - FindingResult value is type IntegerQuantity -0..0 SpecificFocusOfFinding -0..0 AnatomicalLocation -0..0 Device -// ReferenceRange.Range.LowerBound.Quantity.Number is 0.0 -// ReferenceRange.Range.LowerBound.Quantity.Units is UCUM#1 -// ReferenceRange.Range.UpperBound.Quantity.Number is 5.0 -// ReferenceRange.Range.UpperBound.Quantity.Units is UCUM#1 -0..0 ReferenceRange.ApplicableSubpopulation -0..0 ReferenceRange.ApplicableAgeRange - Interpretation from http://loinc.org/vs/LL4986-7 // normative answer list - - - From 26c66707f013268776f1d97236a6092d1261abe5 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 14 Dec 2018 12:37:21 -0500 Subject: [PATCH 149/289] renamed file --- ...shr_oncocore_staging.txt => shr_oncocore_stage.txt} | 0 spec/shr_oncocore_vs.txt | 10 +++++----- 2 files changed, 5 insertions(+), 5 deletions(-) rename spec/{shr_oncocore_staging.txt => shr_oncocore_stage.txt} (100%) diff --git a/spec/shr_oncocore_staging.txt b/spec/shr_oncocore_stage.txt similarity index 100% rename from spec/shr_oncocore_staging.txt rename to spec/shr_oncocore_stage.txt diff --git a/spec/shr_oncocore_vs.txt b/spec/shr_oncocore_vs.txt index 0a71da11..217adb98 100644 --- a/spec/shr_oncocore_vs.txt +++ b/spec/shr_oncocore_vs.txt @@ -8,7 +8,11 @@ Description: "Malignant neoplasms." Includes codes descending from SCT#363346000 "Malignant neoplastic disease (disorder)" ValueSet: CancerHistologicTypeVS -Description: "TBD" //TODO +Description: "Neoplasm (morphologic abnormality)" +Includes codes descending from SCT#108369006 "Neoplasm (morphologic abnormality)" + +ValueSet: TumorMorphologyVS +Description: "Neoplasm (morphologic abnormality)" Includes codes descending from SCT#108369006 "Neoplasm (morphologic abnormality)" ValueSet: CancerProgressionVS @@ -47,10 +51,6 @@ ValueSet: TNMTumorStagingSystemVS // TODO: Need to include version of stagi Description: "System used for TNM classification." Includes codes descending from SCT#254293002 "Tumor-node-metastasis (TNM) tumor staging system (tumor staging)" -ValueSet: TumorMorphologyVS -Description: "Neoplasm (morphologic abnormality)" -Includes codes descending from SCT#108369006 "Neoplasm (morphologic abnormality)" - ValueSet: CancerStageSuffixVS Description: "Modifiers related to the staging category. Examples of modifiers include the type of procedure performed in determining the pathological node classification. The staging suffix notation is the abbreviation enclosed by parentheses. For example, CN1a(sn) where (sn) designates that the N category was identified based on a sentinel node biopsy." #sn "sentinel node biopsy" From c3aca7a7d59690c061c52562b7e813e4bb38a3a1 Mon Sep 17 00:00:00 2001 From: May Terry Date: Fri, 14 Dec 2018 12:41:16 -0500 Subject: [PATCH 150/289] added genetic test methods VS and bound to observation method. --- spec/shr_genetics.txt | 9 +++++---- spec/shr_genetics_vs.txt | 11 ++++++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index b034be12..09abb1e8 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -15,12 +15,13 @@ CodeSystem: UCUM = http://unitsofmeasure.org */ EntryElement: GeneticMarkerAnalysisResult Based on: LaboratoryObservation -Concept: MTH#C0017393 // should be a finding (Q+A), not an observable -Description: "A finding with respect to variation in a segment of DNA with an identifiable physical location on a chromosome." - FindingTopicCode is MTH#C0017393 "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Metathesaurus)" +Concept: MTH#C0679560 "Genetic Testing" +Description: "The process of isolating and testing the DNA of an embryo or a person to detect the presence of genetic alterations or defects that may predispose to the future development of a disease or disorder. (source: NCI Thesaurus)" + FindingTopicCode from https://www.ncbi.nlm.nih.gov/gtr if covered // the identifier from the Genetic Test Registry + FindingMethod from GeneticTestMethodVS if covered 0..0 FindingResult // panel, no numerical or coded result 0..0 SpecificFocusOfFinding -// What gene are we looking at? +// MK: What gene are we looking at? mlt: identified in two places: 1) FindingTopicCode through the GTR ID, 2) in the GeneName element below. 0..1 GenomicSourceClass 0..1 GeneName 0..1 DNARegionName diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index 65e0a55d..f31702c4 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -8,7 +8,16 @@ CodeSystem: GTR = https://www.ncbi.nlm.nih.gov/gtr ValueSet: GeneticTestMethodVS Description: "The method used to perform the genetic test. Examples include Fluorescent in situ hybridization (FISH), polymerase chain reaction-based assays (PCR), Sanger sequencing, and next-generation sequencing (NGS)." - +MTH#C3897601 "Single Nucleotide Polymorphism Array" +MTH#C2936622 "Next Generation Sequencing" +MTH#C151189 "Dideoxy Chain Termination DNA Sequencing" // aka: "Sanger sequencing" +MTH#C3494189 "Multiplex Ligation-dependent Probe Amplification" +MTH#C3640076 "Whole Genome Sequencing" +MTH#C3640077 "Whole Exome Sequencing" +MTH#C1261273 "Karyotype" +MTH#C0162789 "Fluorescence In Situ Hybridization" +MTH#C1513400 "Molecular Profiling" +MTH#C1516514 "Chromogenic In Situ Hybridization" ValueSet: ProteinExpressionVS Description: "Interpretations of protein or gene expression as high, low, and no expression. Answer set taken from LOINC LL4167-4." From 23fa39c54a125ddd8bdd6a24c4dbce3033b1181c Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 14 Dec 2018 12:43:29 -0500 Subject: [PATCH 151/289] Introduced TNMStagePanelMember --- spec/shr_oncocore_stage.txt | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/spec/shr_oncocore_stage.txt b/spec/shr_oncocore_stage.txt index 8bb84d0a..b0d6df19 100644 --- a/spec/shr_oncocore_stage.txt +++ b/spec/shr_oncocore_stage.txt @@ -38,6 +38,12 @@ Description: "Abstract parent class for members of cancer staging panels. Can 0..0 PanelMembers 0..0 Device +Abstract Element: TNMStagePanelMember +Based on: CancerStagePanelMember +Description: "Abstract partent class for TNM staging panel members. Includes a stage suffix and TNM staging system." +0..1 CancerStageSuffix + FindingMethod from TNMTumorStagingSystemVS if covered + EntryElement: TNMClinicalPrognosticStagePanel Based on: CancerStagePanel @@ -59,7 +65,6 @@ Description: "A panel of staging information that is performed prior to surge FindingTopicCode is LNC#21908-9 "Stage group.clinical Cancer" FindingResult from http://loinc.org/vs/LL240-3 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" - FindingMethod from TNMTumorStagingSystemVS if covered EntryElement: TNMClinicalPrimaryTumorClassification Based on: CancerStagePanelMember @@ -68,7 +73,6 @@ Description: "A panel of staging information that is performed prior to surge FindingTopicCode is LNC#21905-5 "Primary tumor.clinical [Class] Cancer" FindingResult from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" - FindingMethod from TNMTumorStagingSystemVS if covered EntryElement: TNMClinicalRegionalNodesClassification Based on: CancerStagePanelMember @@ -77,7 +81,6 @@ Description: "A panel of staging information that is performed prior to surge FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" FindingResult from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" - FindingMethod from TNMTumorStagingSystemVS if covered EntryElement: TNMClinicalDistantMetastasesClassification Based on: CancerStagePanelMember @@ -86,7 +89,6 @@ Description: "A panel of staging information that is performed prior to surge FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" FindingResult from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" - FindingMethod from TNMTumorStagingSystemVS if covered EntryElement: TNMPathologicPrognosticStagePanel @@ -109,7 +111,6 @@ Description: "A panel of staging information that is based on examination of FindingTopicCode is LNC#21902-2 "Stage group.pathology Cancer" FindingResult from http://loinc.org/vs/LL234-6 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" - FindingMethod from TNMTumorStagingSystemVS if covered EntryElement: TNMPathologicPrimaryTumorClassification Based on: CancerStagePanelMember @@ -118,7 +119,6 @@ Description: "A panel of staging information that is based on examination of FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" FindingResult from http://loinc.org/vs/LL232-0 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" - FindingMethod from TNMTumorStagingSystemVS if covered EntryElement: TNMPathologicRegionalNodesClassification Based on: CancerStagePanelMember @@ -127,7 +127,6 @@ Description: "A panel of staging information that is based on examination of FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" FindingResult from http://loinc.org/vs/LL3136-0 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" - FindingMethod from TNMTumorStagingSystemVS if covered EntryElement: TNMPathologicDistantMetastasesClassification Based on: CancerStagePanelMember @@ -136,5 +135,5 @@ Description: "A panel of staging information that is based on examination of FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative FindingResult from http://loinc.org/vs/LL3137-8 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" - FindingMethod from TNMTumorStagingSystemVS if covered + From 6287eb4ede1e3dad1e3f608c58f441bbc1de1a16 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 14 Dec 2018 12:51:14 -0500 Subject: [PATCH 152/289] Added missing description --- spec/shr_oncocore_vs.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/shr_oncocore_vs.txt b/spec/shr_oncocore_vs.txt index 217adb98..6f12555c 100644 --- a/spec/shr_oncocore_vs.txt +++ b/spec/shr_oncocore_vs.txt @@ -4,7 +4,7 @@ Namespace: oncocore CodeSystem: SCT = http://snomed.info/sct ValueSet: CancerDisorderVS -Description: "Malignant neoplasms." +Description: "Types of malignant neoplastic disease." Includes codes descending from SCT#363346000 "Malignant neoplastic disease (disorder)" ValueSet: CancerHistologicTypeVS @@ -25,6 +25,7 @@ MTH#C1546960 "Worsening, disease progressing" // SCT#230993007 Worsening (qua MTH#C3858734 "Insufficient evidence" ValueSet: CancerProgressionEvidenceVS +Description: "The type of evidence backing up the clinical determination of cancer progression." MTH#C0011923 "Cancer progression determined based on imaging" MTH#C0030664 "Cancer progression determined based on pathology" MTH#C1457887 "Cancer progression determined based on physical signs or symptoms" From 1e399a4379cb07dc8e99f0aa8e78b368b19ba4db Mon Sep 17 00:00:00 2001 From: May Terry Date: Fri, 14 Dec 2018 13:45:51 -0500 Subject: [PATCH 153/289] Update .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0dc7b4b0..cba8be5f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -/.vscode \ No newline at end of file +/.vscode +.DS_Store From 71190e596aa224801bc85882520ebc1112ce5b85 Mon Sep 17 00:00:00 2001 From: May Terry Date: Mon, 17 Dec 2018 10:52:02 -0500 Subject: [PATCH 154/289] added SpecificFocusOfFinding to TumorMarker --- spec/shr_genetics.txt | 1 + spec/shr_genetics_vs.txt | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index b6f886b8..28c59f79 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -73,6 +73,7 @@ EntryElement: TumorMarker Based on: CodedLaboratoryObservation Concept: LNC#21924-6 "Tumor marker Cancer" Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Diectionary). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." + SpecificFocusOfFinding value is type ref(CancerDisorderPresent) FindingTopicCode is LNC#21924-6 "Tumor marker Cancer" FindingResult from TumorMarkerVS // should we populate TumorMarkerVS with the list of all possible tumor markers? 0..0 NonIndependentFinding diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index f31702c4..6400096a 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -4939,4 +4939,5 @@ HGNC#ZNRF3 "zinc and ring finger 3" HGNC#ZP1 "zona pellucida glycoprotein 1" HGNC#ZP4 "zona pellucida glycoprotein 4" HGNC#ZRSR2 "zinc finger CCCH-type, RNA binding motif and serine/arginine rich 2" -HGNC#ZSCAN2 "zinc finger and SCAN domain containing 2" \ No newline at end of file +HGNC#ZSCAN2 "zinc finger and SCAN domain containing 2" + From 03957785adba9d7fe35754976ad5995bc18bac12 Mon Sep 17 00:00:00 2001 From: May Terry Date: Mon, 17 Dec 2018 14:38:16 -0500 Subject: [PATCH 155/289] Created landing page folders and stubs --- spec/.DS_Store | Bin 6148 -> 6148 bytes spec/IndexFolder_Oncocore/biomarkers.html | 19 +++++++ spec/IndexFolder_Oncocore/disease.html | 6 +++ spec/IndexFolder_Oncocore/index.html | 47 ++++++++++++++++++ .../mcodeLogicalModel.png | Bin 0 -> 1769690 bytes spec/IndexFolder_Oncocore/modeling.html | 20 ++++++++ spec/IndexFolder_Oncocore/treatment.html | 25 ++++++++++ spec/ig-oncocore-config.json | 2 +- spec/shr_genetics.txt | 2 +- 9 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 spec/IndexFolder_Oncocore/biomarkers.html create mode 100644 spec/IndexFolder_Oncocore/disease.html create mode 100644 spec/IndexFolder_Oncocore/index.html create mode 100644 spec/IndexFolder_Oncocore/mcodeLogicalModel.png create mode 100644 spec/IndexFolder_Oncocore/modeling.html create mode 100644 spec/IndexFolder_Oncocore/treatment.html diff --git a/spec/.DS_Store b/spec/.DS_Store index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..f0b63d58bb8b282ecc8e2e6e395965d90f69cf2f 100644 GIT binary patch literal 6148 zcmeHK&1xGl5FRCNx=KUYLLe#hAjqK?AJ$Dtu3Og$6bdQXkR1Bs?q)^2u#wDq9S4kI z=>zlu+G~GaqqKR59COGk4Nb&#xY4+0wfDZs3y29E# zHa{^nu6)8~Y|k7b(Q_QbCP>I31wN7OI-CMdfoW4f?cGIq214)ItNXWrHf&-4KJIAc z1@L6h>n6EOkaLlA^Q>0}!6})Ut=*ct?a_I3lo6j$g!O2j`(HVS1)@rXFqk%fsPX<58Wh2EnM#hU@D=ojqP%8;vOS?myhze$#*V z{=>&lpTB(l{zJ2X;9;iip2aboVDQ^w9I6Vs3pU1m1Jxg*caSAvErbGdCJ}`8Jp~cFeK02_` zB>-X#yR~7gY6-<*7DJ1bK^#FNhKgvY#FiMu(6OJ{ywGB0(9nU{;)B>X6I-DW{dSz6 z>2x5WLDxD3oC4Psm^F{Sy8kzRUH@MvxhJQ9Q{cZ+fYe%1tBIdv@79TrQ+F*xe~Ye6 pp)$_%jnv0jHv)Iv{)I$9yIqyK+E77r@%i|;1VTXo`(Pc delta 66 zcmZoMXfc=|#>AjHu~2NHo+1YW5HK<@2y7PQ5M$Y_z%h$?Gdl-A2T%b}u84%9H(hI5x+KtY8KJ$3PAT diff --git a/spec/IndexFolder_Oncocore/biomarkers.html b/spec/IndexFolder_Oncocore/biomarkers.html new file mode 100644 index 00000000..9cc12285 --- /dev/null +++ b/spec/IndexFolder_Oncocore/biomarkers.html @@ -0,0 +1,19 @@ +

Tumor Markers and Genomics

+ +

Major sources of information

+

Specifications consulted for the development of this IG include:

+ + +

 

+ +

Tumor Markers

+

TBD

+ +

 

+ +

Genomics

+

TBD

+ +

 

diff --git a/spec/IndexFolder_Oncocore/disease.html b/spec/IndexFolder_Oncocore/disease.html new file mode 100644 index 00000000..fe76b2e4 --- /dev/null +++ b/spec/IndexFolder_Oncocore/disease.html @@ -0,0 +1,6 @@ +

Cancer Disease Model

+ +

TBD

+

+ +

 

diff --git a/spec/IndexFolder_Oncocore/index.html b/spec/IndexFolder_Oncocore/index.html new file mode 100644 index 00000000..60279a9a --- /dev/null +++ b/spec/IndexFolder_Oncocore/index.html @@ -0,0 +1,47 @@ +

This is the first release of the Minimum Common Oncology Data Elements (M-CODE) implementation guide.

+ +

About M-CODE

+

...placeholder - stuff about ASCO, CancerLinQ and the M-CODE effort.

+ +

Table of Contents

+ + + +

 

+ +

Background

+

TBD

+ +

 

+ +

Scope

+

TBD

+ +

 

+ +

Implementation Guide Contents

+

TBD

+ +

 

+ + +

Disclaimers

+

TBD

+ +

 

+ + +

Credits:

+

Domain content was provided by the ASCO/CancerLinQ team with additional research from the MITRE Corporation. Help, guidance, and wisdom was generously provided by all members of the ASCO/CancerLinQ team, especially the Dr. Robert Miller and Dr. Wendy Rubenstein.

+

This IG was authored by the MITRE Corporation using the Clinical Information Modeling and Profiling Language (CIMPL), a free, open source toolchain from MITRE Corporation.

+ diff --git a/spec/IndexFolder_Oncocore/mcodeLogicalModel.png b/spec/IndexFolder_Oncocore/mcodeLogicalModel.png new file mode 100644 index 0000000000000000000000000000000000000000..56d0ce8262b21da7a7de380c25e8e07c6c7f38dd GIT binary patch literal 1769690 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%0Dr4-yd02nl=UqoUd9#9Ns|YJ4 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 z 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

ekAI-;3;5$GHQs1O^1{` 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

!1g^r{F{O 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∨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

?zBA?t2L9V!f`JHwkJZGMY2oRc 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�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࡚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

V(jOga$9 z;Z9Bklg6NU&yoC9rNk@eY(*JDD{(L}wOa3E%b((}5|eszH8C@E_F)NcPVSMnOmpN<-Xz9cR} z!3}9)o!J=wqseC;CBe`D{YU)GQT|e$)OzrfFaE_q{PMZvG}wP|3S>b1*H`}{0fprz zo&w8Agb2@{YW;Qo1E!chMt;fgtK$vRYE1nbcmCAodnF>8t!$0Qg1G%L?bhrMDZOJ^ zi~RZF>UAsLw9V@l;>a+39~XTferKQ(-xW#wCidlUG&GJ7E5q)Ma(>?vgAuzQ@;fky zK@F6}pcP>9GO2Dcb<_;)pJ<1!YQRLp?!Wd&IZ*5}iW>4~SyJ)9E3JCY5^oMxY-JRuV>t*nN7A093CH@QD;g2Ec19*oBhZ3 zS8euJTl>rTmq0~rZ9mScEWFP8mkU^Ulx~zi`7c~nYOCk2w|AeMrirLlSjEc)cZA1X zy(L&+$nTyV{6iegw^OGrP?JXnu2Oei8(01%cm8Z4f6|byf1>}{f`AZ_!c)_&WU7G*c{+50v zFv>%TnPH2Nlt24+lqu~&H-r!TRpo1}WHT1-Ouq}FFUMkLKa!84CVuvlc%*S|erHTX z9b%ojAAs>8*qrdEQIaN~_)Nw*zJ|6xNF(*Xwf3JdG?9POm@NM+e;Nv-SO~L@`lr7B zXDn}N&I8|2O>>vOy6jJSO%j0nr2e<&|0K?O_*c=>PvhIa4b^{r@^1?M)Q-?l|I4R9 zC~^FQ_FtF(QMsz6{A<9Ua)zwD_MY{UxEm2~h3&TAPl$^DpE~lnBYPm}&nKB_fmMKlZ;^|I0_RX{rFdRPac`nYL=lc-y#k zF6@SzHGG`CHO7Lu@q_)F_`Ok)2Xe?2nPK(iacM@VYtbRPiIaiyQx>I{RAjRf4dg0_ z!R1nJo>t?pNY|3Pl_>uZFJFLoe#?vaWBKD%GC?}^H$)r=O2|J&GI9ZgaPr4#COE)F zyuTw(Y7xJ}?-^(hYU0x}m=TGi{nI{}URoqFQsN{42w;11(TpGDMMNfkMhBXOAL+;{ z1y0%+#~aETTQIcHw~CuFfT*0~;kw5LnJ&YveWzj87B<=v-|i((B90&cgXNG>s*eai zO*tY-C?kcCFKdKY{@m6;2>y!|@{gOwO+*FIn-+d(E8c&_K6(39Ym14fTuegc<6A!( z^o$FPymZ?`0?~CtZw8) zROzObHevE~`^F!}+1Pt6;58iy80-C)a|jjkC&Z+RS-&$+ZvJatNGK-;4(H zcd05sgmw?@{#-7nMdu5ZJZUhZuNRA1TU1?+F2jktSM9M$FDE3 zSr7i$PCe}gJO1orY~;wHHgd?0kjXk5z2D__29D-C3=>h=Wt(i&1$Wt`M{cmb>lfH@ z*ZtEf@a?Y0{_rE~*1o;XeC$EH;EAbr%u%E5!Xrl772m$jb{unxU39|!_#RW1&HiAv z{rZ>pS&tJAv!9=e9Z{IXBi*Eh4yhVvr*hW#&YS*X@6KFcZ)2r3nlM(lZmm6j`;|6y zm%i4jbhFJG_p)6+afLmKBL!dk+h1+*>W$WZ|0C?2gNE8om;TmDh7Gk*d+cH(h7JI{ zEbD_K^Rgi41+R{^-#$OZUS7_Ls2i;O!?$hdMSrp*58KbaKjtW$r=M?Cn4B7Q{vCGb zjTc(ijSKC)@o(E5OSA2L9OKtMzs&Bq`x$$F+)TUZCu8i$;XB*g5B||EdHh2=?uh;E zXWzg?6prSrzz(De36PJQCW%5IQt_&FKAREY#Svxn5J-4Yx0W|QDyp0 zRB=%$XeqVLIHIovJEV@f@o`Ku+qiOx25PghQ=rezgKYhZ zrI=*m(R{FT6gE`?^mw5%aP0VH`N1EZ9=%*eIVN6lZQHfC4cKdc>ojPD<#iiit@7Il zb0+@ikO8Q5On{Rfh+&MU@LYbcwlK>- zgJ)Da+MnD4 zVodWNwbc~-gP-g1CDe{+{qO8>= ze{VdyEHn9UF8s}9|4rq;HvCcDQUBBw8}&)~2SZcTlV#M8LLF2)*G^%h^pj{ zC=BSf>%EKZea_WhXj6jZ4buQRl;2SO%d0~8lz+58e(;_Av#j%{F8@;{Cn&V|Aq=;_ zsDDjNkPrd#bV>iG4nY&`uLby2`-g~wfRp%Hj=35w)BYhGQChsZ)Ruj?#-=V5M6Wgz_)Ow&sQg7c<%|r@ zhReID_E$~45muy+H+9ILv`73RK@qrXg8yMw`d`|AefVShm+52u=XSyf#v&wWb~Y#* z%0(~zKJury_>)K%-zQ)>ukl656CdMMDDV(u=Fthb0FtTyh@HYr(HY@2BYxQkbkmsn zS26=Hv8=`Nr)Ll@sUi{6k!0O9K>t|cgEkh+Lo$&6DqHsPeYSDUhv?iDW01Txj^)dR z-@+GLvGbnYKH?yL9_JJ%p)kj8S-G8T_*ec=tN!WNWEVlkO{ss$VB}x6CrX_8C9hJ|N8LP*ZzpjgUMaaI z<*!AXs2`}yRB#3xY=2axYyozglt1MV+aFEUf8;;5e~F3Y2`+A;{E0uxUwkkTLVflZ z^^|P?C{rW(cbXcH-|0i$1pil`{AIV>SpJ(Te-|Sa{P~T4!~tab_9Xr|{-L-!{7=&U zlKM~fzqtb_mL($Cn*3#D3I3T^cE!9v;$sr7fBL`JhEC#7%D+DR%&UJia5Cx!P9!80 z5yjXM^`Xsu?`CyJcya{X3*LDjgJXo;6}8LA|HJO4UU(uHLNr^y^k24m`D808Tuo=B z@n(NR`$H<=;La8cEZIdFm()h)1qs%VL=UHT$U7kkIDF+SW9 zr(@;t+s^pDP)l5C3))c$u$pK=w?ClNRbwLLPw?;#SJj`Ae=;TEFfS8^F%}YmK)HH6 zf4$$H)e^{jn{9CuUkgdgzp+hmMqaM-}Z_xMNre9Hw%3{kJloWdX4 z71WL1Ln-8+f@3b`XCIw5NSS&X#v&ocJqV{7odVLs94e=N*C6~zDt-unu>HtDl_b6r zes34zfpD>qg1e*GcH&rg8S1kN&V%6EvFkAF()%DxM(u%&;k!{02y!>I|DP(m6bs>y zS<)KEUm!fjG%$E(?uc4}9Z{dW`Mee2Xuf=`0?fs(s2m*C))JF8*{Hnnc}o~5*(O@g zN6|27;)z1Tqig_iQVvN$a=uSD@FZHum>dLX4o*y4gf;nfEN{@5*zT-3JHU&w8>9ac55qHx6)q2MASF$e9fM_2S@XD z>5O9t=>|wEXa+tGGHk-}d##Z^8}eWyrW${on7aKZx7%CG)?4eryV#$8e7f(5D(+?{ z9&><=IeZ^m{n--x`FX#vXE)-TOe_T$7^17m@7Keo-*&!@KKC{||GX3Iz){0(@1X-h z?*=<$-;3f;{C4)zJwL&2tQ?#5*x&4e z$1xFgwHF?|+-|t#Nh_;vX}|f+ z53D!78D-dcb=;U=+3e-(Yy)7o!*NW{{N?AiQ=gu;Wc_KHd71F0qv#ePrWucd-YqJR9EtE3rH8dDfmAH^VOepR??U zT{#hTpIwTHsIOtN@2azoLMs#BWC|aO<}5G=_&C6ravAUTzk~z$v9qi9iXmi`V4}etarreqY0`tSlmTl9z*Ym7VnJGPfGFe^ zy|^%Gz%O_L=vchUi12ycI(|>h{M30({3`Ew!^!A~-{~RTkaIiYC+NoT?-TdPMEM{z zm49~kX$y_T-xT>r{gYOdJeWZh_wc#@r@!Sr^e>Kr$=0QRHtL*jsw>nF$WJ>-+Mf@m z$a*9tS{m_J(Z&Em1N?rQ!XNeD5c_lZwacGngqZnO$img}*R;RSL;jJDF9N?WOp!1o ziSC*Gyp+@h)Jun&7-+J!B0X-1Svcf?6ga7BP z%iXW^=`NYN`HxgJr~RozO~EGctL+%c#WmuM*XF_><=;^Ii~f%tEcze)lT3qXNh*1X z^3Hr#TF<~=hM*bTc|7CdUA!``X7IAYxS-Bdo-Y-C$by|7$piNk4GFHR{P7L#K}T62 zX`26JX=r@;qd!R1BMJL=`F&<{r{0Z4YKyUGEywcmx!aI!CwB7iZ732A7I^G87yp!L zM}8R=UbVrw>?3hZ@^_`g6s_b_v@;)h##OfBpjce%;vdOn4|Vw;<%B5Q{&9o!$@Ui) zGS#Pl-wj{C{3+@B@DpiW_+$MqeUnbmw>AD_{VQg~efkdBg{!i3r7d6bnzd;+2rE8! z53!`waWI>w#WmVn0)OhAZqoc~moH$5#)SXbp8Rjk{>c^bM?R!e$t9GZg#6hLNa{aR z{{9T66ZRMJC)-~@Cpo)h8mj*->py*iE!aC@Dun0t^EP84#af#&VGbsuu+Wu#a!t%& zsuz7Jo-mQqA>Z~pXBc+#whtVWE)Vh}q!N0H{x{S9BmY!0GuCE*k$=jVA;PCkZ!7=A zPfLvWWBI55aXczHxUaqa(cJjI2>xs9|3&_33aAlk@SiIGjVyoF@^$FuQnD}z%3LzW zpx~+{V{OIa7jbIJdSBd$@f+F<@w0zeS%JYj-0!^Gw=r0^Co*DJLmGnm#)L(fDu;p` zF;Gk3BBTGwx6%IU^M9X*{Sm*c8AL_@OF7pjf5{BAhaBQmWdn)D6Y{xa>*hboKa>Ax z|F!v_hL*ony)9~7E2NeEPcl@W|NFAo|F-b&`f{-f_NQ;|sT{e=zD)ef_@J}8 z+CRzmKW!t)aeVTL06bCkN`d=emeD%Pix%N%z6WjP(kU9lmi@^8LS|U?TM7R#WFLGM zq|GQ4ST5R*q1raCdJQ|{-?sJZ7U%>b_G49Un2Lx<7;LT*6AoOS)TV7u>(qG=CbEZN z%xxGZaX5Cz1|I%mV4+hPLWGEPO8Lu>#2=qLMM#b`1R=kw)Y1RI3TmnUnJd-*W%?BU zD(r-sgN5&}qb>Cg#v5B=ydR(9!8mtoOh&bA1>Jytj2L6?0+Uj3n3T7-KNyStA>>Co zxB#ADHP*&9u9#r07KkNUJkjSeR{oz4N`W`HWiySb2*~;6FFXj7L0_aVi(?76=QutW zX-WkgF90oUzmWfG_;Tu$Q2agb2-o4$|B)8?w=jOI{c?meGGa zvyGF5xri)G+>s{wAF{>q4%QV_9P>vU7ln!vj)4TeHGa$|q!&%Nl3jsd9B%mRq6vT@ zYYu6`Ao1S$5I!VUdmcEsA%hE1%WG9 z15k+8+add1VyAug6gzArc0`qI#EvLTME&C?>yK@dU%T;1Yf*rSsJpMU7T7^E^N9yA z5jEY8<&LPMN7>K5eZ37l>r_lcVMi1uqGo?E$8P=Qz1Ho7Be5guK+A!}c%iJclA=v^ z*|&aehv0iuM*x49_P%R}%hJ|Odc{Uw`=ovIq(kkhZ-327%8KoW_@>9ug9q6IlRvXw zz5CeM-(F7tAe9ytm%)+1m^ZJt)l(&b(; zE6=nehwW&SFcI~mCuZ2!4jXM(opYpB;RpvFi&Duy=w6P7_R~!EM`Q3Ul5_`d>vS4! z%itMKfzG%Tg}#{Ih{D8J8E7fNgcO!p*g;p`k1de}ZuT_9X#aHJm_RF9v&=pn|AfsR z|D<&rfTQ_Veg+?dZ$zoF3?~P3%wmP0;>Tt-0KhIGdirS~_h))?g4c{V1|TH|q|M67 zvpv3gwsqO#NH|OwMa0kiF$B8g$PpJiy}0uf!r}aT9Dv{zJC1a+N|sT!g$8sw9RY2? z6Vaxwb(a77@w@*aY|?|YN#6AA5pe>+WtYO5zS++BQ*4JD**vh*KPmvfR;qwzah#%E zPv8ydc$}RWj6m=N{Zsyte?M9w=HUy6A9A>!0!l|5ejCAmYyc5w)IaZOGl6>XB{Ttl zl)sp(13!tAT#zT7H*ckLBeY#!yy=}h>Z;jli?GnIfD-HEOl)rXRL8xvsX^?3droks^Or%5t zbsm(H06<@C;YMfzT5TnpD(uBy zy>1o7Rahj06>ZQ7Rxm&w-Y_l4q6pTDo%?sNgT67+T6Pw9HPA;iw10wiUYJf#!k;XE zDhGI#w13xG0&ElcC*ST%M2G;={>VQ;I!#noP5jLve@EuNEVKOAg`aH!|A*WlEA7)s zpv#(M>n?R8OzEE(pLvZb6rb@jJjPh5%F%hQM#&#pm^T88*X@9xb%e?k(YZo#Q?vZJ zE)#Kel)t3?HAer`kuU5C3`Tx&-MHcjTek3Z3{Gyu0xk4?FhI^-om@T2mGi3qkWTF^ zl&vD|$S+4W{@eA-t{>3VBk|4L7E$}l3Up2=5+5h#4M*`0XLH~*k@^23Ou0zlYnB>Ow z=(tzRTx*NpUttSBSb{}~IcO*NH>lalt-$xz_?_J@n1I^jR7^JZ;!&4TGT|C7TyQGr zvNwmV-)*!%f^QD_)7Auw_87`P|e zcv0{Eqpf4l5@~ zi%Akbq^bf7~n<75JJd)tURntJbWuyyQx3Wjxi)MOFI^cAi90NZ;x8-w1QYbH;qM(yGUecVP&wRe!S6z$U^6ed z2@i~8V$!1&3r9!;<)B_9Xo}`Xp|Whs1^|P*tXgAdDs>^6 zKqTuZwy$|25Zl7D z&os=(qyozJ1s@Q}ck0*issu>L_BZ6h`43$&roo+KS(vnw-$A~lydexSMQnn>1=4KS zRB)0Ew8c8lQF>l2M^WD$d;=b3LYhcRHEfY%>{>WM(BhBJM1vpE$qV9;gS(>m-9wH? z^VnHRBRjjR4cYewGF&4tJL%lk@-Kl$$e^Q96H!6rR#~{l*35p#-uwF>te_wdD*^NL zv9cU~Cklp`gU%Rd9yAff!Y3Q2RuF!l;S)Of0;sQaGwftN*=E` z0zgpF$1PV_%Mfr~H19LJ_ufZsY<0f9as78vNAtzOEM19#_)!qp)UAdAakiI@lG4qq zZQT1a?OS(_w`cFU#CGe@-eB?s?{u-C;P2M!ZnH^?Hd_9UJK5i_zW{OA5oH_g2S5Ik zO(%yWN{c+A_>oaJGJ@}KeZT^c-+JVdi%EpeUQQy1QUVHdz z>$iNao$%{tttGxSHTL!&VGC#uR-Qj(-^Ur-Up?wzyW+G%?DfAsU}rx%!`^-HYU@_C z%-+C`sBhmh-p<4~t$uOZf!YxzuJM;T@+Bx4n(e@hD z-v;Ehu;o+UvR$rw#%BNHMl1Q~UAz4S9L=|+#AZMGe`X~s?ckGcw7!FPuv1Ps+>YOG zu+16!gpIlX9lPO*F_ypbQ=2+*vb~lwz#jhDIhcqlw%`Bh1$!0~QI}tFmK`;$zfFAT ze!JqynRfi)*b#O1kyzzaikV-|`l5gbN5k^(w$@Dcr$PmYFmTx|;LAc`t8@aD7?3Ez z%GeU@f-2!GG&@pQCDEbZ5Zm*dpQ9qmRXKogw+K~8S6;Z$*3X+}GhY0=wSY6O!rAB* zrA0X7wit+ToE0ku{-N;EiF4aES18a>RSZE5ogkev>4F%bMo!AX5#w7SEwl5jU(&f{A5Eq9ujREPv{RHmAk`;79vYUj(S6F*by4N$W&%|G!{drnfzyFG(6km~l zx5ZEnktCMCh}mgr82%{#X#ZdY@F?%dB_sF@`QnmU|IzLmia*x>q)hOF(FzlOs;bLu z^P1Of#^n3a#@>X*lHIIZ?@=~j@cBv~1+VlVE0$C0i=djqKQocNWczn}@lV;-r+?}~ zAqvDbUqk+EIYs_;CH-~Oe@y8%<&tsWTlasIM?>^ap=;m{MiEr$DDeB)`zvk1J4ilxz!lisrGnB0TDgsk7cPg{OMY#cKeU*FZZ3qHA8Uk&~<@H4IWiA>cN5z9Z)xJ^3?qJn+^HzYe57JYPw6>gl59W(3D#?8T4f41e~ znuVj=z@B_0cPVq+zcqGB6)sz9Z%o z`i4CaYVwJag4`)P9?jnh8#!9zGdiD4e9L}x+q>4PT|2wu_EW7JHotJv#Fb4RFisB| zI0m1Eg@{+2|2KR0y@j@zvsJ+$PWsNicHAMu?9dTAN&bG~7Z7tS7>v`;bAn6IK$}j^ zVS9*D1Vyho#kcdpOjUc*g08n*ph{Pic0SSa8mBiEG0RnHqf$zX21+A~s6EMlrw|aveb;U#Wy>q{c!klFl z>)_Cqt+FTPthL#X|H_t5f88#><274TYIfogBP_RQvEA|T`}TcIL>)V_zvY%}wvpfe zqmBF9FRah_#%Uu#omF1G_uKN=HJ_(l|X(|`|j!tYltocV#>@z2+-Rkz-j+qOMA-yDRl zvgiK!iXD2~L3Z@$J?wxz2P18{EqUuzJNU-u?3^=>w$Uh9hYsHfANAW{cm4h$n_iJ) z?b@}qPS|Z$wsNU$?$+I|KIcR$ne~p{`s6$I@bu+&`8SWXi%uDB|9IdTo3dz~Ew5~8 zyAJ54U1ICnb+=2#9BoB&r`y}FzG36@2iPM&!$efeBKzH+U$keSzsoQEx*a=w2OIz3 z{r2N$Ke7`JJ-~i8<}f$|?1I)ZL0@R7tS zY^&t#xmNFD#IdSqJ<_eUb;}l5$%b`^r;V~QBv?2|8Z}ww>Uo{D4hIG2$L*o5+jYeE zqk37_UG}v8`+n70&hw>~qDS9HFhQw?{fWguw$^YcxU{?&mYfhn0r!G|keZL9oMfdPM}{`oBZ5mhtcPugEn z|I~WaKXFCg80`GSbF(2CcV z+Xqj4WGm;bwQ96;viPxC?)rwGl+00w@VMIi_Bl5Cn|oV9&phZZ8fH!T2dHS+qCS=H zjxk7wz&JM2>XSd|WAW0!azq0#sRlR|9_%j#2kF%Qi}eiAB5sR-xNY@6lz%M$(I>|8 zpW?P2{H*^-ceH=i&yi5loC1RTG-J_0PH< zsSxkSUIPvT;=+l?ES`48VcntIkXFwdQ03k#IkH#CS?jF51U=Fg1rms-gg{IA<3 z(k1!FN9>C>eq^6c`#suK)xH}F{Rwu2S@tT?Kfzq9SU=T#W+eh6$iKPymyT$^4CEo|P!aw^K4beM z6Th+s`)4`@z>wMUv4Q%pS*8MB0$~8Wy6}tWfImfhJ^0CQZT(-BGolOp>zR*)&HreB z#PUy)(y~IP2H=nV&t#w2<;vDf2nqZ#O4nwKh6U z`l>8nW1mdD&I&htroJdA5@L&%<72FQcHHfU*v&o+c{|h)w?MFMxNfSg`s^j!xNZ?Z zmcw)a17$)B0789F(_{U`_BZ{oCNR(s%g)Bej<$WU+o(5o&g1hh_-lzV!IrJsV9d2G z7OLZvEd*vy*`H!+`3d%yD&Lt&GJzzYb&tunk`?yJwA(RBu?C}*XzOwk3g1EHB1Ruy zhZjWqi_dvD6|EH}jUKuC6?^mj1@_#WRd&vaBkixhe#MTtV1%81%070$ZUe9(0G}tp z;t`%srFseGO+Uf%tp)U9@`e*oY`d?XH{X7D*93duxlgSBE$G&6T^72qeqo$5^ zGo+z0O>7+b+np2ajz3Pca^yYX?62?*1Xg0NzPrFiePu^G_4vJPBu*8x$|C#i@5ft@ z0iA6?|4z2=uzsKcI$`Gr^}lQ#GzkZU&8}*cJlhED9x=)%pBO`W{F&Vq`67(l@mquB z_la8{w2SYaX+!qd$qqhf5at!U{lDpxPwj)1MYiXtUF_JShua~0?+E;K!1yD6$|g8w zU2#u;$RoBkE?;54x&J*o=HxwX_>MiSAQycp*cIC>JbDnldht?;i7-xtJLcqaD$*!_cvs61@b<3JL>kHoEeJo=?YHCB|ggySL;A+S)W(N8!r zP6T^#i4D2wt*-J+G#?R_|w^soFT>p%k(Kz?d8|;x3o;Ou=C${U{5>s;63fweTM3owONzK z*$vOn!BL~_Y`?vBvNH}CY?uDxZ?*vf|ReOI;>ZB*6hZI6cfY5sh2}s8Pf&%JOkWU2#X-a=SDYhpdVtt}g z6i_MBYZMTW0MbdLq$i~JIyK4n|E+cQy=QJF$xI4GJ;~g2&MvF(wfjD8qtLuJ%D!>i zi#B&@rK^%c^V4siYP~yju&U`3?a$AQw!2@MB3@hBZC9UZttuASAD?{F?s#fU$WaI{ zIs4PL&w#CM)|gTD+RLxmTP=Iq)t^7gS~ah-dmek$UKl;qPCDrjJD^_=d-Jc4+HYTc zU-I42zHsOsa(qm-s8Px6u#|?WU~g_l(ouR>u;VM-gx3pxgYAzD%B}QX(9x+1FSwZ* zU#SVGs%lL}@r@`sW9{*`{ZGG4-viqv1X@7MgDzk>aX|+Y&T5Z2vr9T=L3~td#0|7SbTV>^(QU%dQlTo`I`z70I`~7{z z26Ti7iuk=Oi#N!DNAOd*`)(2EA7=;o{Bmbt3w%7sj!6>=F$?$;qF_k6RXC^|v|n?+uP1)A@(qgx`%7dy<(Z``c9fAy`~19Y(>1OUjV0 z)Ij!7g8bp*X@4lk>&oEF_2orV@6$)#>l0D4$G@fR{@IQw@k{5wR=%it>kjsbi*CyJ zcN1{=1CvIq%S-7uhyH^wCo=FQv470u&tSN`l)FOgCdlWPtITG+I?u*DIbPq5TH&1| zR-Ms^r@VU|MMG8pb{aNN-wo`eg)!N{pFp_YDCh`0yZn2L;BiF6@vI*;WN_;q?7u`c zuKa@~;PUX{*uOIbPu?%sIRBqICNZ$#tRSYioIzHZ>1c$irRuaS6G|Olv1+MgsJ48i*rH(g?o7##`wH4KF4?v{UMLz$5 zXW^7zXiWVNAFe!sTA%$zGVuW4nZS4kwbKI~dR<+!#O6)8)#l9}tv*j22f~qjlsk^# zTvb~kk%WBd?6HzICZe|j0m9H=AuPL+x23?~ z>_*Bz20)AQ4|to8|Ay#)OUi$9;>W>Z!v&pW_J_qNi)eN~I=!wGvxt>AO(> z(^sKv?Kyl`>$Oj3?Vwg&r3-!He@GK6nNcF}*DZhWC;Jbp-8B7wl=~l1b~2e@|Lf_0 zQLdvPG~WMw)a;KzVZUTQ1rvk+)hl$2=g(~UqVXbG$K7iZiZ&5xd{?XdI14Ab_c_42 z_BmBPE?Y1PuuMMgyQ!a)Df!7qiO&5Jjs)yRe?W|c#wU1kL*5@;N$^M#YN2V4C(r=SbVw~Fx0OQ?ZoM6ks zRp03e{BFd0;?awSQvxvx@XC+pERbY6;%&u(7i{vlyY*bDwywtZbrP2Ee9|+MXtcfX zspYL&XxzWGCYhGomrlOLMopS$d!M?e{o(unWnVkwf9?4d%k1`CCbX(5SK0gHXWA=&f6cyg^BXpEUXAT{K!1DSzB8?>_-De1 zG6`?=C!CFDHFn6Z|7(-v!w=Ay`rUsx8=zulg&jTg2Ue}q!44k2hh2HzaSB^(+iZK4 z?R~@`8+OPJcHU=)!nFPb6b(4+kO#rVE0bt6FqD)?^r#Hd9ao$df|B*8J^?2oJaql< z?Hj)wYhOF>X#4hej?=EP*l9HXrC02N?>=tRs`L%AeFoUCzyDcf6Ib|EhnD?F&R+gP zQtB60+pIT7+1C62pZ(&`U$IjT-_5$|TbV>NNmu5RY49PMwE2QRCd8`v7L@Fm@qPc^ zlkh+_W79R-tWm8`*i`Zv8%;{>y#Eze-nyUoP`e7zKoHKAn+NDY;h2xh2$}e^^w|ji zt1-2@B6bW7_^Dhp$7cQW5qsyUd#z2|Hohvbxwh+Jq%;;==*)B~%WU3Ri~v-`rD?=? z6ElR0crKW9PT`n$0=WDoyE~MW!}F$s7OC7UJuObASdn1p`lm9R2K#`FA{bco3n4mw zy*V(Y7YrwZd!+JvmLs0Qqd3kCZ?5fxASu(#EJyn}eg=6wg&^REl-V7ia{CHZ@G73& zDHLo^3qFh(&!XoF&XLt-5`n*yS zy%c^C>{uMD5FVO0{-v}UH zSs@{y=tWkObf&u(SZF0VG9pfnXpO!q%Ch^6~$)g;U?P zxs%6eW#I(LNewFL6#a3>9^G#6rIIhJ7T}@0Q#U*Cj4Q19R(+KQD_{Ha2`H#{nJV7X zMaf1_sKa?dwmJO+DMk6Sn0EaunXkys_;=bI2&pnq@tFOR5J)MG_rUKl3CTv{cfh%y zBDNG*42dUxw+w#wM}iJZMc2J~@naLnAA79tDq@S+P)(`)rAzF}>C}%u=w~DJpJ+&S zP>Mfkopce$Z{y`pC!^H#GA6`%bz37{S>jKz+y-|@ms_XBWVX_DNl1=f5IoCri~iu-&gTT6fwtH(zUEg z)?$hyF1s}$s&i-cX_SHW*YD+QQ~BO$^QT>;iyv%Nn3}Oz)DaaKX3lN4*aA~QU1K1`p4s8NLLY?zt#z< z55LoaPbDV_a+h<$uBV!XR$Vd4mdtzI=4yhYwq~Wo5bZ0nL_4}jty7ZGgIM8&*8tBi zFJMe{s=_?G=hU;}vLIya^3C`Mn$yZ%bQfuM0RHNAexL}j`lT)Dm^~Ss@fHq^ASYKi z(tv*!D?XcB*PgptyDqy~oA$d}lNKGsFYV~H+Z%2V0^}>y1v4(k>W}f1AQ!k0Eux^r z{>b2@1`xMDdMw^16xr}jAExf5-AyZJ*tmaQrsJE``Bp!NGx0eFJbj?LR^LhWRh6Jr zCy+LtAH!Uw3B{IetV8ELtnZHJIM_UX>Yw;8$%XrFNM$Vw`p2%4{2_C5$$v}oUldD{2s%cm z{BC*qZ%+KKOUzUM++32)2+6yDpKR|vHAR#3t7F$Ri(KJT4u`>#3e{6XPubHt@7mE? zw55Z~RRlo4j|^_2_1HhKxUhf6PXM-(B0RSELom>bS1|UWfk$9@nP$f8`FFcAHuo|K{L7@te3!WvG;Y+6~B`a8J7t^3Rw5 zBA$?WlD`Yhe-cHBk}bo3!dJw$c1Xni2Y;#k*Jpp|)fYr%Vx)|eY0{`->Ff5+%Qr~b zYOgg@jo`b+qm9G2bb9qWKu728tW$%INeZavuCdUiZ`q7Vk81b)EcK}>z36Kw*!#ka zrMVCGoXJ2{X8k`tCu|Lx{2yhVvZWgfYT9+`qkAV!40RVk?U-uXQhrN2lC-OeNpdEs z%9?Ak$}}##M!RIRNrD~toPeP(02Sy>mM^j@i>Lz5FQa zNPCR_r5423Xv{i|$3g)+QJZKEf$yzO9{0XochT+kmx-0uyVEM0GP~M#({7MspnE59LWdwVG6_subON zWs!m(@h3Vs9ig2jr_rPj5TjPCj}s z>(Qy5&_QE`tx$i1ao#nW9HSf8M!H|4jUrY0EKH5>ic&vc_U!#J(I1OYnIu#ied>kJ z#`GV2qK@Yqs&bIq{in3FTarI^LNjRzjh^_eTmN{_dg`A>PDCMEkO-MtTh%KT+uyD@ zMTJ4f@@a;$g*s$DYpSh#(K*u&Ar)k1l?x3_We;=bUNn3Msvp_A8&;&^H@n0{nHq7y zq{5sOicKy|!Np1<%PD+xL?~Vfn`ds#tU+aR zI)ytFL7N*YIPg%OQh`iL=~XZ&WI7noF8$gK_UMdxHedR6USvpDUwWDyzt{HGy+a#! za-0F#M26?v!x_ZGSm=nk0SJ}~68-9>i)c$tGi9@X! z6A{c*%YgkZfsu}a25sI!N2WL<(adTpsGK%wn%!~JU3SCh`Sz=;PPZd0I}n`?#lhG5^q;T?eK}imAn2=NCRxUE?58?_}7T~vBq#oUVav5B%8U6&KkV6x4K5(m@aMkmt*!ZV) zj_tc|iC*+7KD^-_naSh34J1PbC0lmvVh5e`BWu>CvuMjYdO7^yA8Sk50oh` zZfKV~@#qE#X3+|Xv|;naWobksdM_>iZq^wT^481$X29>%x_uUP4bdMoe#&1+#RcP* zC&?7T8q0qsU|1*U`tuN%LY-%XG|3U%oC1PL4dqmwU^wy^vuzt~^lXEW+Q z4L*eA!v4J;03W_heh;?~e$uQ{{z|YZ`p@GBHCLnb-$4A-4qlf5-?5}0?W`X6ye*hA z#wNV*)Ab#WB!i$dlt#4#^&4T0wf|E7(ZRa-|2X*{I#=Ef z$^?>Ro>`I$fBDo(d;8f5HsO`&TFItk#ngfEwu=&xjpJU~s^4eVp0@L`1FfCDy-_NE z{GZpn*eqpL`LNrB#~Z5DEd=P|wl4pl?4PtWVMz_$uA{8{=l#ETUX$Z>QkwP^aD0K18>h194*x84Lt4=(kS1iLkuFpP3kJ$7W^b=8UC88Ia)D$pUs*6k{?sTL{u|%oH@dqd{X8 z%9YvyuR-(n9s26S)CXC|UMCb`gIpIr4_}G6z#G^zZX}z${X-V2$n#&+Ye>SOD2P>vTk@{W zn)1B-neef*K?$*nRnjebS)-FWcHZxM8aUyY8vw-R{U*|E1ph!-pZq;uKbwnxgtpx(7mh7G=P34bx zt|WiHgOcR$V|$tWoo(z#z~F65;RivY(dD|4`ri`rcR_s!{Fjb@l**s-m#M~O2c7HV z-|bi9UUe>vL@m=dpZ&7tp;pioj5fI@R@8z}zewX@t+ukZ9rZbtoh}pzGN38p(qkR` z8hBi_YK||AnKkJNTe5hnPeL`(;4XbF#(4dEzGM~%hvEdI{Q&4~5~3AAi&sr&Plt8H zWLEOOf|sw)Ax8fx|2|owI407!+3rZ&s`n?ASCdnYC1?koU&<4ND6e+*j~Xc+^}S8T z^%>u1oWGe)0RT6POPQQ$sy;fKQRFyn<_j;|Nf(W1rFk(|7Hq#Y=3TVLRFr_g^M9(Xl3j zv#?alV}pS@*YKYzGgb;Svyl?lP95#~Jqyj`Os1^+T~w!Jj&d)7;z)iIrHb;+lG zY9mKZu(7It7#~OPcRX;eed3^jws6KG+iRC^+q`Af)~ZcQyXuBhY}nAjwp)*`_WW;t zZ~yOxw`>`cQPSxF2W)G1{`m}RFMX|+>^Y5#V~yFQ!M6{&ur-eGX_a}T}*t;d+7mt>ybao7`0kSJEAx% zvRpH!zB@{H-`=ccC{49Ph<_Lwm+#QYFh>E5V!@1x7ibtxCA$uFsib6grEw

J3?? z1zr@?>?I3PV5HT95B34VQ*sNJQpE33WJnLXb7gqby?`I!k%9`0N8c{U-8)LqnH3o2 zf&Y*M%28?@kXm&<@IV}C`6t8SZ^8WKRv~AC5(Cj1>)f%emE#B$?Yq1Kl+# zRa3FTR!n@=roQ%!Eq#BIR)Q_}!4$8TAwslMv14z{=6C2b(02aJnbyA7K*3L|4(sBF z{*XJ&3x@ue;+NW;mneU5l_gVRp_BbXXM|yA2~0RI07f3q$eUiH!HD)8VWdeJ3(^e! z8-t&$2@F`F=c9l>`MHqw#`90<1V%`0ZTUBp|B%Ys^2e8jyyA}i{VT{{Ockz;u|I4% zZ~xdY)>Uf%4VC{#-TuAND#eHY3DHG)(lGqQS8TC%X}k!E>mA`0rP}cGP zAt4(6^TsW*8E?+D3HqpO3*QyRYPt{~jZ)5w=8(RI(c znDPt)$-3YUlIGSge`rkh?*lpjCadfw?3)sj!6q)dc>Ji^f0BP3#}WJ|`Ez!B#iG}3 z;JSOWYK|V!x#ax@ooH=3>x_2|`~l0sgHu=Ppu-B`lz(i9 zi#AfB;x6P2xruELK_-zp!G&IhDX@S`5Bd6kb@dEex#VqMIp0L9tNg5d`KRXU^SGYK zE8KM8p^J+)@hVM3t*q4UceVev>bA3W>wSc^>O7 zVE-KT5q>7LQ6Rh^&9&uUX#YDijjR7s8wllhXE=3X${e$&@Df-w(t7@R3fb zh)ERlfc=ko>^&Rv_(Xk=S_@o#u?mYjStO^S8ug<%=I7Y+53$yLbljpZ_RcZ_OXV@j zq9mmB`SM?%{n7vN^!z{wep0u_)c>XaGT~41S3wb9_+JoY+R@{ODSxQg82sczKBe}z zrOUqy4!n|EL;asp`a%Jhe04!Lo3d= zJtJlDJNUysnBdlPC|`N0PZZ#PA)%yy4=vGueey@L*gt^DlO*kkvmbD7h=0;R$GY&7 zzdrmRU03}>eINDyhVcV?efWuOEPl_TpN8vWP1uxb>7j+JD$^YDm{_S1D*Og-tc{Hg>c>3*Y0#_A-Lp zlc*p%ZCS@Eg}I$7g8ml?JddD96PSBEuh#A^k~GseV~5VWS)W12t9{f(g||FJ2Gu$K zsb5#s%(2lgT&+clIwD`+*leNk;g;%~;2UWtQ)jc$f@7&$>GM2gnm~I0A1~P{7e8*z zH39YHQx~gWS#DJm#@G>G{G;tWWRQLHk|S-qwr$l$R^L+fHj5qEGyvVmo$+br5Ln!W z%qtYvwtYK$P?I?SebXr0s$XxPh-$C7g|rjN?Sjq>E045D<^5Mj*(vATXK(7nkM7+% z2x^(_cFaJ#>HB9`*R6O*Lu+jA)G2n5j_cd=n4RswAv@aXpFT)q=}T?c0pGJdkK4@- zJ7BQw*rm0-eD@>v?YpMfQ!o9G4er<7?)bq&cGETY+h{F}x%#JHuw(WaWDnflGQ)6cjz1*4(8DL*L{Yd-FC-$L zFW{;z1PP6}l5oi)!mH*^wznSmwJo1HO~5$jg%7T&BP~N=g)<$rrs@zk(?ACk3Q*#P z!?QYFVMM^vUj*rq2Y%!36e>P3Lok;YMt>kcskwR08NggXXM?e)G~`oZBcH=t z3qQ1xQ4z#t@xG=i3(MmtDBwVcUNYwrr8|_R6au3-CqhY5CTP+{M^57ak=F+VVnwVX zvM}=Nx!{zTFj9It_Dm|#iS@}P-IWfou3kO(iZgHvmNXK2Ab|@_cf~PtE>Ek*7wIsx zj6)Ql{|+#d3D65!-MSQyxco@HXqKXHH&$g1UBErCK&&gzzbjcV!2=?<4ZIyZC`f-! z4SAJ_uq1y(;PHfK_=zPE>3qvM#LB7hZ77x%=r`byj>`q9Aom}E!zGyE3iyB|F0v&2 z2qG0D2O}VKYN;fc#HnTG*#}lN6U}Ti4pfmdOdOoITlQ>lLh~tqJW9b1cXQwm{RjRee`s-f{pUaU5r*qD$t5R$Rv$+B+c^FI ztIFSP$mJD6^8srDC9k~w|Eus%ou3w`zrkqwLQIlXLzjFMr?d0oe)9$Ef`K_W*I8 zeq{{kRBvR|f#_9$;Ru(FLZOAA3Ym}IMuo7PlW&q3X6+aZ0d*REZQa?Zojvo}no zgff=-sqUh&*;x7K?Vr_$P(s=8qQSFRDCpbY<$01m(tQ*3pT{5V4 zi5B=5{&)v00!Z}H-cs8U61j9IHMl)hB=z@VA`&W{;$lLF`ZmLz^6MV$AL&v0=NKD-{%o*M9UzXdTcybwpPW)#xKo#%tb5ZU z!Ghm`pN`*gsNly|d|oc_B>B_+N#Apg7#I;qm<4G3555WFN^$Y#=@-s?)K)Bh#}?05 zJ4qeomRcc7zs5V}wB13dwsmdwGUtmoz7Itwlw&Sgh}5O`KGvh(vHI@X;1V2BW}gsx2gQ&J;7gqrw7^} zAGh+4&b&+~fqz8mU&tx7e`JoW6%B+`I@zakn!Ww<)zU?++Mi5TY2<>sM9~cJvY4QG z%TCsN+fQ11j^hG^U%@o|r{f|-*Gfj{$YfhpMU%xRoO?e{Xv`9 zZDAeyciV2H|6wvECZaL}=B8`u><8`riH~SNeu4V}j-W$NjBl}nr*+#Nw#|;8*Eb1= zMuzm81LI`sJ;vYE_NbU<%N9@8$p=$)Jlbseo%#A+{Gwc2Uw%jF)nf56OUi#3e%u^? zMqkj(7%hmg&n$xWlNwRp;+7(Pasgx0^BPT#)T)8pqGf06sJ3;xt+vw-T0mv*~^ zLB`ENvRHkxjeF&KYbJP1HZc*!W)uGwstN;b>LzOc(gtqby0uS4&HTqdwIk|rYtf~% zJ^kb*N>gq%)5hB2pTEO)K5#ob|KcMw5!GHRNQx6t^aFgsi10R3zlDh?zR}lIlV4>V zC8!Ce2d=#(CZhWGwTB=1hIM4uk=k;}pSiDK(}wy^tClUc+wL7}(`PQ1jH_+xE3exN z3v2B&N9<>Vci+Z#-*bTNKB%w6w#0Vqe~}${@?JLd;GOLBqxZGBW8btLhu&b<-+qQ2 zw3l|hwJW!ABVV%phTmkrd-yy%ZrE=2$S+6O&DUxos(o`C@x+z3$M(JK)dya%KmPWw zcE{_pY~ti=ty4MQAVu!z15#`4F-=5$^@ca>tP75{E5CDMwj)ZB#Lt^z-@WDuyYY@U z?3M@5wWIdh*=D>p%0`TysY#%YcIwFoOF9*HK+msRlfAdLGtW5IzI5CHw&?vaw$(OQ z+U<{i(}oY-+sYO$vL|o8!!CYkn!WVQcdcu?b~gEy*X)5m|J}Z?p0efhXX*o4)tWVBXOw12H5uh+K8kTSURCh11t0Wq z#h-q411cA*gxD=qc#cx6S4@u1IRYSe+`Y9Sq4-1xfIOA%{1+TQmd?TXkK-cJ^OIU~ zDdHCf5#soDFW_)+!l#6RUk<_xj{wkU5zWBxhO~mn$$y{kNsM`bNBR%Zj=}Q^6X}GU za9=G2E}r2P;Jhfdsb;4gu<&bM#qoFpTkqMc@?=PXr~GC9j!^&rKmbWZK~(W382lG3 zaQGjM$Q*tuUoSYpo>GZt0ge1lpxDJ}NROEwoN~Ot zoL)UkrX(dzapFhM3SlK`UjINOCYVn+K+YA!BNvkRK!^}I&z?&dWINzzK!j^!?N2~K z;ZOm^$_YA3Y3pOH3Og(O{o5Owh-%ZbkL~j5v$VrVGtJH7qjgRIbc!D5M1TZB^aahp zm#@|3KT4Al5~ehnZh4D~96(z41+BGmD%x$P6Z`y9bN8ESYX%Q=np`9E}x{PXo6ZyT~dPm>5Gy{ zr@OBI2mC5UMw_l!|B%NqD}lF3QUJumt70ktJi8t7th970^9-(8rL()2jlu;6B-%k$`kHUiYq zsPKMmmLRghU-0iNC@{oJF5xGUGWo(3F9VbXwZGKa_woSX0Oai`h;m%eqOyrhh|V4( zZI*&K+LlZ@@ytRUIzYARAl2xZ1u(>Q-FiQL9A4+Cm+M&IChF{ZexM32dBK^he~?At z5;Lj&8*TGqoUp}bH#sjl35s5RjcoTR@V5SdCzSQv#kf{80MxuoJ`0CK9}$E%Gw{;AJ@No z`y*^V$`lew{@3+|>fadxKD6L^WXypTj79vB zZu8*Jm%qe+-v5Vz*TtXb-~9{pq6m>#TK>j7K3>Q3jknhN7%(!fQ5b) z`sTrBet3j6Z>Lq%i2#J>z|cEKE9hLCf04Xa`v?AAZpvE9KlY#WzrOabt00Fz+6n8& z52dB{uN+wza#sSk86KnqJ+DvxBrR=+ayrPe`6F!7ShX?L&S}m94z+)LB1&zV8W#4- z3AJk5%lhr`6@6Qd6G1X8j$iUpJ+vjtKQd4LPe`5JQu#NO|0I96u>uE;m;c7%51Apb zxI%*ee)!$@6zue)$3Gq{wSUo6Y5Dsg_3u8Hc5CK;u=VxfrzN?*@*gFruKi(=ek6GW zdlKrOYVE9^Jo?vatItr|PVGA#M~5ubV$}e?zL!+q*1Gl{YTdT|Y6i9*{}T=>K`z{D zD&MzCO-3zWGD)9F8Lv$QE7k5@sd}o~+m>FBIIqg$IE9xT3L1AUWBfNQ_EC_RXBBQJ zOTX|WYDBM|s83Yy(H^IL>En@VXVbp!*kzz~>9w!5*EdUBx9b!1fkwdCR8qZstc`p9 zMxD-}GYVAiw$yivTIw4}Y-FHM%tRRrvN%G#RT~}MuJQhv+7Wf~#ZOqX&YkRuzg?*B z61BCJZ@*zjed#XSW!NCQ;Nl}~ppNESqe+leT8z&zaM0xo8Kq}-hcy*Uj^=B|u2l7h z@W=OGdy^)j##)#DTie4AovUv|HP7lDXV%*~Yt(n;`%>yeDUgXn9mlu4+TOVTQM>Yv z2{wDubn8B-ryX+azIO4~hbzTO8{Gdw8*<9tcF?e$?Td%*ZsQ+(!1g`!L3?rZH8!wc zPivuLoR=(}Z@soU%f9}jlkNP|4zuTOea3FR;a;0Iu&cc`;yP>Jx`nNr@}B+e;gNRg z6;Ipi6TffUcGP!nT`8d%PD6N1ySmP};Y~aHg5h@Ml_yGfX-8C?50+G(y?x;ofbYThIV8i z6d-ph-j^f{^wE%@5XD6!IwqM2if~V;=tx73e7MKL5+nAk+9ZJ1mC|`rEW_jZdCuXd zuo6_nuN-RddZS6Dvxp~fE2&dVID!TjX+g*LnCJuqeo_V*?9NfDVt9r>R^Vj30u@38 z6N3C)WAGD}QOFYppp-HStxQ!08bgF(ARK*y6XF*1!N2h0(6ZIC?!=sDC6Zozwo>_H zJ336@#DD?J3^n-mE=angLpf;ubDbgwr%PGUv-1WSWY#5I&VQ06i9HRlKo@X>Pcnqe zQ-KDLlIZfE+^rZ6Ncac8f1DWFmC64UUdRm~aKb-Aa{PV+i>E8%CzAjEQ-~!5`4g@b zuqV;zO%HOfI{#D!T)OeyP%7MfAdaK@R_kMe!@hQvwdp-b8FZEe`0KgcK}&YnRPY^% zoL+x~POLgsh7v@aZ&~%jyY(KzBPMu|JfOL7xg3%GTN>$1nu0s($tr8|$ozwbON*i06$o9|9b_#sJ+c;^Q?Nmg!vRH!AyLjZ&j zo|iwwX7=YcAE<#)xEjMhnE?4g<7c80%*YJ<{5C}Y@FsD%{1gABGTtEn@@0jU8IC*n zNB>d&_5Lp||78Dg`eEpQL-=uTemq&J{fpieQ{S>hQ^wkuzv(C?zPI9KQN;p(iLaD? zkGc9DSX=Az&cBL&DgM0uCI9Eex)i_YD)m3^KQkWy!VTJA&i{~pQ{+#*k*?%_>cgMn z!mf*sChz}}|4ICN`$W{$@jpVgTAiw;6D#cL-@hoouk}yz`DxJ*~>S=r;-{-65K+e9?oCfx18jxIpJ>%P zZ6o4%1|^r{*PZme=Yq%|7-N2=^5|*(v~jJpn(Pp*a77eQR*c7cf4G_ocf?6 zO4{_-_rAu67ae_pEHuzbXPceyHR^cx9B`a%z1@EaP1Xr@!32KfitaC+Lo} zb*{DTFVBD0EK&~gDJJ6|JMfDe`WMbr|3*adH{o9kwI|u~__3G7e~~J2gUm(0>oxJG z1eHtQv}Fs&+SG{;OE*mLMqkVAQRSsZ`e0CC&x3#I6H$5nBll7nf7twkpRyPeyCDJB zmn&p#`8z-8Ip=@eKWst$m$v^c0lqKXANG17_|DJ1NRP zig8x5z=ONQO*-#n)3>rB^!%cY&jTbu6PLtYiXUYDPxV=We{!y>w3+Yy+~&_4?RwXMz9B{@kDNobgZq??K^z z&|i{$F@D4NX?N7;e;g+WKOp{HGw`7Lzp?z+SN=l=8|J@Y5In%H{w4qCasOugr}mfI zl0@QdPwcE7`y)-M|A}&+Y_ak3FV#Qz`5s(-*Z9}3(nQf%%>k|QHeVuzc3v3P*aj>^;W+A>Y7wN|@{Qxs?uP#HI|mwtPT z-FUCQM_t|89{KyF)=_*6-sU1Z=;VFuphI@H&mOdkJ@f0E>@!!7w6Smh%=&2}ifgGR zqI!2a%g(;;6g&G1huc5?pkw%c^^lc)a#y?i`U|X0>!!A9$!vRO#7p++Gyh_5O!|Rs z!$efB{)bnN=KJbT-_S&qc0^r~?TGRnd}TK0AOEl){ogZo?@M#+_4lsP5qs@y_ES&W zNf$q0uj+`wR+2kqVdavQw)?R=+Bw=0b=t89+G6d9>eNpYQGdP2jyZ5Q9koBjEX{Zxs+?FsrNvcho7WR`nPPO5?ZfoVz{wnoLR%)_|i6~%uzfEmm`uiN+x03Hf z>APAx?0uQ)Kb_!^yP~a(1r^6%iS|-}4I=U!{~klQ475J~+o*}Ca2^?$;7yPN`)V21 z%9-PB(S$c_)T6g&oi#o_9tOgeJB-&Goyr115a*2?%4l-P3U%v)U?*Iuh}W|lo#%>o z>`U`RZfC@&6r=-JTygg>FRT%Y;7RYX`td;^?gU3v0l!y7p1Kef>FUETqR|1c!4VxL zy$WUyy~mNpQ*tAoJbLEts{nu`K70&72J1&mD5)n`dSvKyD>I#5cR(~c0Y^MQ9hO3X zF9KXF5CZM-<8-;xQW|x|9HtwLbizAVl0U$mPJ$uNJp~E$=L}+KTLXdg0YG zL`uj*|N2*`kX-+nJcw6v;HF&8s{+>6KL!yA^EjeV1b)KfN$G?az#D6S39idqpuEv9 z=+sqo&{!>1twEL5a{Ns-;M8TnPPWr27ixuX8>Na)vXd(S@b9!hk{%h1b$f97l#07< z*cbTxLF{55E+0L>8J1VDJ0$}cWr_TL`Lj|AxT{QoUbd?%Z0;+M*yz9BBj;49%0R0T z7?6_D_>L~|P^P0X+IHL84m|hg0WS|1IQ%g&%7b4}BYLuQuH#5m#P9sMG@ReG3Wq!m z;UD0EFT({sFEkLaFk~ z|Mkfq{ku*7NB`2P!lt28Af0R{szuXsu|EZWU))wg-QKO#tlYet1?FPYj za+FoAPek1vjs-gr00-l~LG_aw)p`6xdWj<;X=S|rNd1B>N33E3zxzMn5>G;Vzy?MJ+OgUdJOMwBBw?9FEe6zt~(Mx*YH7C5O6XR`G@GBi@ zA)QWsjXFlPt2J>`p`ApU2!+k=T7BAMo8elw(+l<>+4+onW_y`#lm3xuzWgV-q&$fy z2Pfp%2LGW0o%672^+KEc){k|Z$~>vU4Z|lld|{pBgJ1K>Ivriys%;<1ytyr!_om9L zRxwHz>?p6&E-%i)uhxC*0iV%C)E9*SexVQSpbD8$c*x`Je+8xX4-d-Wr02_jefF35 z56F=(*OeHUp&^{pEN@Du3d)u!&IyqzY?Q|Jbv%1i(Vg~g%&+W`4jk+Yi!(; znuvO8qP1pmtNfxy5>TgfrAb8{y;G^dl9R4I(kG%|8;tyNxet<~X^j2jms0sd{`7xJ z?ceLV_3)qY2Q^WaAPF8z`6qmH%Ri4FeCRg*hd%Q1-_rQqYoRbFA+rZ~R@rquZ(;ty z5C7i&1EHHo*#DZ<6*hY0d6IvHpWaiJEe640Xj@jRzU|PVw{_~azjf+$Lea7^6HE1= z+kRx25&}amJswKliO@NdAGg6xDfs^)K}ws##X_Pcn%tuQanFx#u`6yJt7GVT z+XMH1&AMoJv|0e-*Qpk7`0F(``Pq^7sY{=-U;O5)cF;kC)Q=(^2GY#t{(Xd9d&|rA z;``P1;8T}a7vb7|+l%eMllIWJq6XWSkJ#HLjd;xVJoPX3+?XHO_I-O>d0BIxh}yd2 zS@w+|f6mVO!l5?u4}Z5?uD{pb>DN|mlV4i<4lQii__yuJ2mWEFeg9c|W8x2N+YXwD z5>45EeGjX~9=VQhM2)hu&OgS!bH%5`Uv?6f#QulNe_^-ZH_9edwYJHVu9rTV*_r!X zX76+iqdU;@xD0%5^#Ubs?J z;7#~-S5g{^I3!Q*#))9FFip?VuqW0~;3pL@lvBWy{8Qe*uM`>oBmkseYw=I0BKhz9XYaZ>ZADZ> zI2A!NjT~%J>7Y@#i1lav6v7-aZkSlohUBuh;FlQqcLoAZhMk+sKSkyFcUa1rV7k*6 z{MZR4o>joxb?c+USf_rvyA)K!!3JXEBKrk`6920wW2u=-+D9 zKtTuZ3dH7NA*&<^^9G;-L)Q*I`zhj!fa3e=sueclxxd)l_w?)l6ODptJZ1oCsa$)Ee!m6@C&)S?f6545k;`4@o=aorzg%LNWgo<@$7m0CrhGd zV)OjF@n!sb?yT%2{(-tB@hAR~e~=oSeVp+Z1YcyTAVj#+K0o*6E^iX&^=f1L5qF?M;a$fKLls7@vK+R%dM{e*;4kGnZDDKw}0rt|IwC$%u@WpTj)Q@J$Mu4 z&S2z%!?-lTQL);d{j~;h=jwc!oE^d5a(2GbV`3*FW{i-`hlPPh^T~(aeWz*3_rf0b8h#_-ZGV23A{^t7FGx z6ZR-uZLSVjxmL2V^6;kb-D?j$H`zwd)v>rOwKMRvo$ZR#53x?_^s$nV@1s;pH!S>6 zaS@E57g*rukB(G5~>)D^( zL`q9rP5(k$;@kNTRi*Y$vU$%?=O=O%gYxh3TvIVcs}IN8v>N^bMZ04lD`h+Te495Um2D6yxL>Idc{e^Z!bpyJt;6KS9@qAePCt4DId;)z4 zXoEjUC64wNyH}wcUsvk?C=hx53xK}^gX96_gVjHJ0C^nc1{Z-J-7xuGU)@wG-}m;@ zlWoF_lfzf)I7~{RyoYodK7v)dF%hK|(77v>f0v!YlMGAoyHKGfvy=Mt@AatD9)4$i z{y$_}fBB0^H?&sdKj9BLi*bbW7C*{?q7^{S`tTRhdy4w;D@w_VI6kQI4^HPL!=K9d z2ZbNqrnXQB6hf$nrr8_MecOFF1FHUw%uLQqTH`Ca_Snn1^*PE~w$rx?oeABt_9tb` zE1#0~2bP^Lf6g|#+)VP{lKrn_n=tF_W;_S&_#2MTF82RE4F2o0f80xu8lGiK%D zt^XQR{y^&|cA%&XKTnlQUbWd%AG7&0UyuHfCaH;5b)`iR)W0pQ&%mRsQ}53!H76U9 zt9Ye)hmfR)h{a0tiPJmnaN5f{wvNT?s~4+1GsbEw^-bBz#cB&L&@r?NwD>~bAl1JF z)9qgVhb}g?Q%FcD)NbI7d$h4bo-N8dS-(M_vNr7o=sTG`)RryJ(UWLVo|>69YUKB{ zh)qY9YIjmg|3;KfEm2(!VA>|=shRqPE!1ZzSG-#EnjrbDy)}N8ZGXyOyXS_l*hz!0 zuyJiy*;mgz%+5dc5G&I{AQsShn^^ryWa-CjLxs?D5=1(g!%yeX`(2udy6TR%ZL2=L z?JxJ7VLjSvf=POy@8f18I+|$0tfpeI4czw^RwF>ehHY$&d$d-B0=i-i@oUH{8%{}Xmq+MVpo6Lr+xoT)Z&hpX+(E048f58cCd>fG91{PTnM z$xHrj&yW3q?KP;s{pGrc?51nA^QmbI@p+x~?bzP#{PCl9L1E+g^N zR#cZzMbzr3y9ckm)z1Fa82j3}N7)tsqvOW45D`JndFEOB;wAe2Z2Q)B@G-mD|6ceR zr}y(aTw>3xSfsY<&i3f7-?F8zzF<3i@+RwbKtDU@Ysc7^KQ+V_OnS?@4Emw{?*6mw z(}(V3ZK^8lmHQsEBQ6?YqbFW(+jQB=roQ-^J$CmqcH`4??as%(W&_)3_Zo6%B8mwq z^--YF`&|m-Ed0EgiWo=W+pIfa8i=Z^@q7hGJ z4q|VPxdr6%IwZwuLTd4((Y9dfyH>k$8RsRaFfCUBs_+h-tk-!;1xXey15`fuJvnau z5sMc#cy(0djgA{Ypgwa&=_Lq?Y(Xc#dZ)9_&`lIiGLlHiX+!|u&*2R20OIT^jz)(^ zIpiXKMJZEV{6(Hpcp;Gr4V@?86DDFD0WiQXK=7|PDD>QVXT=|Qnj#UF7zpdPuw~n>$eOgBL7${0I{HLxxujSu~Sq!GDrlUH;+3X#}TZ&N6}qSP-IL zJ#LWyr2j~rk+%W-Dm}vB++_H5;|jEapPEC&xc)Q8;FQte)CG^OU;Xe*oL~N^ALR{R z2rcsOH~_6sw()z1k%W>js{@)g*9yK)J@m1;F4nedPyO|^79I1Q-+;$2DE%XYI-r+I zhRe-^a6K387JNtutZ_M+yo-i37)wk(Jfg$?3V=O(1_vb0WSK3SKGtTw^$(jp`gxUK z4Z<)`rf4b)zTbck=(Y2{w&O|P(uxI~X?6hvYDIWVS}PA>7?qP(YX2m~=p<96p>d;g z3*Fv;)KLC`@A3c-Pt?fdkGJ*W55fY!*H;;S+~T_MV>WsDm*S6%jmPi)XCwHp!)GS{ zjp09!Kk=W+R;m4=*W~Lq27e5iqA!FQ@=y5jgZ1HeTk;(1wtqD9uONTdUkDbC>Xd)% zFUf**QNF@?yUpsyZCg<7)sM{WECD@my=P!{Ep(?-Z4pt$40@243Nw7y^Zbn zxm~UO)@@u*kvV>;|LE|5-)U3&q!-XYdy>Bdo}nh9Zu!sKAKDRV^~&F6p*T1w;30L! zf1U7+#1FW2;Sa9s;s-VLPtuL20YKR*oAAaDbTr>I$)Q#gPR*>9CX`yLgV#ipt(55| z>gcjds%7hP9alNSF1`FAo4=;H_0bBrrZeZ+i*r`kjX(RG4eZsy+Nhk=XaJTY-#G7` zK^N+0c=k5B%3E`#X{IAAm@HYbvdV6|@p-%U=l`%>PaI@l`TRb1!a+MSlPjG`ddknr zN;++VWQ(WHv}`=8Sl~Gs(%BfAL^r>@t46RcZ5eIp7w{i3ZD^559@4;(-TGIqEhqWy0S{^WnD z|JU$=3dxtt%aZuQwvn{+NI0^S{Ly7mpNdd$#gZ3&B5KCur!)zxvPIif>FCq=LMqwc zD&g2=$n~0t>gv$+<9Rnn`+H;fU!VVDpvMPPMSq@unM{HAf=|u#kN-*aB69Mwr`&{v z|3|(~b{Rb4_BP^=;;2+xk7*WTgA0c$qnf=w*|H3sUp0U65 z3=Y8fdjrZJ$1FzPwdMa&EdQzgEi19V#`5nPqa0HfC9!<_Ykl^w#QZPVpO^O>E$foM z`vyg#dhDM`JP#|_hA3LI+$xrhwYOjSnGdcqpvt0Yi~*bE7%O(?cJF(b_3Za4_2;Q~ zxB!X`0RsXvd*GS43`ZTizmoNWy@O%LHQ~$$t;gW!B$wTGqgW|uj_D3Pz zobqod{=EHx-;Y_vOg;qv`(g0!a-v*dq`H#*m-^or|5dtd{3FV$G9W9;llLp|(q8hs zT*FT)=LI|)VgGo4=t|>Xss342GuviOyjPP^YD?f2SahxW)E9n1mj*05blJ|f+2sng zoiz?dScV_k@C&K_E!dy@e_WnekC|Y2&Bosn{xZ|iXce=yD62w$E7jKLTT;u_Hm(qs zTEW*uy4u@oYAaQ@sjn;<(RNoO%1PlHzqJbEv@(v0W@5c*v)20V>Ot1I`yM)>sgv5I z>=@Fu7Jm8@i)_ru?})-`KZ?4Aj>T=sj;O+}QIRZpFj>@G3q)F#>nONpWp?+Cf3uOV zPq9beooA<=u%G?@+P~Vd-#EZd`Sjj4RL8>A>d3d(pB!mVj#+9a9J{Oa?$t?0ATGDt z{_wK(+M~M-+hZH+rv3(PZWh9`OZA>>Zndj#f5$p))5rdD=jql%lPO6LE>X$V+j>oE z?PoW>V7LG7A7ZJged^R98E>oYuMfR!{deeTM;*Vfo%UIUmsQ)z!@gs)B!lkTbhi^f zy{Dag_%8O7@7-ljkJERdx^HDY+qAS9W8b#gzJ2V+Kl-Be(zmbv_@jI6mTT{~(XE@< z7fw6eI;zk1`m=9qk>OlB;cExkw=WzX_KGT8&FTke!sq^Le{bh%B5KDywzGqW4pe_H z7S1f2Fwy49essKcBQ}1~!J3szZ1uAF>LARw%4JIw zq5`9Wj{#He01?h9p8co=rO2XmSAwj7f-Pe7z~v=YDY3+229GNKQ29sWF9u}TagsHL zl*qXdV6q3QB9?g4ZzJ%pEr*azQWW24D&WsVj}I*1hlq?zo}5SLFCf>)zYpN%`FCJs z=F0Fp5W)vvTv3Ri|7T?yX?`OkD(WJmed zgCG9Zr~g=O;i&zGm8=vZ)f@r~ZMrgYLETXMi!5XyKPxR&lDPmar^v3M=5539b$taJ^tbJ7_ZK;?rqy7TNnNTYbC8<_f+9E77&m~VL| zhxnzUqOn~cen6&c{@X9wjF%s?Iq$rs%1hg1wfYjdt>U~{>9|al&XBXNv({bvxV}s6 z9$vtY{8iHR9QctHRPyff$1e4s%NrIRN1900SpFTU=N3G_ySG^KA2>_#Q%WMZe*G7+K$Ftu%ijlqANxZV z;U>T@7DTdlwlijsUvRN;`rn-V<9~c|7=kiip8QYE{3*6jJEC5H=w>x`HTj`NtsJI& zjE?7Ga9ZEfJL;-CA;+)aNlEku|GtB?#Q%}7G5q^V<1A0K6(l>iZ|?QmKloGm-%|Rg z8ZE`oAU#)o_|uAMPoN(L`US!LFXfFqy6LX=kY3yslh}co79dpE#22UAq*td=(ZoQm z>WWpGL{S^nCp>D@;o0Muovi=Ro|@#4u5{(we=c{)j*9`*gnwQB-xFr|c`o&Tsr z$$U6g_Q7+}{sr9`B2a(X6^|dR{bN5~K1D;q?{wGbgR#$Eq|TLg6ssf9ToXjCRfn0)OMyQJ6+_55v**?GTs%?>_sA3OhoVOIO*c>BcX?zXFLJ=uor($}`{+R=}$ ztX2nyV>Z}z#6K6MopSke_N!Y?*DAsttfl(H zfBM1gcK?J5`@_v=+M>~8?7rKcv1=ckVY6pnqYoUnkZvRi{;N!Lyu=zEp~2*t3b`hv z*fGRMi&+Iq+g#~bA*p}0RU93mbIkP(7~;xXcelRVpJc5%?jL-Hfa};_(mnTxc26I{ z1jv@vGndcQV7)r^eE(^+I`p+VmU#7=Wwv7e%eH9#yH=&ebI^+YHTB(p>J%%F%NYL) zD3zm@t=d_~o(EZnZU@U3mD}Xk&lg)9%STGF$j&e6hocnB+jLWh_gL%P^O!p2FLtCk zNWqNuN5B`157Ga8Q0))=7JkDo-9mEStW*$fRTX}fZ!brgR-^w(StF{bk2Kkf&X_Qy?TXFOeqFt$rR{XUwW@Ejf#pzV&>;Mq(*DlKORVU=Y5u1^{|9g< z8J~x=a`hkh@jt2lLq2$Zx;)YUm8|5WTw+P)8UF!y%h{i!@k$3A(kEpE8WiDeY7v`! zC$zxZ;_(&s-pI)|?adilab505^+=U{ylBR zKhGQDACnI`De*e&-{DXONTNmp_-Xi*4mPjWF<49IJ!eziy~mH9qMsXSA@=xur`tWu!<)31(De^~WuCn#mKWRc0A07ES%~|;`^}o=|RbTn1T}oM_Y^MG{LL`j(t+f6N zNDb$o_6Kc*wXZccXUcsxYsv#!D7C_OMIm_f2XdOQ>LuB(2meHiqgY^Gtbg!P^uJh4 znCf5ncmFTFp*j}@Ac&~(geBVOqte%4 zM{{|rRvx!}?kszA%uM^vPhWCjQOA8>6Ciu-y0x{Gm}|5s?&05QGUx9L?AsR~WxEXS zX0zukwu>)#(6;|%e>?4{-K=jnCdp{K$tPX|=3Znr-*)7o_JY*+rz(bk#WSDaf& z$5b#G)5L#s>KZ3MT=U-#+nb|j+HC28_6{=ay?Yls=~zwJ9JYr9O5Qd0r|n=RWR?V4iUpVi6n=^NXm(%h#&F$OQo^1OK(hf4s9o_oF`|Z~2AF%hg zX=}aPb#on4*mm8uw_Wq2&se$WUZaI)QP91ld;9+%cRp%Ae`K01SuWcZdi@VN^zfx~ z4zWXYlwg1Hr;HxH;I%jHieLTH#!g)%yHU@qT@(Avwyo^BSygt-@k2D3HcSf}m)b=q z{@mVEeKq8S-E8;W``IyjZD+6C^N@Y-&WZYdCVj3l>)XGxop$y?cG%$F+7!e$psHjO z8p{=(z7t9~u~$AJ!x7>YI+l+UX}b45&^q@$R(kINu}+!a=`*VQ5wfY}4?(Cc=*0?% z8@%XHAwK^3e;F7?7GhJB9txcT4@@y4R+7hQ6t7}jAq?$s>6T(6K<^6hRW$WP7SihB zKlsD&Lx4##|B?U4!T#6<;KdR9S7BkI5Djvz%l;`b_yaFFnf*t_M^60#hcv1D>7BHc zMR(8z3?z3b4s6x(1-9tzm+aMhf1^rB6@vbV^$8}mA~bPsJAUFg>wU1!F4gz0JZFX< z48A)oYc|l~%;R@v!a$u4f%PjKn;r#hQ~8Jc#Q*y6dm2wm@*@BL?)b4OpQy%A5RID> zQbjrZr-Bb#s?Yv5B!9pH(}8j0sz?6GKp04>&;LW+#^4XU9obm+I4h*o~xsjVc}f$9XOo9`+QJC6e$zXGcIbhyql;U8{Cl!s$oY4xP+}$oeXykfBw-LB;h+Bc9Gm!$={84= z-*PqTY1kt&79X%;irp)1+c&pi=j~^0I%$E0;(!1hJmlM74EpBf4;%+phl#rQ0pl>0 zxK#d$Q};TKFz~L6eE`Jv8FZ|}B2Ijve*AzC%r zq*dl?)HyDfFj}bJ$a(QASHxN6tlFe*L2`T}lht{2iulG-Go8ubt@pmxweRVnc!<`O zN!cIr_QwZASF5wm#8b3CNXfAv^VEATvz3d+>)TJ-{ZzTgmMog)$DdF>+%9A+?1JDq zCU}+CZ4P@9D*UWEuRZ!4WNkVhpzqTR6q=Pb?!~YA>Uy_PmCV|#b5~WRGx@s?vMzmx zYZdK5IjY60mj}Ug6$YMv*Y?MT{GTfU5vgPD?GNcmub~<}tXTS@z7zG1z7fSll*$%9 zO!2j}t)&aTi`GPE^Y5_F4>TFfL=?H>O7eI66Wmh&(~$D-b|Gp4s(uA$UH&JiF5+LG z{~>K2Km5nSwd55&McAd%rbPg5&$6#rCzsLV?1C4AZW#W&|8v{Mttk))rT#Y-z7emO z9RFVb>m5H8c&YESOA=YD+|}Vfqi+7#r8<^xs!bm=OA}F?GNE15njDfQV<)A`cKfZ{ z+reMg3U7Ass$4pK&R)i&aFo{nPFo58qQZG1nDV!&^{?}o;~&Xox>!Hj!t*7O&( z&{BRvb+H_avmCo8Yprd&KKh2r5!SK$p$bp-L~e8#vhy8_0n+6!2$@tBFF9_G@(-#~ z{OfG9VHe=kQ6B>B5d^B9DvU-ZeG3*|py*hZGbM^h)z2!POIQ~@ss5KsNB)s~@zi3;skkb3Su$I?< zhM!=rb;;l3^n+<7{u6$0sAe+WsPRv=oo7$^lg*p)vhcGjO8pa#6W3`Od~cS%0uxbO z9M{Jp(iW|>V@h>2e$?^fPbEzE5w2kM`RTX##27oa!jIx3gZ=>M6EC#!Bokzw^a7`R zE0?8esr>Fi$_D??!#_=yIZW*w z^Y%tclhNg^7d@|mcQU)t`%{oYn9~xlc};kV;Y#n(qDit+<2M%mX<|tP>XeBJKkl6N zBMW|!qn~D?=W0z(F%iWn6f6+jcIPix`_B7Gmg>i4^>R2HpU1g|5qm@FkM-s@n9WGJ(ORvsrKm1mNHaRbh+rnUk&_Q>QSMU9#j-IFc1}rr3nXZ?@U*yy2CQ z7jrp5Xsy5|3s?*lWt%^y%1#t^MJ`ns~VR%HY{3|ulmp>g(kIj6$zj*4fzpyUsD`IF6ay(`B>Xq-N$Ugxt zt)3dHe>!8y{({2)=pUJW81|2k!Hj&M8ygB$xLQ`Pm}?6sj<%QY{)K-dib-!8u?z(G z(R@A;b-U84aha|x|2i8)N{9ZjKRN?k;Ky$!{_%f2E5;ksq)Psm#L50WN$#hi_E+kE zzz?oykZ1G|LPI^HvOfQp{BtS?rTD#(ot3-1|1ZU#aqfu0NWRhwd8}Ht%I1t+V9(wD zigtT2QPSLxO>!v;53A}JRNwc6U99WCPS&^Y;c4sl zKj-KuzrI}AewX~(P=GekzRW`M%iS4~pXY04a zbvEpT9qf!R?q|mh(FbVN=3rF`eH;Gh_pDM!YWh0ylVwYWag1#rUj}7Y6GZKj5 zWlJkHk){D*mDLpsm)h^nzs`O>Zjn8H^>DlUvG?rSKfG?0)vK+2`&Kr3)OW2<-|jYb z>_q#&OMYiJzOYc`Uoz4h<|W@e+%7%uP<<$lT~U=*!74o+V~4(3kq$pK>a%#AZ>gS_^AKm!B zoF9Xqifl&|6H)9iY(|G4-Ec&Wd=i64&0BV~L3>`MJF8ENR~jqH*iY z_;9~Z14jYGdAKO%?zW=xgSFs)x$wX61Y7R^l`vQ&FZSPX{RdKj@;^Zd`-?>mN}*uL zi^^ViPv^vXgwPdoqCzIjJb6k-7F{!6TWFL2Io)PYnCr&^HI+^swyd3R9IVy{xO?u< z&G!DU!J5E_v+N48L<4;Dl7p_tJpOg@pJbk|f8a0VC?EmS5rVg&f9MgJXEx?S z(D&q)O|Yrser44w=c)eH@wlp+DK60AyX~}qWa~Z$TYDY5THb!Qq9l|bDbfB!4x~pM zA0+?acWr}M*ZS}${?Vzk4%yJ1g{&uc>%)( zVY>X}4yRi|x+nfgfc?|(E|$Nn(vGZa{{q_$F}r6eQn0`B!j<7qg~ijzlE_H)#V49%X)ZpRt1rW1JYNLlZE5u>R1dST z%qKq7Hu3L52^HT_qCTYk4d(FBP@@0}DR7cFcqLCpqCiG~r&grWd0$G4kDBuxEA^|I zsQnjkbk{|@-kXei4LFj&>k}mMsk%iyK|Wrh-cV;JgR{zh_uYr>w?BE@njYQXp1kRs z*0x-@#Dnih6OVexc%=;%3vIB|w8&NzIB2gm#AD!hE6DhdXQ#u-*AGGvotd{3Elw^Z z`^9Tr`v)`R)Be$)XhPN;b?)OT^cMw>g;~&!ewcu&)uKQa{Z*+?$s)R44*Xw@1H^8q zz$BFDi+|(=v97i8yEGvn5;&n5Uu08;hzX7wJrNZs0|dXR;R)pUhf(pAyGWP<(zEUu zUkdirSVl(S+HpA;8R!Ix*TS&YHL2+XgXHeW`24w&jP(cA@1ayX( z@To*mKR*N#Ku{7ALiPocbhhp!o$gNWTUA$o|KI;P&wcOv_FGkNRabW!r%!ji_uR8Q z`+3fG@3}lZ-30Kp^v~I|TOPTyeC@-(sYPNvSs>?b7$SxzL3p+E*{}Yoa`**Tl%WO7 zqAkNmZU64Dxfd<5aL{4N&P>37M+n-w@kgF>TFlma)v0W`e#Dhm`EUFmxwW8cW+h!y z$04Jt*8s=>06+jqL_t)LKiMuX*-)O&zzMaURpJ7OIP~X%5@o3|1^lY|l=9yXf7)g* z|CQ3P*{Wyir`^CmZ%iY9%ayz;yMFS|{)0RQqES?LRsM~G{RpQl;C z?{<|1p-FMWb42l)Mv=%H~{*OMSV!?^mA?g{WJ{;87iT{ zqY@oCaQs81+kcg98-LlczO2>vByarRf8fn-e_UP#umuK8MMv|!_5=d)870#B&bsW;Q50`td zU+JS3eB=Q`WEJMkn_+E6aa_h(FFK{1`=V2QE_g#8GBywD-z3l6lu>Gz{L}xp+rQgu zAO0K*U90ZGWkM^HvMOYg_+q{>g*he)2c;2AQE)woOvS4-pKtXQ&US zR0hs?zw7#6(PVC;jyvQC3mw0wrwTopQ$Z$dOy2mLtGpT7h`QpWca>vbac23kAAdo4 z`4vyo5e(bQe|z%XH1N9^zZ(X4@p2pjw zN%Y(~!#YOpx61QheRlcDAG<^wQD>_TZzsv_RgP1rW}sM29$Do5l^^=O^11J9D;sw+ z!JJhVA2zpq<);5ymJKZye@x6u*|cVT`N+?{yZp}0YsxL3*QU??_m!)!`cnD*&)ipT zz2&{-gyUC~yZ=dN#((Xu@<&&Hr~K0w-YFb=%3H7a{jz@PjPkr6IF^#MFR@)`tcy===Iqfov!40Fk6X08^0&;T;NjuN%jUJWl!xy9 zoSvT4S?4>}38yBs;){Rw1%lwoGO}@8wE%gJZyW6#Sj zmF^a+5{no*w}1G7a@*J5Wgo(37Xdy-{5MigJYDC>A9ZD!yGY;W0(3=bzeCwE{EtDI z6#bYmt_BfgHgN$w0R2y3J}~&*UL`F1Hj9)W-6ItJrT<9DY}@elvSs64W!1`SwF$+M z(((k-y^kM}d`INJ<}EzBoc8oz)6=ud8~ItD%8x!p7ywVAe=Yo)5cplb=62%BnpF8|t$^*Ze9W5@-XY+m)HF9qx{J8Dm_Yx?e_#D?U`w1PWnla%e<}>3|LNpE<~q=g z-oySFdlDi~L{W$mj;GmlY2z`)G3Db9l&$#ec%Hn0u5YSnYt0^&R`w7t=JS)4>VxOcw3HsTb z>E$2YP`LB9lu^1qBoZp9?zrl-@por-Dlx`J#^AMIq#(orT$jc+bZqs#w|-Fbk4H3? z-J&^)z7wT+#aulQGE?I#Hq^2{+xWbN!~<&hjmGy>BCNCOH#tfiM945?BYRNWQR4_Y zs3THlLWq()KY?!(7B&O9zzCAX3lkWoFVMtVr7}dJ;z0{bozOr9*A+ZK5>x`Vo3XoP zC^$wAe$lnZ>q@)JM}O!4Dz z+-jJ4mF&&O_PbncLhoZc1{@Zw6HdKSZv($VV=jG1%)${+;F>REYUCH$ z!a9NfOSuEjstk~#J-Mg}<6RK016aF)ge(J;1dxFR6UJGo7xujxN7ip7s)~T<2^B(j z>R$Mj-KTCNy+im9$-g$vZbQ=D0k*$(bMuq16~8aCVRuNCNK6`++cxcVRBbpe;gJ^( zC>%t9=x%@R{K&63yE-ATv=JG=XxXvhv2w?!KcI==eR8A_BbTlEI3r%;Jo(u#C?~(@ z^=1AM#|FyQFCB|fQJ$(s&}qD&OIm`5AR$YT-^;(jX93^v1MR`E87AA$`joq0fS zFga53C+!}rkAdHLz%)E_+`uw_l4AsTcQ>Up8OfRq5lY6LytHQX?fF`ygOfbylk@jo=W zTx3|TU%{ih_#-QEMf(jr3{o|Kqm6kKN@~((skwfX71H?Mlz>{~zZcyC(Xkt9Q?WmO z=e6uF+C+aoH{^b)l zdLqOkp&wXKJ!FYqczWuD3yv*kJ^$o#`00lQu~cpaPb|a*b%Ku$cks;}0eXUm00Sq4 zUj9>7)uL*>;5+%p{z!?kHBZ0?^*l_^?!5dK=ZBeu)cI8RGRZf1*dF4l6e_8pyOV86pa7TIH zYu{TwtEbi8^4iPG+kW)2vPY8#%^bWD#iAMOJr<;B zF6WIXj^?}U98XHzK2+C7S!lwe)q8D*%_(30tFM-u9@<{E=vz$>KCrfY`l=hs&;QCx z%7Pj5%bVVGc{%x{Bg>|>o6DcE5p~<+lle&g!cM*YZg2wG){jFyd0++4P7_;%U+#TUM4I_1v<2#k0$-c_#`= z=z7ndO=ahnZDe_*a_=6aqv=iG7b8UP(FIvWIcrj0~Z)@g0;3vRX4~*u{~N_u1ItX8@Bb*x_*gYDzYEMI-v-0IJ~5F459mAuBx6&AWVrJvmFGu3}zs|56 zSdCN9bN_qN8_*wK2p+Y>8gd|E1qnqYF!^a82M{w>5P@3 zcQnRnkpWjgH_#jGk9f!IF3Q2;uOT1Wr_gOJn3yUVtu!#Ns_@N= z1a|Un#CL02q~&5enlkO7AQ6o61q`j;AgzNQY=-^RGY3YKxQ>7ytR9YQ(g)CWi9h&i zkklZqqatbX>i&3(Sc^&zzHH1;#=-IL&lpXqAA@p+`O<5uR(-L<-wXxy#@T zJs(zwUMvnNn`SqoW6Tv9Q7gk)Y;gGSS!?zWUNSX*+gyB*!rC7H5z&Y4mv}F8ZW>)o%`9|Co~3gsUL?}eINbUS zM`QUr%$&q%QWBD&{l4qT=++f^v zyZ`Q6uyE571byS(hk7t!x%3uzOgE^4G3s+UVGZg$9~cq=TKadfrEi-l%KVmKn(%KF zBAk!Y)i((4VXAp*RVdG09zu{+8|@A3(hlBNL{Q^ReyKMV?q_BcBlCygWBp#Uv4yNq z^4PmFG=qrzIx3x$V@vAt#-O3Qj}GPju!lW(PpPp`BwJhk&mrROPG4Y^z^t#MvQ2KW zJ0ZvCCK}#%BDB(9q4H@}$~*2#HImQ1*OeLnZt7AkEIDE-Wqt!X$0NAxgrhz%^v;#Z zah`lNouBBWnpHZV0X!eB*Um$R>Ym${Br@G3x6JVlmAXFR?Z|c}R6mz2C@OPjWL?sj zTJ%+IxY^|7l;8E`iJBT-rD;!cVBxo7Vm=t^m0-n{@igP-S^bw?!f?}8A?kP6b-#fI z>ru{F_Z4*m!|;#^d)w<9V1uw_=3crsfFlWIo{nfgSKAOhQ-`S_c zw%hgS{lvd@$no@lkDVbP+(@uZ1Eq83`{VhX`KAL_TVDAR!|$kJ$<(EerW7VrmM|+K z7G-o4S^&jUsgr+!-`ni~aM}rIb7xS*ewE^Ux8OO94!+AEt1 z=CqKwXaB^ajNbRO$FNe)fiG|y3|GW}O}x;ZDnsP`#+_97h{AZYHBAI1-XPD8p}CqRAO^CtWdK|>ZE=Em7Jkz0@4U^m%~<`pVy6CpzMYGyc#@*GEnj5P0iRZH$UAR zv9AjMxy}@dW&bo2&T6ak=J+lq^Kv{O?>JK|%U4pqLoOEQMzYS zW;liZFbb86KVbByQFc_P66-c}_9?*Tn_k(&2Vppm%Vf%c{iuxy`d?bQ|4g;<`&&0P zVvosD9;d`;&{Bn6)0s~2f}x_T%yIDIz9DY#gm_8ouoWD28;UV9GCA!avwGMx(CEDQ zq3nt)V8G`3AF3Vz<2T;6?6fINs0H+T%OjiJ3@3*xM035|UO*JjFf*-Ls7O9Qy?MRT zt~Q2o))M^#My*RIBA**(IR|aOeElJw1#9`Zl*qNWV1&zO)07AH zv00*E;q{xm&s##{X)k(`h*Z=B6yc~~-a?AbZUb6Yll=OMGJ(rQyq-a%8O^=SFQJaM z?Z4`K)PcFQ8mem&a$h2i$0w%WABbE-oKGvZ6ml5@RYzkNi|?2sG9 z(j8fyUTTK;OAz)_$)g&Vf?>n%0I$a^N#`x+APZC@%-EdX%vpv3PXyJ|CId{Dh~mXw z6j`Fj^~ffth=KnM&&Jo!$THFThqvyx{SaOZ@x{=8>sX=I_=CSc2c}fn9z%EhB;*TP zRDQe{4a3i)@{RLK+j_LILg!2v70;W4yjm~yjRnj9xDiJ+4S5jEvADB2g#gv`1Ljk! z&if9mGNOq-j;m-&XTht10dxmh{%6Ix+`B zJR=}`YB_Jp!PM99@_?%1-0RUg`~b;$9}@o;(#qY99Qk*J%shZ_u0Z^P4d%0n)Q-PCiOHR1sQ7ettvv%NQZh|J=kEf4 z+e{9etJZ+rASo%`GTooaiyUbKjiFFuwnjxHktWzlm0??Y82X}4@?v6Oz+CYrH>UHD zLyF>IQI{45wK6lidc#`mP%UEcvO%bI4RMa6> z6U$U;GzE9wR3JzaB49n2Pny&cp8qSD$<>;xsLt3O;Y@Sys^p3G4$S>j9)x@n_xp?_ zVen5`Tim}HZnr8A_Un(O+Mf&b?~)j86jdK@-e;EnTN|_{mK6x!OXsCqCbXTPVUr-| zD8qhNOeDdM3>onHlK~`x+jn$(hU@mUc?kZxB=(HTzplm3xQq$#OhGSt38lxrsf{0F zl~3QY9i}|9HxYNhU^f0%1Ds)E{|x9Q_K@yZh=92;yAu{|g9H-tm2hG)g7wUA1Q`k? zZk5(?4Zef(_j;4xGB>p?c^L3SdmfHqFO(v9Eh`mGfc(FVyUQbMFo* zb{`UXNDztt-1Tfc3pBQiF=#E6NK%%4JzjqA-w&-7qd89(SRIdzJVo|P=DVgagTFp6 z)ql~vOi=Wc&^L~Pd?~g0QsrqsU1u!S2ZY zOc*eG#)9yaX1rM^O8Dg#OvtEqe<-i$I#>zZ)IaOEF&E!atHW`DUnY)$M{}nA%+Tbk zm~TFFkchyBDUVCt7Ag*l)MawG~|M+;;%2|@o)>`3P7EgS5(M=eRI8m z%4s9_pTlMen92YvpWj*?g(p+@#pJDt5jQ3%1@VERb3aB)T%E_~0{Ou`^0G z&{ghZt?zr+xu7QV<-Hc=$zk_v&;hdSZb~e<+WF445PjM@2=q&r2loOa7op9LM*`TU zS|ztNdgRy*4!~M4>yOBD`rvXQMOO0JW54Sc(cG=EQGcOV=k@(-`9plrd}nzacF*KP zozskwiK_xmVS*WcbmRUxgpMxYea*&@}z@SIOnu`Y3gt2N)~ zqW^inddo!|Dq^6Ps`mR)Yf%|2#s4Ivy@1nb{!DkF5zma`FppW`L@!p z_N*>az7JRpL+hI_^G!@%?dD)IxNqRnV5`j{;##WnZ>VB;bFsrrW)yc6s|jr5x?ivL zDqW<6l63f+4W}MCpXKmy^YK^IN(}f(+`cbPBs+?`mH3-uSNxm-c><*wp3X)3-NlD3<>veiTQx3dq2iO- zcq{~qRZ11pdKd!>)#Xk3B>VF7REOJ`t&qU?=w_p|cMf5S6%qFSmRlB9YdL@(TeBXL zbCrY=cj|RVJFIU}un&XXYR%y{8M@3mGp;Qu;rq_ni`;79axu;cgIQ(HAj3H8E4{VI zVxtGOM%eA#v(v9n_93^Hx7f$-CIrem;&icV=ZKYLgEdvX`y?aJ*f`!uC{ykD8z`)ZC4E zT8a3EP1vi2daL5px$q;DUm39p=j!t!{68H6t!p@9Oz>&h*NlKejf~}h-md3$-u!t2 zm^@%X2`s|C5b31yv4ypU=67rfe8|f00F0g0cC$k7^WB7xJmim;$&hRML7kU{gOpt5 zM|~~53yxY#U{&Tep^LUq-28m;J<*y_*Z4c6U&(I^+#{F3%MNdIo_to{4n^wI0_9*e zl*YUTCFZ~!P_Q@}vYq+z!R}?#+nYEs+z#Nog>=MS_9G?azJ9pl`{^99Ztk2Ux_c0d z@Ys3>zV|o7U5_)AX`I_HGx<6F`Muz_=vRaPJxC(@RG5tqPV?AvPhiiYKY|99$qzle z)@Bag9BUs&cLp!L8~YEV4#F?sILc$(BD--4==w1T;|b6?c0IW@E@Rtv9z*>Vy7Z4L zs!?HX`P;kgI|>)j)~q7x+i8fVI_VFhpVnaKI8$wCi{h*JsDhuJ6{P=t=lJ|zKm}rB zw}0f5k`7kJQ11E1BKHQPM=wlhtg%<@BY@sjp}I6N$Ky?T5|Y%*+t5sr2XE;9MduP2 zpATa+dJWzKw;R3FOm<524+vpJcW({qu!zxGpkf+Hm;T6-KH}1-npMGJrv z``XhKi>PgLXi^kCi>IbI4l8CaefiRr%*8uG<=?<9=OH<|b@2(=zpMuf`5827*AY@& z^;EyR*q@V_Q{*0Uzj%3zl_;EUpxfgiS9%Ta6Q`1Gg~0buNm$ufbW{pmL^#TMd3StV z3^hL6y0O|GX3Og_iG7WDNO%;CyioHcY#^$p{e34($t}0R-pZOuuY(<%H0KqItvqnQ z!Yl?!wNjT}3CI-dM~O~G7STG-LzVpYAd-Kh{##CkhlU?^!w-Zw6PHVG{h8XPfZ%^u`3!cJ6ip1N5_$^wAB=@|55rdYZd%c^s`V0; zY}wMa-Hze;_v7t|;dSB6S9f#`;sZ_a!G)>C{|b9Sv%m0*m`CS#Qc7CJ z%4=W=Y^vUAg07stbtwVkKpjGvL7V7xWN8mRj~D0`Zf`VjR=i2q-IXYh@B- z1gpdA+Nlcl2_BcovMBC=hw=F(AI_2vP@cquxf+XzZF-=bT;P?-)e%}cuq`csDTnLd zx5_sZuk+n^kwgY5!8O1*1v#!3=iF9wMp#X|k@N%Yw?P@jR$kK$)gYYHDc%9i3f90- z@8@qWhRx`)uvMWbCu(&2n|axU*GFL`^avEuWijAup?|&1>FE7$WIRv`)2(36U-tQ7 z`@4WgFid!8;s9`=ALt}27xy^+1iUavd|1u(SQGDf9qKfo%g{pgCf)P>ZNu-RwgutT zjjZyZBZhJp7!hLDpip?@XbQHA6aEia<=fkKHF&V4gI-ZU!*#s*?&DBX$aGEmS03AQqmsW zN&wKv=>$`7V$o_XBt{AIydQvJjuNi*N(F{7F+#l1OF6xJ#N$imD-%=?o-6eGr(=cX z;xmoszDC@+Ku}w`tKtlK6z| zoA526If)Y~a$WhbO?A)@Qzclq)nHEjl{xEM+4Wb{o$4&n38#XX(ke@FB-Q)8xjNWF zw8cN&`7?$C!~rn32BmqB$ubC8n~s`)+m-0kEi@bImGvYGH9-uey!*})?EUv%_|v!W z<0JcPLe=s7K>m@W(mg~`R6$ce2PN!HPw%#^aqXM_v2x!aeFAY*0a^cOJ}y@j@Np^X zgi=B+L1x&WHQ@S$5?|SEI^G3kcH99upX0Yf5j&8?6jTiCP89oVtFuvH)%hCv!?1=& z&wibxq?dI791E>EfNt-02|ZH2x-wlbVnf)p+?0!Y>i=G~smrc9v3-dL)5N_Bj7~zn z55zq`qv+ecPYr#*V*wR3Za7N3LEfT>h@QL&YjqL15)0BMy3=bAl)H{}%F}stQa^7x z6E~Opt+aniPJo?x+XkQ*BR$S9VMb}cI*0s?CnW6unTw}5ebnu2+V_$-!OYG4b7!jk zz?=?T$WRoz|INx-o+p^ttOGntwVc>bt??ClJ$Y*mDnwyC6TgW}Qw$ zI~>&`_6B_zhX~+prs`gX9svA!#=3mmH&{Xi!K%M0lL>KO01A%GZX` z^xfmYwMNDA*{;x<=&$x>Ss=Y~&a@m~`9`5T96CJ_OvHxw&UWxV zJKe~-E<2gChD|38O0pHnd6oo=ShpX^aA4~Kem!~gVutCNu|VP6y#h;1;nzSZvsvs< zTvpD1PM^N$N)J8p+u)XY7p!IDofYUT zSGnW!ca%OUM-9uy+UJ$${rv6#|1ruevs;Vq{TsT>^a*<)-WG_T4^w_DZ&rYmC?#yV z89{re;L2?w=|4GseWSE(XF0nh6Sy##{qMj376~7Jb28U!E-SH{E&p#!>MP>ubW6_7 zTs17)QwRO^mA>PNGK;DETrVwGZj%I+?m%*|o}4u{;@QVe1{((J7SF?k_k>pDI??ia zzg`L(tLwk?Gh2J%BC=KkJ&v(6@BQE({*qNzUk5x(o z`u(VgLW;0p%ZiOS&pC1vc~d5cu{~zhbAVunN;+;IF$jJ7-p>&9EwQ_)i;a&crX4~$ z3hbenriF*=M=})H(MPO*?t<(4tTD*<_g~{70dZZWsIVAHYam%vi;H<8zI%T(}gUx z!W13}(SvP$H&T~B&B}_WuJ|8tH!Z?R(HvyhT$Q;N297uf`kTO=Q4}0`8iDFRYRUZN z(J?xg%gAHjiY?#J96jMcxWDnipAPdR|8g_Jbi%z&F~Nq@Ns_JjpsKwfzX2O?x^|-; z+`Y{@c*#YLTtFqp1T0BUgWs>+5biVI znsT(tk7hnQp?jBPDb(rf=G+tQ=$rGlxoRcPSxx%%4ZJ|&IrqE_T4iZsKHK@1bji1F zW@+;bN#`ulKN$%-Co48*10NKxrod0Ky((3y)tM}=>nRcj8(&47cT&cPdY%c4-SNxX zPk%mE_#kQ8;!!su;Iw{#upXA_fNWJ0i5YbNM-B|FM^WN4JXXq+zJ;dK%TJp+{2b)1 zR~qx(M|%I(Df>`(WNiKMI&?{9A5zCpjnlp##RF?oMihPr+)Yp7;Ri70dnQ6Q9p&kWIWnymPCbpvPcc^I~54S_`G!?Bn2_)JF!F!_{n z{XcF{N+%;Lr|Ip^B$)ilEx4OF^>e`yyr)~5S)*6~JE#A!*=BRfh97{(SPf}>;py!B zZvN~J-S#{2y2ov^;A}tl*AvZ7Jk!5Xlj>F)az}?7=~hoX^i>AFTpEn%dgV~x5yCgC zCj`DtyqG=&?{nfPJD{ykG0-2ULVHv|ZdiaO_Csm09$v@i439{T83}&WY!#}itoSTr zy}d8Rmlqpl)s9lpF{NbB44uQDP#v61e^{gJzfqHRA*?J|Lvc~RK~a3L40!Ae=bKl< zD|LeHd}oir6D;KWQVsM}Gzh020vwC2S&dpSPG3ydA@)HU1j){Oj>Qz{=TTd*ptS`r zvUmY$q-A~N_Bw(Un@5}Rjt4afX`ZYJzk(MIK{+`9vFGcYY;#vOH_8kw-)ZAJAzNwsF5$dZ&GQFl?#r{KN&l0%nUj;2!hD_dt5%7F{fl@Y z_d6<%PbRnG-&*&qa?=_(x|cV4V5yWyh0kJ!{LYb*_|#tTY*qa_IBBT)!EBgrpP9S2 z#cYj2z`BQE8iFCHYXyp~+t8`&h0TmVHI|N<6(qnA~Qg2!ZsmDJ=$ltRTWjangPTFJ32=a<2JkHuVqMu;t^ocmcjgk=8Hl(F+8t|E=oNs@X3th3wJ><ZW*xHb3F^qN8JQjFrIZXFEy0j4P3!Or<44>kv3b>e6m?#r5XeV=rtpjh+c>zbAMS zNUPNLt^2qHBjejInw7NZe{{Yv1z;^_8?9^M{v-Y)_roYp4^pJd`6YMu-B$LN3O%?4 zeo$%Nk9bUsPgR0Z;`ybhK$le!Yp0L+_{fMMhqMwv5zTD%*sbqdH1YU5a6XBr4@rTo zpC^}AD905;A97>?>L?GDPnS?zumyWr4e};dl-`=eB#uxc4C5U2U)XBZF5<6Oyi#F5 zB+VaS<`oM{i0NuInGu*-#q08x3Z8pMX2lF)VE8fNU#l|9eur&;Xa-V2igZoWo!>cCoWB8!hx-omOI}5%JFWwjphJeTv_xHs#o+S{TdjE^E zs?FAO-#v?&G%gsQ@_QeSB#H;ELT()x#pLfMfK!TiQ}me3#JwFbe-3|j5`$lX%FTmO zlX&CidzK=o{4E*1B;?D37=mY0sznn=F^3bJT}Qj~Z!T?vEqXnpOHaG0$>R8{Hmyg0 z`JA4m7l>PR1{e1WAx^8U(xbB_@xLqvA}9CyJ@)DnVginP`fYpo`N+;a=dNm*`yt?t z#|G+1vh>&I{VEZQ)2S-!Nt%snQy{zfBx+c2fPOHhFKhWTKkLo%8`sV2fj7wFsDfz| zBa>3GRPVj_r%KFsTNCQPerRjC-m6bg#|^StP5x`J!mJGR$Ewu!aR)g!T;fIC{%LH` zmN!)Vg7rsKX&;>8oY9M@(E1VqFW4H+YUQGK<1-vnk4o|aO0m1;Fu-SE*hK$As#yf;&m>zu7)!)N7pt;L^$y-f-~?B{!d8QFUTQnw!0aM>BcOGPbVbtsY%@fucz@ zx4T>eSRBP38`%6aFv{@cVK&mtJ{y?=n69>a^QtVaJFONi#C9F7or@OUn#w?@Dm9pNLf$qP6fB=W69Ixq=XylW**^ollY7 z>fnHU>msP-dD>_n@B*0=v)wCj{&eZ=wcy7wGKEIAQZd$Osg?6Fap%c)*9UupMGqCI zGaX!(Mdojw)(7p%=LP>Fr*yJ=bZ**|VMjWCRgSa`8Zyr!{x|&IfkHmz-tDKsq^oW1#**~|KzRgqDr@ul&AD+~|VvQ)C^BTMRZkp2ii{R$*74hN|;oRwqx}AuzD; zhw@Jzf1(WIxD_`A?2?(2_-BOWqkAx}bCeLY7!1kvKNiDLiY9qzllZO0#6Fmwc{#aY z+?qOA_f$n)kSy6`xjxJK-H?F~FIByNnSkEfsr%v;T&|?mYT(h;jMAkUO)2d7L8C9=FrbZ_5@9&2u)#prK zn5^sDzb$(qnJQZLZ^PBvsfE8q;Z;1P;nQ<&`AkNN5&W@NIC3)T$?Hr#F~7S}e>4|+ z>I_QE{G|$An zV|jvwPNJY+Avp{4c%PiMgW%B&2hJvLQ!aDxl~%)?$R>-%oBJQH*LLjZ5S=hPux8Qo zy8hF;uvFWm%hL@gE!f#MeteemRM$28cH!8*4#U66WswAyMcpYoj@`SMB=Kgd-&|T4 zK{7(Wj0r~CQoZI4M3T6o{cSz6yHweAxQKwP!{RUVXg?ezhc4810>L#@@f6#T<-Gf- zFdDF{I}qBb4oJ&rIRL8g@WIHt#JStfQlL6a2)3>!QR{~TgQst@KwxXJRhvs5b5f(1 zQ8$~kyL9i?R>}mnnp{N>^k>tOH8W0jI~S0LU_vwUl<>U^%^&st2H(!F?SV%*ggwY3 zMXWGoz#@&}XdEu1vY(!to>AodM`@y?EA8T#!jUY>%(&~w9i58uIknq*;Q<*Ivq@@A z6fOTZQuz_U#R7uU3&$>)i$mJQ%g=)lpoV=nZnZJ__z0DXe^(pPGKZ$Zfc`=zrKx2w;(3CX6eYCiaJ zHSIK;>@V+Lcow?<8++#d{48W@H|>xc#0fbGctL9z1!@0Q;%`LP4!rYYbwk5%@t9v>mQ)gc9!UYM7pv+!5KE;jwrD&7%ur%pUNI1FyX_= zgT5TQCyK4?#(O(P-4A#>(KL`QX4jq!Z+(3j7Px^TKBa28ITYC3poP5M$W2mlny+O7 zK>mgBC-1A2`xvo(q6q711S&Qh~_Z$UIW}x*4 zaM2fUub;cj)GjQl+#SqxWM}vaV4cWAC2&wx5{d1mUa$N|PM2*v*TqSZ#U7?F~qZFdd2Rjy~5E* zc)_JNYD=dz0tPJu64)5ScucWK!9|RtXrBOn#s0x{zEL@D96Ucou*zp=t(Kd7>_2dR ze3RqseTqm1{uH;!hL+HQZ*AY>ug?*)c)4huj>h#(qPLf{&^4`78)ZqnP4)?K^TBuQ zK@T~hbdJoE$@Z85i;1sRv2Z-)FG1zH)%X)&BF9(TU49ggUNOzC9Ik*Oi%(evy-Y!S z3EFKLjRwOtVhqKlVXEYwDis|%bd#Td>jpU&@ml$&3ObjF-m5fk>wT-Y_@Pez>FdQkMX?`wB&1hbP2=lhMhxOo@+6}>_t`uO ze~GglC#-ffS~CU{0fAie&Jwdhq5dc_Uaw=rB@NZyK*!u}Q>ql2j?rk{qc;a5l?B}#T8TY3p zJX#zFD%~E^U%?;Pd^^DN-A&>je=TI;&6-J3)PJ_NpG9UE3zOR`mSuhTmk&XJbOj?;0VLy}3jZ?!aOXQ0*|5eexqiA-#~JISQ*V5f0b|tdjft-l*H2s5%WF=l_FYV>SR^OsI(@uw=wOK{k3< zFR$1oUe`855X%Er9{UA0Ku)fW!1efI*-k#OL?owUD&{B@PD&zrAbb~gHd_oBUNYc@ z@goRgtwdep3Gj71$!3V(YM-L|^=BWJ?k5LA2U(Dt7AlwojNlaZoCCelv51!UW95El z&gpF##M6z`dM5K=4F>WMYH|BIQQ3}!;vVf8?w1Fj567`Ubs%G<*!J!wG_jp~gn*KcYh zMM3LNGz6#c-4BdR5JukGV#25eKh@BmbCi20?pCu8H|4&Q`h7 zM<{`K(MK@v6VrQyUmwHP)GW(x1_r_U;eh;V%jBW%xeO4#zu7VI4tdUv`~l1fZy2A_@Jb6!!4HNul-s{d*} zS!3G0jCYDut%4rSAZ#m(Rn(Q8*VO%04Jh&9Xs>`D8t)H;APOg}YMzlN5D|}&+C@-5 zqiBEd8SSn6jUDh?g6Bt#*eAatpmr0!r6)GKedkrBHUaD@f;aXR?I#AjUsV~?@B-m9QrI!>ZHPw#%Z(M$&DefK1@gz97j#;syw;Xl5L#nB!ygL(B21di*>N zf^NcIG2n-hIxl*o|8?5~2j@a(&IV7&?bg)b{^+8rs~})%b3g$qKP5$;Ba*|kbt3=w zp1?lDZ*yKJ=(c2nr|j8mB*yOUO*0z8xfmL%(YSgt?fesYPGZG3BcbHnJ- zHh7t|5Cin3OKV)&lc*K39is7CiLxWnmZu(mvvnKKg4Wr|Xx)e=3$=p%PkC;yLa3cz zk#tC_5i`nbyRIG0K>yZk5VPt+X;a_t$=LrEJ1&kSN`Xd`2elFRq>0W*GB>@R6x?U$-M)7&CFpwOdCW^Qy8cjAix{7xC&{$I<gaNJ#@;|F}20 z$GKuwGqF4Y53WOp85Da*XH$q~jOYoXf>)+EWsSloqTakH8}*!{V8v1fV2V)Nj;4HR zYykyqqq%*t-n0LS7;Osb8>roIAsc_`5x4F5j@uyalcel-0=2>w$Qj4_UxI<9=f1Ix_W>FZ|y6{g1${pJ71f=Z4oWjIlYzCf7$5*}sx9%x)Av zlvk91UJw^3d_((}PAW`Lz(>Tg&o*VZm^BPqx3C|hKEf{>y%N50NgF%c{^eWCtEY~F zs$O3^{ebdQ76IyCU6#fe)aQRY&0*uy%!{yV;LD^*#r~(lWdicdx=uXyPC%9a-ghr_ z*b~HmT3hSv6K@xyrJa{)@!SDWW0!t(jqMj!G z{QM%8%c&zQ#{9%#=s}ORnulg*L)Nxe(yM5M>Kj{xRC%GMUv+Gw!Pbr{RDUf!b zul5m{LhGa@Sl;!1h}VW=u;*kaitE$XrzdB!X>3b{78uXXG))dG{3=cVEIt0q=4H>> zIb!*qPv^U3rvbP>u~leu>U_V(;4oQLB~zCkvE^~rb>7&aht+svd9q(C#?*LWV|i?H@$`c0eu$5tx&hWJ(mCl1;LL4 zc;y`!#m{(0aQ2ssYEwE1w1#@bWK~R+U|rnN+D&Js5npU|U;*k*L1Fg%oa4hOicuCd zR771WNf{by5|^yIz}ofuR#MA<57dw2qxJwm3=VJ}-E3yavpn6a}#=ptI?d zTch~w!N^dgqw+?8o$T+=Qdq6go3^U`n|qNy(|<3hma|I1V3`{y#xSOQEB^5q_9r2K z*aK|jZ-DuuFjLpwQBVb9;(rD*g8O%1$NDC$S^qtG#|4{Ha!@9EeD?Ml*|L`5HmnMi zJnQCQ8aQFqy%Oy1vC|j}H=P>6jSFHDMf_HXl()D)5rKCK&w!i!imK`dFFU)(!P~d6 zBO52#5xq?c;v(GT(C!_(uGTHFc|@4If%OwS|62Ods*(_^ol3fBT~lY^w2601Nqr z9>>RlXNWKkoY3lP_1>IC@Q0d0G?YazuABcMD}M#U$6npQ(U3MG+J>f6dXFr^Hcig* zpq$c?L;h49M><9&lcQYoEQ%q>`> z*BnEXQemy}Xy0hvM`Gihvd)mW4SqZZ)FXJm7pWOFnYaoE)6YQYq3Z>OMk}=UCJ~u~ss(d-~#K%Y)%C zH0fv-f4s>+Ob>!f^ke-2fPMH)L*|J$3FFZw@*{!i1{@WCqa|@(yHVs<9uo&V8@Z8^ z5p%#0K_gX&WqW7L@UcY$tK@4HeoV}Ef2<_mM^ZFPTVo%#O!55X_l#RKTrU3*~0I552Oogt{T z0>ufvzQ({miLHPEf{bdTpyUOm4XmS=^`+Obc*{l4UiCJj6L`a+?`AZYR4dv4p9HV1 zdorEg?Ca6>kSOZb2a+YBRGtTOI?)mbVQyC&J;`hEhHTwK&7aq|tiqBj=Mj=bGoQBt zjU;fUhIklZ=@rD8_x6k%DbC_d9(?v52 z&}0tb)s7&44H1~&E+bf0>@N0}i7MW%zp%ybbEE+*N1k^7dCi}&f5y$bcRzIJ+M9*= z5^TKHcmSD7dp&NV|8}V}?Y%EYgjf+~EvF%;Do6TxLN{mH($6^_zq!f)o7rd0)%*tj z?)ttHUA}W?lV9{qPn}M_vOJbgBLXxZPWS%)5I6bImCo%eBcrb)@OYez!WIaLH?wCQ z^K?WYN`U==jjSfnq^Er_T0-_KH>PZ|0_`(ph0x#Rm(a`fAUC5WLkFle*~VNzN72J> z?g6m8C441&aif0b%L?=;CE8IzCutVU$2L4JP5|b?uGKK_Hcm&MyP8vFjRxQ4y>_l` zy>_oZt>jdw(}jPy6{nx5HRS7~@3wwfeE22FwpY-WKmZpL3guPf2Oyzi&+$qCLI_J4 z0V%EPF+Br`2@sAfxLwmGkWAoYe)NX3K8xfm*2wfqM}0m}EE7_HRWo`@(RvgDv0Mm` znc0Xc$c`$Y_i7V;#&O9U?s(IhBcSULPtxHJtPAd^Hzw{A`x*cn{g|M#9(PS5k21=f z$IF(Ny|qf5VFsZ1aW?Fxz^mU^2pIYr1Bszuo`CTm$NaweosQ%4t8pGnb=7STQu~lK zo7Hn)udHYP9KJetmdJP;Ab?^@{LC;p>hDXQ%kq0oGDZr2u1U(Qu`O)oO;g)&l!Ul9 z>1MHqfPfm5D(%UtCitmj+c{<^KHm`()JPn!13v*Y1JDB@ob!u?nueB>%Q+CgjO331 z3+JHPIcqp}5QgP?RUrGt2qenF)bgSgPtS=j7u3{8el(3%3hZV~#bOpTWi$qq% zGt}yWVh%K<*ij{&?eOYVFJ8yD@v``<6=dz^k{c3%b=3FiOm^4qHWKT1B96pgl)QMc7K}XHsJ1=%azQ^BblN&ZAyZ3#0 zFOL$W3%aL93ycvQghSEW4qxCs?fEfYwAxSS zxs-Q0p%PyJcePIgUz!L70O;+H%DFV&38GiEh@-nW4#V%~x8~sVWKZjFjEj#KHK!K6 zLT{8=%o_atd(3=i_53r(3J(WR^wm@zyKk;8-t*u4ip}w~F%P_WJkOAW^D@)`FX-2z z0_W?*R|!}cuiNn-+4H}M6;*&0c&Gk`dDDwz>@_dz*($QuI}8% zQRm2(v(U1c$W&>-Qye!I-(N@%G2Ike>tu~HWcamuJ9f?a6L{b5hK-M3N)kWG{XGa! zez5Ym1hT4ch_s-`VO2DzvpwJw{9kc8nAU9nyX&;9{3k&Wdo1sJ(#3`iJnFaw%y*ba z2ci@wLU+Sn_1Uup*q-VpWRg6q=^}7^-ySgTrNrdfvPth3Nb*Ok1of>!bKEDShaxsr zZK1*8t)+ym2KmAW1!c|r!iVR4`rJKE8mca@nXDwy6r9}J*#S-47nj~Y!|XL?d(Kik z7x%7NI3!lTI=AgFG-v@=P6?hQ_n}v_1`PhL`W5R^iTg90fqs~yX;4c!;X_&UcbkFg z-(aTdNNlZ2=ckEWp{f=JLoqz7;UV{)E>Kxwf_W-!UhbLoO|=^#yX@Ise<}<9CvF@`!L{OgPk*6E#Y>oTR@jJY48zP=xyp zHoT*+f)7vIlSkufs+9GqM@Nk84>|#zI;UnuW)0-%jW8kn$F~`|`lV&Hs4D15HisH7*j8w@)@QrKaL+@Ul zOpQpRtvY554#+X1)Asp7(fHJ}@C=3B%Jk24_Y?K77m05*WomyE^W;o3qZjuX|s6fA)^8)xKO=|5j{7Qd++T-?Le+R-Dw7AVUj{F+;9d<9vlu`qY&k1w^!*Qb^7VJAU z&A{a!RH`sf@@LcqL1q@uF0diBKv*2pzge<@)3`Dz zM0D8ao2{EsqSVb<99#b#>fjPrzf+-uEjI{`R3u_ww&XWt+vkTH8Lk{2#^#HBjmiZv zqlO%|NyaiwE*2%3w&zu6EO3F46Y^AVV)6%%1Zp*dad3N=+ElilvGu8sAA@1=GyGxA z7A?AM=GBi&8JkF=GPU+PAj9J&Z+%v#0U|-4hf2FnhDdy}y9RhUaYsq|>NYbVo@x==p~oFNw)hqK(Y1DADWog)(9$?S6a}8V zC?rqJQhWd}U+mFjW~K{#&uMM3PX9Wgg_7FNv%!;$Du6x*AeA*T1t)m&xCZrL11rcN zL#)k^2T1L08r)yu*#_;^o`WaE1B4@mYAYB1KBxZ&gStc!F(vVCLymsW0xqVK72b&Z z-ErV{A5_pw&xqhaZh5h17{lElPisIYnBuHt;Uu0BHOHcaZy&)W>vu+Un<8Z*Tj@+{ z+dST`i-zv23G_4XWm08;JUzPI21uL7$En6y{s^`BZPe2Q9_sCfCuBLIHTwU*tF4mcupb z>ptU({~gO+HT16>DIfAjjvywOTIV%y+odx0VE-=z6%Sb+nvatqH=Of?UO!-`+ycUB zcIvCk>!syP@$b)hum3(bNtL|}nIs$k_ZwG$&;_m7jSPL-&hnK-HxR!xqAyqaHy5;4 zvhUWnd)VFzpz)iR(LA(txo(k~l=p>qZ8V=fHlNKv1k)P6uM~ndgGd#3hL;UM0yMpU zAZ~+YA&OBFcG8``?^pXdu(rcaxSq^?{Li6bTmHE`pTddwXDf_E`Ie;O-Z@p)$frp#{35=U^=1jufFhl}$j}$=&!vU#7bL&8LxL1Fn@fASu9ye5)m85f7$7-|m998EPFqjHkK47IVI4r)6i73bS?w_16O#(H2#PT{n02$3KL>l zhzGfG=Iji9VefjmMFN<^^|2ur?Hwo!EoAQYOdVL00hXaxP=3H@p?@6z1x_6Z)>xnAVcY^ z7?7a8-$g~U7?xucN~TCKJk4uZ4UfeGVBx?yRPgPKb2 zN6MNrf3G@>z8LY^Yq$q|oBg`KBv^2%lC@N@=}*ul@M2GJj(na4zCqqJf1e3&YGDK_ zd+)RRElw*W%A~ZSQ{}|}i!#-bs&o;ZGkia`e(5&Q>9ID}ymJTP=?FVIpUe^e3eRvT zuHIipJC}7lERHc#+(Dz%Z500G6*&?|$k6y>*PNs${ohFJ3%6A=NvsIw=Zb7wh8G4i zdhrZ{uev0{Erd+=)M*3s>Dbt%kLOv#KTgJUru#m)QF#+-leyy7Blkzvb%K?4Hb$VH3r4IHU7s?V z5)$c&$VRp{fKcROLWWAw`l&|!%^YB%&m0G5rHt)0p^p$9rF84UT(xtA{0vi@gf`pi_c*L`ASa=#0D z%x{MM(rzW=uywbL#-%kp9`DE8zvEHjGKr9ds z91VejluaE`NK=N3wEQ{X;-}?v1RShiwslb>GwJxg;g;uR%Pr>=p+vc{mpKBh5RZVk z&@2bq(`p5et9or6Y0dkJZvLPtwJ@cVsS2^8HinuNs_%Rt1G<~TcjQ3iCE#|Q$Uuh$ zF#Ig%14?DvuPpE#&GO6RCI0>@7kWPX-rz6nNh$o9p?4gvamBO3mlld+%hkf{5WJ@?5!dlA1n*w*h1=dYxmX8Jft0xHaF_hj*2#PVSML+Y;dz2 zcG%x#^gk0Tb@X^z1Qhi>vv9(XJ6G@iJ;|dO>SS&2+EytF<2|#Ktd|wW3xB7=y z@LPme!gH8B@ye_)5FzMucUwDPm87PcWyJx=bfkF|Cj=zU$HYYsR3LG8z^4szNYPj~ zr|(BqkX(Bm4)!BA6r$cz{{EET7C@EK{T=Ucr_f@!L+N1R7=P(yE6M~mn-8lW_D6xE zu3Ev@%&De!drcd-H^X34fZ`g2UWZ6~Se<%&!{%Q1uoXD~HUTnENiJ2`O7nkAv0j+w zCBy6W!pDw)@fOI%f$b+!n0D9RciY8iF%M@gS)JkN+{dwxFG;D>)y2c}D{*o3LLR67 zmCh2xV63qx&>-$HU8S_v=)t&~fa16cY^}K?d^;l8N>wz+#q5j9u~v;YBsrSn{l{W? z=cFqVosE7JVb|wL`vG?*if;xNJk2+z^7i1j(G_ot0Qo9xd>2x8w?qQrw!eDZ0wE>g zpu0}VEuJU|0CpGt2quL)LU3imq3#2;JbI_Cb^I0ty2tO>jwj>Bku`Na*P^_lMqDbc zMS}%&fjq!=eC<3?6nf_|xx23~3Po9Ij>$asIApqQr?$rZ&?rce;ehiVc!$s1cMnSCOyk6DW zMzkGGCp_JY^}PD)$OXT-Ex?&>#y8ae;2+zsP=y>W!VhIRMQt?AF38yA6{F9^l2xMt|2{}LsOlvq6Q&tS%2OL?lPIuV2)_eV0k z5Xsm2sQX=|V&39Ep2bRsA%Eq}NKD?`Ious_5EE z!jL54?_#s!Yc{YM_2-a$?zxJlb||leJ~O66I){T# zmLe-LU`8EAE>@;;v(3ovcQFCML1K_oH6!dL_l}@`du{#cnND-=kcv|uWQO-sWE5s3 z$offt{SuV@RQu89qo4;$$uoo|pe!Pu5w17CU1AY6Sdh!F;kEoZ`j-rb^S*d8J7n)k z-V)MSvX*VT3Q+J6ZL$xl7(a9%eC8VP@%mQ$eUG*z2u`0Jy2+w$9Qs?MPL*cJ8MPAe z?e@zmK>NwRRC8A!Fe4M=b-hk|J23V3msEXA!hNT&T#dYi{QZv5aY7QA0P&S>QC>__ z^?!eNzGYZDpAAXxbAbI{=R4cMT!!gwJqRkVV)z*Np@!1;3V~zECVxAcPfPZ*O)H_}JCJ zN04JH*eiq(1)Cm{X~d5J+p@x@bFnP_I@0fnOtmJyCJgJ zOhCbJh7KO$9%!kV^zpkcdp!<*@r(Z5G;-UqJ8!Nq%)bkE1M- zXuKo>JK$BPnx!8GIMPlC_4fR0KLr^?-=XeYcowkn=6=im$CfK>250?do{5wP!9B9a zq7C|f!r!ReNcakbVo*KN>2F>Vj%D~;G`X9}ej331v5K(-?Pyu-2SgU2Xcm9Lru#%7 zo%o3wc?0A~e`mIwzncT!ns*F!>*1i*1>h&hpMpn_6a3!z2RJK@n%QL5V*>n(U(CtI z*q#3YOm(+Z3@E%`1K4eOAhah3z?WLUP*N$GsB?#F0D27W-2=i#^}*4I4ut+W%x5X} zcE8xC$7l=By5Y7jZ>i}^%J9Yg-++-D?-Y9)0hyK}MA4SWDGOIt0~jMkJ>i1q^iGlr zVT8-zcgO~*poR@2Lq$^&gW$fVQ-EAHuTggn{}mgF4LM*#Rp{3yi_Hh5zU;!5^mUSZ zCSGbHcx~CppI|do=!fAj^v-J`@q~I^8KykW)1h{!V&OLl&*2Z*hdR=@v-sDxp6Z|G ztwv*0#|g_3N!E%^s~Ggk;S?5lxxSiwEbKRD`u>25Ms<77?=^P^oTSPR)Fnz}iWiSL zP$YE-^+@dz+osbQ;4?}5nP`q!8%q(>=~r%a_+y5y5dWF2oO9!CI9E`F5BC6-bwt^9 zL5Zm8X8%1X&=zzCWZG$n}P=p2q%r54<{x4;9`~kzT@22y@*&rGqxp7 zvHd_uZ*41#$Z(q3bBt5KzUJhDwan!zvss&*GNMxkp7c;e1k;(LX}-twwJH1fo%(A-wQTRvv_svTj33_ZiltbCU^eV=^1P1RH0* z#)kp)s3a)&{$T&ze+{|g-rw70{hr>*cYLl=yt}x0fia7*Iza=`mp-lZS^T$J6eqv5 zlm~c(7nZU6H5TONGL(6Mt|C{3Ua>Bg%1OX)UC@yp!-+f*OFGv7QoSltL7K= z2})pukfaMpXq^+qnFOCG_UARz#usbf>}ydQJk;E`9nPHP5-dPj zc}+g43klPI9RhrB{%{)Tr6wYguxI{(&%Gnn-Fc^Y@8Lhlz8n4ds0K%?=~FG!lQzce<}+*WVKhEv6m+p!@AjE4 zzm{`Q(Y{q|{KeIkaBV!CT_3)o!`vT`Gt7y~L{)Fzzi$M(Z zXl4CmbeUUL(@kmJ;{CLDv@RNbcD~Y={JmYxC$H(%j!=BaEEDclqTzVb(1J6a!XpeW z7#{rZ^UAR^fJa@k)?9+xW?wmxUn2eJg<wxs`=z*%*zH$ssCIgy3hJ7vv`!k zeT1<`68q!78|svkgx|lhwV_;#j*inM*hv)NI?HSj3E+f6{1%35yKOx{36Xa4(u4?6 zoBK>#e=q* zP8*aK-{`Z*c!TQrf@}3TxZWlE-AMCIsy2YD9CUSjZ$s(-{$hEHvPl4Lz!#ION<>Jn z!tEmpywD8f#Rm%CO@eI2a}eFsgjW!9nA{hI=DW`uwAaKkIuB{F{c_09&%&JwkmE^8 zP+`$jIPPZvyLu2o0&D7b5#-~IN_~e)-6DkO%ROfw(-6w$>(KB<{RGeiAj(YOBaf6G;|aXhDC25 z0$r$Bb=BoX<`NS`e-Wq&j-7hvhu8{$ZH2>jKx>}bveljyt`?|tYB}HO4bXaD;^+t0 zr-Ix8PpkhEzJo=x827;DvB0#1S?tEzQytMMC?mIJ~0 zrrF$V$Nz%9^2XLxr>3dCP6;$-3Kc9Jxr0xYnZ{l|LTwP`P(}!?p@FyyFn0$`K%NGZ z*lC0Dmsc+Ca3}w(zdtMtd7tx}foa|i$5Kgemu;02+eBFp`@g8I#_0l2jf&-Bev*G< za{kWRSXEBQ^1K!zp~*O>bgP*E9*yTSKOUypikEqBYd?M}wlYhdW9NQ-*^Sm2)nEhH zdvA|0R+A%|_lo^Afo8}`$NAz41r@!+2ipmdK8!OxlphN|7^Mzn%m1_ra}Wy8eCB4H z(|Z-M9Tlsd<*Z(8Ni8JP@yjMCr(i(o($0YLoOtMGF#*DB4bbyr)B1QU%;XWww?1;cDkeEZwTye^WYKMg82hDKT!6lW3e%cxKGiPnnOFl$e!? zC#r5Vr!0#kvt^zh7yWtEzu>$o$nIaVC9lU6}N+`EdW*QLweGUoz=`0YO- z0@?)c7;s#9QUNG?8b^Egy-1Z28M{>g5l)dqwcf{*Z?*(U1=$J-;$%4N2J75QB?2RH zTcJ@BH@3c*<0aKJnDo*91rS1^B%XNoD%aWCPG~48k&c780Ug~U2(-57u>Q?j=GN;U z_WmDjThr9=RSxGB9{ux#4Gj$H2wExZ^+~<5Z>m?b%b@*?*EXtoTzZR;i;W+VWhn^N z&*`?Ys{_-$cC)3galPn0W&}u39OtdDu&(2RenVUtGiT{V&AdFUnoYwuvgJkhtG0s5 z{x_{|c~{=;yAHF#COJj*C{OK}b2;<80BsfNJ8$K`q?Nhbx^k=7Q*^a&cwrobo({`yD(_8rKS#Y zqZa0PSh$(I+81UWCZ(+&7L=j$&bhN)!|t_41&_spTA-$k@8qLYS9K+?;Cgbu&ZlDq zOQLxSgXjhojPX6$r1{p%%dhFk_j~FM+h*Tygyt@$#i)DcndX@<%6n94^efJJ2xvg{ zY#Dkp4DYzI_tmYdM-M_HxZG0sZkfLh_n!v{g&Mg6KS=4s2+Si|8Uqx!pE1q73AVXa zJ7BvH`(D>~4lF1K$`)0s>aKqOFxUBhG0Jc8p@HwCX=vKvKDT46h2&}fT)f2VdORu% zd&Z|0-Q+Vrwn>k15X#rx&5we+Oh0WUl$ zJlHtny*EHwCme_J=i4q@YB${B+V2sq>9P+<^k)N%KxfXH`u3a97$o`%p5diL_#2#; z9W}(sU*gzEAYooz*V-5Eu5&q5mLI3Fu^4jAZ-7PVXNWc!38`&K~KH!us$?16cS*3cIAiU z01eH5k2=MqVU>ECMG|MhhdFi5@=mAL#r!*wSI{58_&QN6j|TWtGb>&LuVHS}D%eDc ziRDD?^tCu+;z!ljk8ZWDPJ{G?-zc%oZk#6>2LLfg2D8`!B#h`gLbL>tG7g|lv~!#% zWv(2|-R#=cy|i!bCWrjBG@dHecO=1=l12 z;KUj?!en$o{^t;NPUXE#C7vm%afP{Jw4tMe&@#EWds6RMg1Csg7(D@f3caIGwV~s9 zDiNtF)=_UuFJkNdv&{KM*vXI}e*%PY`ThB48UM$kBYzq+eo6O%^S4HnCyDPW0G`I_0pw%8{L?7$lhv0wQ*ZQ!G^U*F^a-H=;HDE^cJR{B_ z?c$=%kBrcHh-(u!f2ZIAj1iy92#Nnip^%jVdv3}Ni8+0-Pr#+%xHSTrsW#tF8_4*e zHg*x;GeWZpj?}ZBpjbj)c_}ePkYS_P)fF7*i;1_C)&63a!zv7eLW648IK^}$RYxes z-lE_d<`I#q_|jBj;SDAl_4pWv;@b<&+h;OgU1?)B)UbZvla^nzg~BqFI5;^-33ZX3 zBBVG-io7e)-ew%dU9Hk)YelOJ9@ke%B{kar6?weiD~q6^;{Rh8RZoA@wa3!21yCCqH&0lgXZXz z)MS>Q=AvV}KXIzG>uM7fm1kq!J7$@dpL6qXb z(J8P(?$Gj`n8u>#zXTDfnK>?6=E5Zwq_d_!;WW-w_InjDulqcV@1moPb`LYc-fC#VfG zIOE-SyIUn&K$S1gXzhcr^N=h$yFbP*r~1s8dFd2Az}3SBvbL;?3W%?e(hkdoMd+A(NF<}mpLD%S7@NZ_@4 zXsWlktb7^h%<)0P$ko|=MCqX^eCZFz?9ANQd}Kh=BQ%gC)KlGE5|UoJ%OY(WNY2Z4 zVM~aK#ndBMvBCDaK*{r9=lPNP#a4BFUEZO(^XNNV1+s7jr!ID4mEdulEYZ}&3W!xF zFP>Yc5Zm*uiQ0H1<*GdgA!7El<=9BujK(^WDhMdn3U8 z!`CWH%?Wqi)Z=Q#Ed21VKhtvbTTTOC5@mkIWa+Cb!Lc^UW!@msMDjN_?<5@lZh}M^ zJm9Ld1Fu(IJ=&VUyeiIof2e&+v&b0FP_Z)b=F>AjGiPolEx$t66o{2GaKX_5x+nGxTG`r#EV zN&)eLZIR!ZF~AM$cOSVB8Q;Z`<>(we&mPs4IUu+3cc)npJ9A!;%s(moQD1IGB5hEz ze5f=v`5OsO$1q&$b79AR&xYxNLoQj*JtR$3@;#vHul4Yi;3;>IG>9F7XLui!B~O0! zra&M9D$6}`qi+#D0t{z?t8>mmndgr|*>Xq57Acf{msba2q65<&d@W8_KWUZVX_vCpvLtCQNtNKiE)Y*za>`wBKn!Ift8%OR+`l$-E_|3 zW4=$ZVBfJaij79vF8=kOiE&a$fobH&4scjhyjYL{2^!)S-sbO1KK8ZU>1^E8qKDdV zXY7-!4rnjZQ|JQnQlB(EdD?HEYLH7fNVP~kL-h^Ql&6en!+DM`!VjHxt?wToT>oc? zPgrrYIQ9VxZ6$-`J}AkK0(?fMxK(fY-A`6~>;kd+plt4U*+|2_8-in#7cVAdEH4rT zLwv@(JshF!qD+Lle;IRCVj3I?nZag-A8PK>yt8Plnj2-zc*GSS1-X(DM-HbE;G3-* zN#H-oUda%6V-x;fQ=Deq(4+~?G;(pmWf{Y*K4-einCn7sL`mV-ZK#NJxbBj;#v`zRypws3AR>3`y4> z$(%^|vwpDY5NHBC0e+z-^+WW*EXL_?2QddHVJQwE0{`UA>JbAvQj)!87yU}!Kg=0U z3I0L#iA=ZJRSGsHYTrbW^t{r6QT4Tzl>>HcY(e_uFE5w+Cz2-gcqr!DHkkn4FYR!Ukyy)5!x0{}@cfv#k-?(@ z+?~;%&;eXp3`zuZD$K3Hu*UC!$Lsfn%xB>^4bB*&Tv(gYTuQYTvO^4+G6At1&?jL> z42xu!I-BKQ0W23n>fd8ed^|3u9@Ct~48id)Ca>I<$!-NW+s}t3%U(1(zC6^9F7g>NRM1{;rc6-*hDlXsE#ZT3FWN*O1$(;PsF=bh&_P&U1g3j@Hu}ck%U{qLAT3ns)ldd^iW`QP(jwM1TAr(ANn>nCZ*zEqewZG9NZy|DN-5~M&(l0a}}CO@VIKaP7VIg7M= z>Bq1Nnj{fcQ8)0&?Q{5e(C5OJ8+MA4LGTnq{+Lc>90VrI2r`&+o*;=^U&+++7`b|cxUe<l90m)fMf^B9o zYZO`nil;aalrmlnu*lrb>PrCu=f<>#1SU2%Gog+c0PI3mf3hzu#SvW|8m1P(lX1{GnR$LIn9WjU@k-=}U{} zt;c!qT7L%(VW<5&Uk8RoeQ#m?JDK+=FKtYFS>j>TBo6J+;C@yS4k=Q|CP;}8)u+1nQgsfwxVSX z`i=#oUc1uwh+*|NcdD_PD*#7P<}vho%H642*ZRnAq@hj z$%wVoPiA~+L}wOu{PF92fGnGiwNyFbWE%g=XVLy&5^%!@IYeec*17c(&@!c{f=XrC z-tv+dM%r_X()0+tZ z?KRnrvWDyxG&Osjc@n-57~~z@EmLB6cWRWE;BL$jeuNj0Kw@tT>Mx6okECfnmP`kq z7KTQAi-D{9YmDP=W-5`;;A#EKl9T=`3-q&>o_TG{08CusM_XLt#<6s%Te9^z%Y1m_i~bh?A->yQwVV_5<3EsIe#BxxyYt&HcV=dLoyajE;YU&urp^jvERoD$l@RHo(wu|#K1jU5?tPN+I)^MnS=&TwbTAI zGC{^)Wv|vyY#85x=VRxS?hAK;yw5xFaZrJUe~-{Dy}rS#MVf5AHv(47 zalM6$Z*p6NMdZ<5469HoSLmOUs9`gcr>ej)Gy0QNPOXbSyx>X9t0$=*_xa}I{}VPVWi32C8$9tp9BI^UrRwoGgaxUG>7I0HGkNW zb-#A$JINF|9G?ZMnMOSxLG40^%2H~}JsW5qYim3t}>u~ z1f%F(Qlgi59OV0@wE}nqc_B8Z(!0zMXQjp2-G_GfOO-;AeZ{t~QaMxQ z)m>dNUi>ykm|6Oh1HCV}+=x;1It7zM=tZrndon@S53X%ewOYVYrMmnptza0Y2wE+_O0vv&nkAMN$AA5MTq(t-baM7t z@`>O<2s_(iEPr7^LxflEc8eH?IdetkpcspZy{_eLyCCL&<4R@1bgGf0pn+(c%LG0r zW{KDUM=-wvWl&|DBmZ1M*PQ3*{Qb%G0jRMq4t3iS*2XCq%>IwI`o|wb8#)8hXVIVq zwgN_`qbRi+S$w?|DHXM=#L}8w39T3c8J=v z_3yV91ZjH<_jkKZ7-fa{)VQ#zxT|zpj}rpyUQG~~1lWK%b32n(ap2 z13k8e=>6i7EUKc=3)M;dUZtcIs}dY6BhBQ}%p$AAJeFQA6?Y+X2U4ylMDQe$6Za?m znJz1d?b!8HCs=b`1bsPCYA@!EgioU_7n_rh@HDW1l0MW2s2j2TN9oy9b!h zXUiPcfPY-|iV}e;*b{0&8yT~4&q0G@8nqTkp3VpEV7^fuI8tkeu8Olv9_KW8(K5n1RF-(#VOA zOiMS4{<-WJjZpn-&H>bNW#NN)km`YTsG)Qy<~-F;TqOZUP-$OT0H$50^J zM8N0Knem@xyQRAe*NZDOQ+gdJr)`a(T_Hi2Jx-p6%5$saV4tT9x%!QWoW(NS)bbKW zhe4BrcZQ5WPAlYXPKlj%Huw||gUO*Rcp)d5?IU-By4UYVFy3~21k_m;>w!Tw{mdyn z>-O+HT=x-5l-;idH#0=KUhfDc3a!^Sx`C|T9Ggy!lyJT~`FN}~gTE*8_K2vtUbXOZ zy>`F<#@XHvG$lTKUyinCCp{6KIsF1|fbY(zW^E1NOQ$Y&{3-cT2Dz95-!mTyJA`~Y zNK3aHt6EY5Z7IANHK$A%jW7@Wfle1bVtu7%*|w#?n4Pylqol`_qP)zp9Lewq9R#`{ zBzcH}KN6@1+KvNgdM@mxJwb)j4=~-PrI1E}f9iP=Ey%gcD_>>&>bD!D;SGg&42b$X z;9BR$YgNQ}`2+1M#FpjzaQCl&ce^PLKR)vC9-8fe^gnYC&KyV!(64^Oz3rfudD~&{ zzC8f?kRnAnlL{7Dj^Q`C1RNit|MtMXJTsYMnCAXl?Boj$hLh1!8P6lA~|&COxw4Z(lu736?Zj_;L- zhL9TNzO)86=8ChzOTmw3m@hvItuUp*#wl7p^4dI%zyC!usQZf0AUN_py2PAnq+ziT zHCgvQyLq)jjV|;!;;klBq9$F7M@2BuflC~2#`i55VGvb z9k=HpywJe!|KQ{NaFSn4sa)TVZhtL8{md8sd2i6EMzwpR?sd0)&RXb?V0blCB%!-F z+323BK^Zgn6G0S@kKx{I!PAbm#C`99*Jz#FD$(e3L%Mu13mv7M2Km&hS>k8=*F`aC zZzo835>7;3zQXm+(^FQ_;#*T3`}0>_lc}vgRXf!BJWqO9JBZ(PKhHd`*EM6~e)3J=6QAv> z@={8hz4e-f}N3T`#;9$)gGkA6SbMT?#wT$=H#G3}9T zaa^|jmmFV?gss7Y=8Dzo+gC1>k4P3^6KmAShX_$o+ zqWeJ7xChUSkP4sF*fb#^O8*p%$8#lQW8!ozZ{rP;d%|7~a^13T%HUG8neSDFc`R}+ z1rwe+S;vKzm*%}Gb0)&P2RGLon6D16~i*YT!631(IH?7;@om#c3 zKld)7o-oKcUPVgA1OMPti=QASu>GnU5@Ob>WgvN~p}kG2APu3!bX^cf!Q1$tsJ@b= zwRzNz7`PU@h|X=A-Jw9SqHfAdQF9sQD|r#Pn^9QVv|yc|cakj>7?)pdFiQ-O+z?iL*dB7pKgedNju;a0 zdv8umV|;{=y;z9Mru#_QvfK6f+3a+~2&?JgCll-ZM>>wh>UXI`FM}e)kJmJg_K;~R zE%JuP>B3||HG0V1#KdrZ$aKC3*I~ldfd;`XNL-x#SM3cbU(H}g?bbFMVG;|Ch(Z|Z zE}$m4aT2$sZ@yM+{zKd5rN7~!jD5Z@a2wwqisB@-Ig)1+=s($qw0z*x@oeAP@GD4D z(2M)Q?7Q>lA4w#T;84Z%%gh8B?cGrU*HqB`2~8L!aoey$K(^ozD6CC1WhiSd@S*&V zR!_y(mp~O3Y=!#IRHRz_Q&dVb7A`>XuOR5*4MN>kKj-Ten7{S^0MkG$zoGx7@kjEB zKh|x*{)7LI^G|^Mr__=EA+AvWrM5rHidR@k;ar

sedA;A2hFa3?+g38DNF>LmCY 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%0A#C2YL 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%0DcR*?YbR26?sHyZxT58VYn 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

6;EXwkVN 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%0DK=xTZ5MaU{0+FmSf3esT<YpNd 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

Z7|onvXKbSI+hiHp=Bh!w|e{zPQnf6^3X~8 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

1jJcxl@5?Y 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%0D20Fs>|Z{+tEs{1YARkLQq@2Zcs? ztwsF6cO=}S5EU5p57M;#ua5miEfgZ=N zoA7HZf9uW{qzjl#*HR&z;cES*wqB@q98k`lyIgz!sMJtm9*ba?OT?P~Qc+b$~ z_yZj0ED$4_hzRm`B!qaJQiTTv!*g=!!QWKRc(XDU4uixwG;A-)#4Ye20wVrU{{+~+ zO2c7g@h60kTYm!1e?12LU3BLc4GQR zoyq_d0}L8?D$>?roEhZ{A&3hw$+LHYDIlcQZxEU%i$ByS%VbYQ4C-i`zF7s6Y|5N(ZOo5f z+Vt6z)SS_Prf9>KRC&AqmPzS?W+v5fN&fH#a{c!@Dun7i*n!J7;UDP&weYbAw9VzgTUKuOnhRiG$!5@sSV1vKQzhuA;||k0?*Z@ zrve`!V2isN)wSwc)6r|Fe)!EEms`X9=9*kJ%AOqZXWu3|w5_#mu-Yn2zTvM<-LM7b zxX-_|_n-OL-g;+_Jv#JCYp65V?!WW_8#QCGHR{^QE;;W2;bL`=2BT<;iPloBuA@=p zv`LP>GF(EKIdP6X^yf$I^Uvqo88;kmTW;6Enl@)k!_cPJaExRl8EepH;;2z})~_D5 zolf1uetZ0`)^WpT+U`z#=wE?$DY*Q&2W_gh!|Q!mFFWJJy<8W|)c!-hq;c~S8Qh^p zWF_{l7lk1wCU&yTr977c2qS&avF8V>oVKf9x}c6lyR1rk^S;Myz;#145VpUaa%n%S zqqyl)W?MDMtwH^~&=JM}l>S&NR;mF+&htih&`J41Ms5$%Q8n?MC;8*YYSbvTOOCqB zei%E;Ha~KE8*s(pfnLWRY=Map-f=8?utl!03rczZ!=y^=RJ=$C)5njt5kp4X%~!r> z7Ysbfw(r(f15sM-sJ3s32Avoz;~cg{+P0b%Z17sUTE3lqPYx zyuy)Ols`g`^dk03!dj%VJ&kM5o~S4ICW zCuIl|HUPote5{5AaFF7%;$5#D7ppsJp0tV%y8rp5Y-p1kI5nkr}~j$^H?D%f{P54mi-V8upi~ zf8Mb_=nw5C1+2vX2MY9?;18PAi~jqB7Cq3OiO=3P6e1+UkIRv?^2Okd`Va9`&o{1ye;rWkV6ClK;@dIT|@mGBy%ISeXs0vr0PrqIW zMHCXzRW974DKwBxjD+XOh!ATifx(SsYTP6rXATA)l{#ti09M&nA3rG5_$jpO6aUZ6 z|BCRdZLW@1NyuBnNID2V%3r09z>NI;qsXm4=p$6Hl5SG?GqT1mP_ynU!k^ZEaA4)} zN1JoU8;r+cMm*e|=9K->hH|)#YD+ zy-d3}vDuXVBVE2F2ec+}*a=R5@w74a{#}342au_wN#{bS!@rL9ug|Yn&pV&!$Rm%w z-874kE&6Kfu<>u~t0@cY+gVE#Uc-89(b@Lac}DoCnLkdkiIXPVdlL#Y$h5sa_Db#J zk(2Cu&C=|x6-hnXw6Krf|JWvKR_dl*I$6(6G(%G#?)bln-+gIse53P&v>I#woi?|Y zy8Em~eF=I6CDxEO+wBzVN84hR*WI_@)HZM1LQ&9KW|PKEu&=)xXJ5|NYAVs* zt5d#>p1IT-HE3kV?z^oOY8B2s?|f^=_uW~uX6xCaxeM*9Plwv~)f?DRyKZfD%NEV82A4LI#RI{V|Zf|WH>zo2@t1)Nx9Q)flBkjpXrtZmu13@Qzk@_H=vp({a{L z+X3#>qqDEXDqS?o?tSe`+oe}G+pvue`c{Wa;f%?4_dBEP(7m^{4sDv+QXP)`>T`qb z2X$m{4nVUO8wg($>!X3E;`!6cAEg1FrN)Am=Q4xITqpR8cc47a;Hot;oiXFpU|XGx73 zI-`v3Yx1-mj5on_U&@f`U$M4M>)$o; zKhghVfAJX(v9DOpd4hlBTrONM3?QcQ=lXwdT$O2tG`1^wxTpjUNv&!716;ZIok0C~ zCrToJ>fhM@@s6Dw{Lm!>bbd3oL>P55_k@2vEXRNJzd?4v|9UFbKVGx5&?9MorTO;; zz2K5BzyM2-F?fOjEsvjY$K~{qY}M<3z^+aCBaB@9QU83zMf;EZuLysXe@Ii_&YWib zxcro0b@-3N55NLCTCIxxk-j4PPt#OU`y<`{3cNW3RmL9_2kooJf3*K~sef;xx_sU8 zArvFfT{HO$#@ndLAKB=s!)?y|X&Q{uAQY=MI5$!qxU9OZskQ)Z3e~v5r-)c=D02no z1x^oM4)7_`qrXyiC>!9^ALY+c`%gkgh;#cPT}Z88EP|Sld$?kUHV86djtJ06I>(!o zKiZo)_}%^!T7n#$tOPA^1N{MSzz_ZWAp`EbfsJR%RuHEnCR?UVEc0botSn~WPaWr4 zaZ{qfj^a{H_Fxc7D^!;1y-4@Yt-4$9P5W7Moex!~W@E<^unG?Vz@FW!*1Rb; zyFh=7rr6ARKic9#ZQrMgmjME{R^&U3As^E=YSq|dNPM`JI$!86Oadi5fKKkn13q9o zB2V&oU82xDt?t+8k8gv=cGH}J%HR?H#WN{0{)ZXp4EAug&k_v~lroqmJ+WeqL5{eB z4Y3z%@GzX46lBie*Cri%Sl?~VwEWslG!XTTJ^4|8ttia1`r4L{)rGY*$i(V?2E^C~ zo2{{jzx9#5{`e64_NQg`lvYsXDa~ImxyL^G>PM~iZf1Af`G1=1qXDuawn&!UFrmi> zSzuN&l913ZD{FqxWU#;8_P(`i+tiwNX>0Aewy{13^$a$lHalk}QGQFb_2XwRziXGA z@s3^o^l7%ouA5t({Yej@r&TwcJ3m2TQ47%(9mr{nSmB z0oty+b+Ju1Yj3Ta<=f`dR9FOVUSt^+I_8Tz{h*8(=hDbVE~%Q>mt<|7*@k+6_A*|{4XBvN^rVL#fHbo!uhj#dn?XT70Khe6| z1Mt)Me<}LM?jl|Aimm>q*x#DUA0O%l!cSuV74`qf$|%vQ2Wh0^bI6AO4dr>cb}p&c za`^`y^<%KxfFJ&&{ip5E`)QOu`Xx^nh+b{|NBkL_$@d>%qfNOy=$sIpvHvww*6<5n z2t)k{9LgWo=@F~pe*z3;4-mi#F?!45=RFhd(N(km`2CyqKLK9?mls`dlfk2>%Jh%E zV)!D#IUj<+M_t3bnW0d6cZu_V0Eb7z3i(g@MOlSF6W=MfjbF zD)LYH3p^lwhY;Qq{a1zm6n@VgAg<)sw*zpo1mq|X@z8(|OBDSz0|fyRA3ju&BuXL_ zR)X?931E^dIG&Kx8Kxl~zS7)oC_Y@C<$w4kiM1zxcdS7@E@LlnDfzo&OUd8s1}P$R z;05y}Iy&f}snyeephenF;Ya7OK^^svF1I7wP}BRI71t<$hH4aJe@M( z<&7)w@0F;BQCTRBD%DKKMabfL)|UOJ@%xfzaIRtbOY7fZt%dUEdR_*n0NtiHO+3NvgR**U=k=k9U0I1Q(UkqJ&Ps|J7?e}%&Z6&8nEk^EJ={#QGRBa zLa4BKf@swO7HATU{^8_w^I;h}2z*Jn_#hdBc|J2&@R&ue9svDG20--Lz}^i~A$~76 zNe2<^APo|F$5Ci~={2FnX(B#-c}*i9A)LDC=V9r&!|(u}#T8{kch1A`1H%pjG%G zA<8;NheYY$kTx9;2rh@1ydeJ!ju7p?AvzUDKn3{GY2aV+O2a#sd-MwYZ-~>c%TcL+ zf%QLSAo3smf0&TqLQq_=Xm|<26g#qkFv}~*V{P(}9p~bY{y%(>J0<1hPZ`gx|EPa5 zB(I_T=@4>Q_y`J@F6<~*|7A>&5H3=L@)txFBp4dd_(x9=gzm8LfiM*1FJ_b`EC0y9 z=kpw^h96pk{qwu}_J>E~iv03i5&u~=|L`MCfSM1WZW_$-B!Vp2K0eQc&v0 zig^Bn>dzJ7+h?$=oN{lcBRQw8;8HW?Rxze$S19%XE29VV?+!TwXX8@1YWzDTnS&Mm z>kPWKe>mP<34O*DE~eJ~oeRvXuNGbDaUT@P(N)0XA~x(M_HtC=CwjzxJ2c;8%H5#E zRyYg3D#u|-$7Cc(4?4J$`1{R+L4C{5fVx*I9z?e%a8Ynef;L&_pgj|vkN6gMzz^5- zl^9@1x^(L-*NxGAxeDnqH|FU+@E%e6TX!~@Lw4+3mPnNVggm_PlBhN#HD*BRUwR(o zZ<=Q)jC0dGB=2HBbqljiA+D|5rF~*3JM*b$(0}w#((c4@4eO1~`J)mhQ5&ag>>k;- zZt=|h=N_%r>Be?v6it_xFF8Pvc>dxO^6|3Dyvk-ti3bX^P~#QHN2@&eqmME`mpipw zks~5br4mi02+sU!xuq}*EuL4!O`mxTv4Lim|Mu^E?vnKmy<`U@HsdJ)HA7odd4smO zzfR>J{!|wel!Y!@L=VR~v+Zat>s6GQ{J4bicEfWoanwd&Lx%2Sp=F@@hzzMhTi3v+sy4&&yDbS}BO&c{; z-nHw7=NZbmo8a;%`gu-^wAl*Xmky>{MG#J__=5bZToG_53tL=MJi))F+MTM0 z*{)3`Q({B?Nu2A}C7S+K;H;2$)vwAJo`E0NWDW%WiFK=eW9{6R;T&&0S?hy*FsI}? z89w#e{u(cu3D)~tqWH%pWm#3iYbLG!A!?5GjtG;M2~u{#e?k+D>xgVpYir@LcrnA+ z_TwYJbC<1Ookz8UVz$HVU(UgdlJOUlv!rE0g@#DKt4#+Yv|^ji_QkxCd{yQEd@j;8 zcUsGk=M}Qj9s=~TP85(Ysb$AXD^8odQ!9A?UfY_(Y*Fpq-P{4CgRqX+TgSfmQAwC_ z=$ugu+Zyx*k?oS$9?5(aJ||fRm?ar+sN75Af~mCPE_1unlA*E2DinV*7PQ+PV)`C@ z3fu>Uxvo3eVgYm+01u#eb=04DicMm6!F@f6@g-%0yYS1q45{z@NMt?ocBrnC3=S}M zq?!e*QGsDZ(!c6840u^*-IX+?1!eUyXJ?JpPX$X1`2vNr9~C7&moFskgJo-b2C9oG zqLWm1zo|u;I8bGA08b5pHyC|zGCM)6A4#oJ!~eL0?=oUJc!oMjNmDaQ0?OJ7G{rUECX6wS~l z(w`CrETy{?3&26~ou6-UeH!mSKaD*U(&4}){P_$H%q4BQoc*m&(d5j!jcfly_t4h0 zqyT=92MlH0(v6{#0W>>PPg+fY#e{5oq2D(`)q0kDe%WhTF^4;_O@FbxbxOxqUU`jq zNqGi!d-DM^jJ5FvC7Y|@AG^A&@clQdbuUk;&$PBRBL=^gE%Tur5U7<0`0ZlI^%er< zIE@Uuu!dur8v@8!64j65@_n*4m3j*Q5=Jj1bD$6X>Zg3VtK;6*h1`_XiNb7!*VRx> zRmOX$vg55S&3Nv-KA{3#`piA|_^vLLr?ilmoxUS6g>G%@d6-1q|9b)8;Sz!W+Q3}D z9hNjg7s|h>z~~)hhY}uZ6vXAc?rY)Y4n6ES(L%!Yhr{N~7KT+2iN*UsegB)juCLs5}Ra!{b0w znc^97Q8+#{o7zSlBY$5tfOX>jl}k{mbT~vT4zd!pzX1>beStj1O6dyJW(Z5cg?&2}P=u(o2Rp}MfD5Hz& z(`cxd3D6B*P6+K(R!_C+l=%G~#&;+2yV8rr;rfF`U-Ei`-ckT@K%{>WDFJYdqjFz7 zAYH^@5&SC8Z1MkHT4K4(ay6G!(gVPiLy!0UlxWuUXAyRB2AAD8aOv*d7P7&j)hXk&uxNG+I*Gn&tixyZEFb9cOmaqHa!vv8xctGJQJ~%K2g80srxBQ z;mMao;SfD%Z65YqzAvKL_vXLFXV*=>^Cm$u$nmOoR+Z4M-*S-ABb@2Eh*KY?)LV$- zf*2@B?I>qp?}nRSko$8*JHM*g-QWv|%5*z2wU3cF4HLU08JGS+-C&^NMW(|Ud>P_i z)Z9BUPJbRRKr_#=jyX4LKlDXG)#K$7^tN-$y!Q;$eWOYvn2<`DcoeRn3rX~FRW}jR zn)fX~5s>`alO|ox77TT}*BDU4-`qIOjhdfdBi|oj-U-ahCj5z+Xq*%=4{lXy+)rxU ziI`lUF&oT!9=zXDApPYyZ{BBE^^~F$=P@*OexlTbFPJ1NJL?0Gx*PasW?whpTr%(a zWn~ABg-^hGjr_ZR22YpSD$g_~Fje&;-wuAdPd=wiu7Fx?k~;kz&(Jo#n*QZSevihI z#8*7J<3KaQ7yKr+qa}a2wyOkFMNGTgzhq`{fBJVSd|14jO(f{=lv}`}}C+><)*Y3Bx z0s{If6&9y`JPPL(YlU`8-w-1dr+56@0x5zoX-9V|ThX)kxR@)zYJp#Ot6X{iz0MGM z^K-uRyhY7o2iI-->bJu}py*<=UoACj!2+D+0&mGrD6Xz=&h{A<-y9pb)Fr$6^?(z} z-k<`}9o@fG3bXK6jpR7dcnr*mRC2xOv9LHpHzPyasw~53GPL9mYFph(TnG1`D<>!- zZx934j2tcB!i9UM@OS+4a3Uf506JZQEiDCzg1%4qVXBP}wlRpMx-h{V^?*k|__aSj z>-hKj1ztFZ65&fuAUnXHzmd2@H(cF-LAxeW!Wcq(;9u63*u}GgU%0wbzDtYKb>HFw zzJ>ws*B#=A=q z@`pXGAPh=_l3JUKMf`<+2E1nGh9tVExkp%mdJVkAd+@`P$J}^}Q~(emRhZOXc5EK$ zJ&Q4y82mhyvHj$E)5|OG12+GZh|8*6eiLr`U4MCwpTXQnLmZd5Z2OtA^SPIN-I>2;RnMa&;#)ThFp%&>X71xh_vtdc&wObrLyc%5L3Semr^}!3u9n(qXe>1z;Z|B&mlW!aocG+r@zoxFP6JkCvy%1NAtc zUidlCD(D#vVaXbd0g>zuw^|SB{Mis!odVkw4eD)2GzJ6MI+iOXojxURYD4 zQOQGDrULIbE**83XmlOJDGnHpx?8e0wlxMDRJ7iAPqfB7>qg%E?lV{YW9%OvMr`1a z(dgYx?QImeJrBI;ATbPnKwehIx1*@c&ymj-TK2OH*Jw8$wC<}AO5XM0D^z3fXcZaY@?L;aGnM98QE&P%S4FieM>)|WY zHP3}bHD;w;L>6YUv_yrEwcqAZN#euxwK&ak)vT_NE?)Yc=JJY5tu(W0-)*-Bjh=a3 z33*6+yX=Zv6#ttKT~`qV!vft1^MmV0UBOBDbCR;phCadUAIj$ZU7>EaA!BYpSDV16*H9eS8R!M_!XOSc&;>0Z@efjkU)%!3-uBN<~V$5M0U zh~a?WbE>?J%8l;^|NY$V?}*0iRJ6kBKEI?QKp>h>W?};2?9}K9u!?2z9KNN|awPP~ z+z~!tkFAs-h;9!41B#aetnzmTj|x(Y&xu$)&N+){zPrre@$)oq!C>r>DP4p4U7UpD z%y~OH13ALJ->rAoh%6`Y+Z^xf6PaAwnPRpwGHJvZ4`U&M+7cng)>m|sg2lawzGTU} z7|&lTbbH>o*5uCpi)QZ;O)b~-V-CPhJRh(ee;c^A-7{Y@*;v;y)mGXnI+&H8a+Pdc z+p*M9Zr2b0m`hG}vYkOV7#wpP<^>!Sp0M!UQIjypcRt=f{0T~^yvBQ%Xqu@KlG1M@ zKl)=J!=5(cNZ!6(A*j@D`J*UP zjA&^?%$SxzI)}?NM7u4*4Xa`fVh)=G2VTaqeS!(-Ur=|q>bp4389!q+7|&9*$9H=9 zMp%|Xoyg$u1WdDR{G#ly=pLlAUo}l^>$5wHlDXJdudwMNAxxobw!uUWCN00ohhrQ% zfeU9K2Z1ev%x}B9{K0!qn2KDCAMeWSxvyCMz|uG0HsJQoxgjl^Vwg&k&VUTE5HfeD zpMwdweV^}nIQH?@>6qlCWuw1gm4s_dJkM!0U*#nE%~hGO?Rp!<;DcXrrEe+*oaaxN z8*%%Ev;K`9FZ-+GEAm~*kcOcj@_UZNv+0F~+MZfs+1R(y6sOajBMWOu528wN4@Al5 zM7)u>=ed(wUTfX2J-UmmZE_G+L%a@XIud8&iCcx8=7pm_PS-1mGmRGz zLl4K4d7_oN2kKTQ&E?>q`O3%ltA*USi0xLy*`alCdDnhOyV8xCaNDCo&Fc6fkr!_7 zeoqC6(yzn3IFozzd@GdIe|5YzZg-mbx*x@GMQhhy5$eaz`2vpGVkQQ;g<%5r+!UYr zesDCNe+ePC8i99^=Ec%Qo}rsknZ#jH|29_0v^v*uwI=ht`s^#u=!Wp-pN4mjx(*e5 z4{EK4PhxG4$HaM}-PUWW#^`dZv}?^L@v&l5YS6dVqJn?iCeD1_+$O!yDUlj_5QTho zU;pyL9Kpiun@}!=Ondhb8>M&f*y!xp<#QC24^eR!SQY3*yfr;!K1HOwI*j(b(qfMx zbybABlSZ<2K+zh1=_?;^42IP;}K$14Ct<8PIxtK4kjW$8E_|- zM8mhFj}tr|5%bi(t37$RMr@B@V~RU&$R(Sgp2IBzZvVIn%^+iXK%}8GN%%pyu>1Mz zZ?tA1D|9Tl?55Q{JbOwF-1jm5f|d5^{yH1YrHrCoQxjq)EJN?T{^W3T|%Dk#us^momn@PpFj z^=0rf68rF}@dKfhZ^u#gb!|TOvC@A`wAS>mtz91G{iK(BweUksgyV{F?BkDOXO=l5 zKDX?{+fowX$JgZ~-8_~9R#`KA`V3a5L3c?O9B`>R%N$-iS`yNLq?;_ckVnGPGdw57 zqA%mljP7BdytxrMk}DZvzuE&jTT2wW@lb+F#JO7d=LW@VOkj{X=&k-BoBH9k9FFu2 zkWNZ{(uea=8f;fxNmQr2o44pyeBQW?6!%gYr>EC){JsQzuX#Vc zJ7-g>-aD}Mt&c0@AhqGzGXX!+GH=DOGv4>IRw2h<2D|!>94WSom$|f;0hb+T8UBA% zy1`(OndL?9+|)M@Nc_nfX-yYo&X?F=ZyeXxY{R2+)N5Xlh5;Qm^+_2B`RxF`&Y3)* zu5j6R{<(vR!m@boY7RY%P5ieJ()zNfjL7j$&;A3S1Lez#%&MtzN7pgbbq1XGx#Yf; z(e#~c`kBI)RPom+t2-}Uxt2+&^=S_9FmdQ6&Njc~A6V)Urx4|vaL=PZEI>J#b-R&@ z!v=)W(1o7A?zEH=O!UX`GntHBeX zfP+10T&B&&1NV6rO71XZFz5*gKEEnR{bO-Y9bL4wt=YfskN#-nXtc?45jFl+-ngqi zd!8r5hMhL-^^HVz0lAA;dJ@mY2nrslu-vm~riM(1oRY6no9ViK+L&<`#tHJcE3VOzN=gv33H$xvaZnpIHWS^le z%bGSBF@I-~r%bk-Uc0EV$yZvi6@&_R*XeW3;*NvN*2BV7;a->PxF179UUs*5hNX1r zBL19V>dIa^NZmwESTU3AA?MC7?{g3Pa2IyEJKei}wS{dXSMHH zM~PkOrU|Nr?%Ar^ilZkU9Zz{qc%<$PFVl-7!S_GCc$kI;E=b=|PjCRom>(Vygu4)r zQc^UDWeK#bPQ^aEv#42Qqr>M2ZKa$_wAW&!H<7I9;Jh?eQ1lE;%Z59Y8*c{pB8WmF3=&{x~ z&uGi`Dc@IxGHC$UnvllQv~J)uNpR@RRKrPP2#jDWJHql=>Vtnx&%<-du5sQzLkB{p zgBE^bx}bzCY@cX$K}6AHD&!e_h|#2QvoSwl{;es#L=jckv=pD7#`5g25wp+5Ki@X~;pEcbZER(L;7pW2~{qlSJt1Wu%aOdQrsc^>p%V zO*)9ksmglNZXHd?*cS%@ql2jdBqT~wmhg)!CB13U2E#QH#rfT`bT*+SUlRVxTuI1_ z&39fYWZxW8faf)lg*o6GsF_AnpkOyV2sni5hS2qt*pZYmcM(k$bG5HR9#GT?Wyu#; zqbvjF%bT-87BVoY`=m{5{wQQ3*%Bn-`8K;H)sI|Lp&nOInK_vb?AJn{a(Ca=k=r)6Vx(+=@ii@oM< zt)DP#&9F!ei5d=^h;hgsr%YBi#+z;qFT{T{J=(|{5>%UZb<1e|+QYE+Rmp_h=l030 zh92g^)Gms2s^J#_E7@LFyH*mAX&pY23|E8s`q!;^PFDItYmgo{7R}s zAt{jjSx)DpKI_s$KW<>iLWEgz;x|sGS|&8Tw!?sAJ(?mpz4is4z%~B6L_17EWa*~$ z+WA0nVZTR9lS%BiUyWQ;m@iY!X(1&q7XpTIls`b#Djj@^d^Uyx{l5L>cyh|I0T*Wt zA6|@8?b26a#rWzn-n?A)9oRARuGQeCy&if zhAvc_$-PDumgyCX4SrWGACAJhUjK4U?SjWE%Fx_xazYY#_F5_D2-v?v$rgimKTljY zobRY${+kGfX@~0AdZaDG`wcIL$30W*mKw&vo__N$U5vk=r#3A8*5_jQsJt*wzUWEhS0k%(~~T0cj~u)c+Wb)p|4wT z$(S4)-&j{NtxcKU-vHz^;;h z*#3}&TbhI}UGt2Qau_ZB{l!rgzwI8k!HadDL3>FS#alPfw`h$H+Pxf2p-x-DSvLHW zk-1NL2E9@dnuYd;Z}?zr#!sZA8x-z5uQKeh|DGr3zxEB5;R0i#i9cJLb8 zfGql0Q&#$}jnUO-Z!-UgAp7qhiiWzJCngQoyim))(sia3`ux!Jb)fbuyW^RDpQF_N zwkmR)$;ltmrUV426Z_9Fz=Q_IG;!!Ue zyL-v)dV>);nYSWVpAPMI+cLG9pIEwF7}vvZ8bJc?gMNwriZ(r0}(wpwn+Pkrc3Ne-wnThb5h)b4b-qG>P=R z)}q_Z-!S{^1?0^3ewsf^Q{HP?fRvCxEHA3ftZB7}Hl@ zB8ksCSzZgvO#I-8%1pBUIAjU$;;lKqAFEc zq;Ge7)27*~bcfX#oa~r5d1r_skqpk~v5)#AmOZ;UckS;i)2$C3z_$z6uIvIo!&+;? zaT{`4oF;E4^Z+HAE8BnRIOe)`MKEZe13T%5^Ld_n^GHy~j@a35o$2whYJPP+jA0$Om|T?75Qni^r#>pIopU;jymZVP z#K+c&*b=hCnY&!?2Qoy##aVtmffzy2Y@30QgX9lgeO`w3OGeFKA=JvJ;31V+ z>n_84qBSN3@ptX~pv}6V^xO4l4O@^v3Bh*-Unu8ggW|A3PkgIHITYwR%axDArc@%BqNt+WtI4_W#mE!_* zvDi^t+`DiKyOS1piN%KM50wo|PW5|TwFCP2zF%awgyK80-8v^$F!SmCHfuki*s9IoqE4Jkfr4P}{w%lvlT*HPb zmS6R=!e>eX&eI|792h<%;ESI^+u2g4Az9E*D;$gZLssyeNN>_+R~nq636VtLlBq_S zhg$@<7K@E>*x7bWQCD+m)@eKXr>9nkC;k`#Xa=r>LYrWdvXn|JBN%@LD4wY)smWL& zzN%pz6E-^Zkl|dJD4SHwwL6Hy#J<{-LSu!bwVKl+io!7gl==PiK{$S`!t;m$6Fdla zAD3$4lM>B2{f5mR41N+grPq}{TZRv+U-U#u1kAPcgGU;+l8|X0Hbyc?!aP^HG~J#! zlyE%R^U7|3&BQu7=p$$DvE#&R)X3M`%Zr*mPEm;H7th^1mv~LUqcGu~GVvYVJ>pbF z0GW?ZF{nrX82%@hHQHu$s|v za0M%pcm&4Y4N^FG32VR&+3Dd|_|qPin{l|$-~xf4Ni3y*>DqAi%h9n9#Q_aVaR??;Qb#Se}1YTQ$S4THS-^R$wu0Wq#x3Jkr2D=``1y#6leCI zk-EMo&;Kf8Yw6?K2Txaez?VU6R?Rbyg@CGqUt(2n+2K?=A}d78Ni+}D-KxUyl+N6r zx612z>OF36X{FeGqlWINv9=h)!cjv8+8nu+P8=&6%Pw6w%X%1OajCt8=|<|jjqAm~ zZ8(niU)|)Qp?3x46R#l@+E+azvaTTXe0yXW`a`?#oI`h`EJ<~@FO!2`>qK#MyjX?m z0xjndU6j1zeMX6ra|4$~VFXe7Tp&@`gX;igg4>wC5KR_4@VR;p)Z0~KE8pR9hesiw zTtz~5GQC_&Mt|98Tqb_KN@cDx%(Ax@Ol3hRTkQ05i6X7gSW00;f@-uN=@o|M^X=&Y z8>CDCX;d5Y6^_%L4o0imz56^TaE`$*?UDF$y0K~B2GUY8_&Y1#PbhLvo5Rc-olO(G5`Hcl?7G$AFk9_g_I#X4p< zg@=#N32d?TdVq{8bx%iPA@?4_re9kc1zPOh&Q>=~uRaw&USeU0bMA#?%BZ~+5z+s> z;+$A*5j-;jX?Lx6jU;je&4fQbfBpCgzBOLn z=I{ZFSXFUdq{d92%k1>0S%5DtVhMk4SG%UV_xPZF@_f-_8%5m@H#kz3?;PMmr(syx zd_X;s6CILwx~+GNP~_}qlM{jP+9&fo1S zgi8-}@Kjk8a`V0nbp{gJcENbyM3yM#%rvTW5fR@WSkPr^VAOUdlytqI+x4QFV|@G6 zO7b_o%xHt|Hg4YVYgQMf%ObcGqdN*$p@pLTldsOZ^){@SS(N*KGgIa5dm8`ed>pEM z9IytDm8w^?ifrxt1+AX-UCRE>?7L-6{~cJ}zCHS_=*0c@-I57%YlY9=p7+r}T<^VF zXzt|MyoLYntW0ezExQCa3$XGfe&gPxsT$Q_g&UPZI}rC6c9bmo&GKDR&bmChm6rS= zKI=@6(?Nqxe$JTp39?Wg2~KbE(FCzH}10 z9U~_F{x$@2@;+0+&F&W{)D{@;?I~0{PQa|d;WmM@(54D^yMS*^6brO@*=!3^WtAa8 z0(@pVcvaSZkJU41S%*}9pK%}e)|c&HYm+rh*{rqQLOyCe{vFS3V6{lxoqXl8<{Hun z3YUkCUZ-lQaF7tlgY_)a9tP{%dHcH!`z_e8T8bb34}kZ!syykyt|d^srvtkBG1}{Z zQQ*?6(0mm5xTM79MiqnQlnjlLm+ZYUUJ5E#{B# zpakkD7;K`jP3IdhA7oL#`&YU5wKyhA2k|4Y#4g-9`vX_m_^9z+!smH{AKi&ti()Er z^S@GeARcrN9haYX4!}}#ntf?e@FQ2J zS&!P(?Xqc;fsi?FOx;RN%Di$-Dhq0N9%BJNOvXTDi4e>fQ*h5MM13x4O&0!})Pn$? z2F~Oe9W_lO*G6q<5BOlNQLED};hv9nr7NwYmw8Q2tsh&G(?U*((f1_0AM?%wGe#mB z_vy1gJ!M(>_=V$WpHqTR?DfCZF7sg@U#9+OC14$p9`ij&H>E^}<*h({8*d~>_70Nd zLT~8r97Zo+*OF}VeL}8P+$|Bw6bKe;>4MIB*O7UluJOw=2PubeL85FS<@w96xS#MB z9WPGMAb@~9>jHCM7v~%Yez%I@4gJ3*gWQ0>_kwUjZuq5;XF#6eCqR7EK9L&)ivQRE zWQIoVwzFi=-GRq#Bc4y9u0_uDUIV_2`W+HabtFj}MG2lvak7;YqhPFTI&d$x;De@ZgeO}BLB*sXfhhb{H^}0;S0coAS!0V(hv=T-AWgH=4hLVF-KEQB1DU2 z-uyW(cwxS|V@feOJ(E=pJ}uM?8Y(;O0!RxE_*~_Zjo?G)#{lRSSp5MxAui|%vu^ac zmll-kAI$9WP2XdlTuH4j;>Glsa~w5aCWGrH{bMPzvS-9!jaY}=F?MuJ!%7K43`+U~ zdcaTRaO>qnFIyzsB@_rTJ|Vc=@$LBHapUxz?tz;d|7Mcg9o1{vt~x|5(LG4(t-Is@kZV>j z05kk{9BsDTnIPf#>_f!OR=eh5j6&`!vhTt8>uhXaCa;z@L?6Z#S0U5#W}I)s;aHJK z{zC91JWfT_X$)FR&VO?tR1*~&iWQZZxBm9ok%N*mL8QZb+0zaXDfHnoREl>HCt_WA zdrfUe$~sqF1884nA!s>G18lSVk>-r6wb{ytU5B(^Qwo{+94ic&kWmOi9 z@tS`$F|{(qP2woB1{0?;#s36x7{E@sPv}~}7T35%Pfmd{?s{e6VwJGKfkDsiQHpFE z<-wkf86Rw(<8pO`P^V7Ss#%}V$9|DPWulk0Q9iJrM9dJeAn7Zkj{HVS5mPM)(a-a|vlpQbr0~6j291DjAdx z`cy*N5QcwO(L#R+!ViYP#RC>B)y@>TQfr$wN3d%UO3;I)I;NohCD9(b1#(P<&(R^q z502e;)ST8)XyZ7zP&P`|O5yB=uS9rGXr$ys6Us%?0Ll#4Cc(wFevc6A(~2>$njk1EBry$fhWooGyGN~P)sVcfLc^w&9@9#dhNn#xq;x3WK5%;0?n%z+)aW?lGJ_KEg%Lf%(&)cqFX)zz zDEc~Hf)72dhh_HOMZA>M+=BPP%?*IU-l@X-Z@i6sbivhaR3~HL&CNtrZwfjwH{Rxz zWMb-dxM&P~9-q$5f&52ZZd(ptNK?tcuqsERuSVSCVI_%=!YCxz>rE0b9WCN?4L*-! z421%xcaH72AH%S8Yjl6kuZ%5Ae*j_J@}!}fzsdjGw5{4r>D#>lw$GNH75 zu^^QG(^qJ5W~-+r+y}_92OmFnZ}lRa#vmkm{$duU%aPstn^&k&Gy(Z?NA|*u=jB;! z$g*72{cx}=Pqi@fVW`ZXA(ZFE$@7BBtfO&bD8I5Gad-*Pts%Jy4;8HQS_9H-xC|OS>q=pV$c1Nn&3Gl~N1xAw$op2& z8o=XX-v^S{l>Ug=UA>ZR^4`w|Zz}1B-ay||iip|*CF8ssW`qs3sCtgmsBcDl|&zb%-{eKp!t1363`hNZ=`8Bk-IfAWVZ90W7wM?s*i1VE;e!{8LtWaE zU9(A@Yl7^aB&=K7tIB&gT_Ntt_@}$$A#A|HXo%xdMd(R`)N%>v!SoP@e10ffnFo zWv~bjh!JH)DAY73gg2a{_loM$N?;-}(fJENjR~_ZEGwo%Wpw2{B|c??yQTSu-)z|Z zczXl@UBzwvna2nGMU@Rr#SS-Q-naQkCXx{ko^qisrBvxZ{Gq3Gr7wyF)d8X@?Vgm+ zAqVg^<;_*EfAwx%N89@E)uX|&Uzdml)??3E-G1$f{1_x;n!LB-k}SQWLu(T#CBWK` zKNQ5`8APR34!4?dmrP*}(W2%gYsLPkn%AMmfjjL8>l$~Z7Wc2yPZS1j*cd78RaN-S zYsyc4ER1`?vkCzkDP_pCfDl4;&@J?jx2g!vY+TI<&tW|2u1faZyw0D~)DR7{of>HZ zCFL31J1%l?;GAQc0|24H_%LVHg`?k8Q?&GS6*5cDginI(I?%n+%MyC#kb?R}>ZnDP zt8A}RF=EPm!dS8;OGSptEuH>r_t*WBrU*+v5!G!_S>A(*3u`9<&jPdq#|?mrXa0x3 z1S8*SS_~2*_NBqc?>!|U!EIJ<{c~2}o@;9mHKHHp2+<;;Ez_m)GR{sMSL|JE*B&r# zQ6@$8Fw3mET3yn#eF0fU9kM<8Z?j(kH`Fwpji99pb9}Ql_N5V%%d-%*btb0leimw( z?jHmm;uXQ<8~vJRR4A;aiG(|ADVX!$CSx)Y{{HwAaHt->Q?$7ui$W4jg+6W8$vIl| z9^4H`M-$S4YS>og*{flO-E?d}I>;Q~55~BPv;=l0JU)hmKk#pbOl-MU`E8%3L*Yxn zCyS%zgC;B#S|FO6&j{Om#YN8JszH*0sWKuCQ4Rhc+C>Cb(~NnN3NC$hORO>#?URuMDAS*mp?JS0 zetXc!WBh~?u?%tPk*+o=xpR!5c+QSI?Z;Arx4y~3+wFht&%PAD8yKi^Db!RkVz1lt z$xJ@U7U->rI0lvKe(xOu`YsTz?V6lI`*H1SXmf=vH@eE0{}q=|aVOEM0&H^ELfOJp zvCPJ6LYMR1sqqq-h&kOuWx?NC9$8OrsydmDi735&tR@7V&vx$%^WM7Ha$r*pyq!JCX^#$WgUt;$?MUqm?*&7vaLDj$9aG!pK?y zDy+{9SDNBG+7E{V2+(_>9^Y@jKm5iaTzrZ(6*;VNKH=iEtg6S?=>pJF3U6;~EP)>P z;Ns&12;GuGypyo=b@1bot?;_LtIAF(@7`kkOUG za&z1x_PiSrWHPbGktss)Ztu7k&vJ+FDXiB8V1yCXQt3ztg_MU;kr~)Ird+1$)n$m0 ztHH;#*wZ*Kh_&l$QqKn%9lrUGRx1sTU8lHic=0NXy|WqL!9pH=vU@Q+Is`8+Fo;ST zzH=k#1=2?;@|f24g+OxgNrROaAus3Y0E{%+`!`CZq7+?a7HE^lSHXSrL`Rt%^G?_I z;Je4IFU{&?Iwecp8^;2J89y(Y43w0KYq#iifhxEBe|%%QE*_F)axJFf@Q^HhIXOv@ z>Ja)7i0ka4w}p{QebveBO4n*# z`;azQR!VRe<)4HOY9DB$-HYmy(rG&(iMt7>Jx#$k8L@Z5-c6~B^l1RPG-m8 zric~|Y8nKEI$eFSs*z(x%kDBJ|f z6T_HF_=0e8yYM;RD;6bpF4L3mQP|czyge6AG2YWBTxlh*@fA6`Gb^;=_w3%iV2z!e z(~}hHemr(~Zn?+#b8NcaD-U(?7R?UD4-a3c#}+<$+c_U9eR*g6eW%*)nPfu!UU?=& zD&Ya~C&ok+tSw)Q(-YnB%0$5D4s3lALC&owZvd1XI+{=kX||3tChTqf?RSdHiT*mi zy)yBORo3mVsou78r|`N^bAYIiXMA9Hh3li;cbwT+Tu|N{Ue4#tI_+HE zwYJ^&7~dw>$#mx2%uzX~C1k1QUcb9%8`|cP?2`R<`A%-v(d4UwsAi}Ay=JG`nve+& z@7Lo(Bc<*YCXgKU^_<2%@nHY0DC>(#PK$6BCCnE&$;{Zeir}*r?@8&iAVGKX%VrY| zxx3{P*uvvhnrZ%Fw2A-T2%CwN78PAX^jaKcI4IC)m{ujL9mc%|pzeUro3g44!k>BU zS7hV?!lRA=P@7zxsWWA%=zaZ;^AgM6`?1Y=K;TI=Pk=D=)smjavO5Lu$pyDQLij)C z>j=2+1+at?v9cUsm~ws;-L_W`)`3OnM4t#=8H7!u_>W3DzMroNC!FEsPJuD_M(8Gv zU-IUA+g}T5BPQb$&V_70k>ay5Zruzq79>wm$GRdgsHZu)58% zl7tnpc{wz3ez^M5_9I4*`MM`&A)~?s;%4HXLd{R%==)YqF3(7ob@bEp*Vy zpm{337xnCz?-HX|tY_x-z>g@;z(*Sh#!=T+lB@v73b8$7Z z`34`aHdD=9x+$?zo6{4HtRR(r&>Jlh*`kf_i}8``M{fQsUDh$pPBfeKR{!LgY1CQR zvV9rtdjLEqgLO0beM#)xiW+O}wU2X4YP{;(yq-NSBtuEj7?498bX|nd8d(&6mAnx_TDi6AE-r4ARDYk~;+v!*D7<4hxI_yQI z*|wk%?w^#?$Imy!bpKyDUg<$w=N%(}}G#3wGEGI7)&j$b4YX4)bYkx+<^+iq*S4}^Tnh@eR z-%&W4Pi~Ye$nO)^wIw}21d|jUJCb?P@83F8#=B~7n915^TtmwgKI&)D7y&IQ$6)NZ zZSjUI&D%dNL8PBd9H%N#lpaqg-#S_fz|fW1)P8r3)WEv-fL}>jW}oh&u9H&J5S9#xk2bDwgNWo40`Tt09RKS>!)C81rfxW~XL^W27uw~`c zXNFV*Cug?L)PNI~G@JdFM@Y;p2W0(~QCsbm$*oQPYq*60+U8-8mTm@P)eQC*=lm^K275ULIQLl+^!=I zfl|>54g|n209Md+#D)~-RrHj|JPFS+%skOzM~jZUcqHZMs;$iBmA9(BC3n}q2Wg$704j(vm^1J-DtKVt= zI1RNf+8QYKRX)_<6%#@wgsT}XmOmlb@5Aez4=*+jUCR6&Uc;=yVjkw|-98{KegIcI zWT79Aw9bLY87;u+Gt^CUd^_-=b_qqGD@Q53Az_n}gz*@qmquGX#VkD7BQA(dW#T^s zNe_AdSvuCB=8Iun@cuAvX-VG#j%pZ55O->P!q z2u%=3-$px1FH+BB})}oDhoD;VD`Pb*;ZnKx_`HNm}xZb8Xkz7-L zZrQ?~YQ0F8D~G_+H!o(m?LD;Z$$qq$Pyx@&YmeSP47%8|VqvDc;pf*)-J01!E?w3+ zq|I|y(rke>*6!I+>k~0?+ne$q%VNjxcu7l?$3wGCl98StR@~C^eNw-^W7bpRj|5$~ z$Pr#xXViWuiMZr-$A0g+|L#`#!}{=(gZlCwN3~==Lp}*HI`e}`8k}xsotHA00>k*oVYok<1R{=F>2mKh;Ml|N=>s8vkLsl7 zZbBb(VvePz3FrxD*)n9?C2Qc9|XfP{1nu84F@ zq(K;+(j_6IJ48TQVsww(#&+*--{0^2{@U3&JNJ*fdtUF?eZC&g=W7iATuh>AAkeY7 zO^*H&CgNpjpah$p+U~NSVpW+XMJn|bTbY%os1&-sA8y*|$!|iTP1Da`HCc+=^m=KG zf8X>Ka_ zDMH)*$e?eI=WfZ~Hq>m0N5Y`&A#BBkZ~89F=J4~;5zm49{z`sB(xk^84_?2$EM*Wr zd}L+L60Zq(KQWr;`c}FC8QK#sCpll3Lhk_lqTstU{IX8}NV@|Z47pU&m^Y|SfKzsD zzz{;;Fdu({+$@m8Pm^~+}7^U$XO{+bzj|IZUX+|ReRt6 z31uNy>FWPtKH|gSWYv^`l2gxoXBHF>POrZoJa2p6^wMNbDtb`h9Sw^geZSRB=F}?X z`ih~WSn*A$Y=YiPn?p2m3Z{)%*xA^GV~`V+eu@N`d~L^H;aKZ$B-fg>Wi&h{jhKsAo{GJ5S}j63hSP?mzPSLh4emYT*Rp%s0*4T~<;<+Taf<+W$6M@W8Y z(!=F)o>az}wB`nCst=LsPY&K*CN!X{gPrg_<8iq1U#i!qEX{j?Fp=^{=8I`J5?t2o zinl86(FNU?4JvOis%41O<8tPDplL~KB&Kpr>tp*oTzjvuptg6to4s5>2^tfGsj0&X#ZMgM zy^QD!WNOM57l^2|?QM?i;yF@gZRUZQpY2SW)a}o`_QXc>2!3&TRi8&B(lm>0Ffug8 zZd99ZR0xEZJ+7v>%sif7!SAnEV)Vm)D(LY{=9LNE`L~#TNo)bl8*Q#uFVbyXV)vz2 zPa-Azh?j3S9nQY@BiHlM%NUsdP`C5-D=q%l=lgt^>ZC95-vuho{{f%58Fg;H>#5+= zmMkMR9nv~9VxX5N@Ik0mQHR<`VSBj%aSqa zVGtT+!8Diy9hem`rB;3NDPq~ugc zd^?H9AZHEFIigopgw|_uyyOIku_TyvYeBtBX2-@tFX{-Xi`6kmk4m>H218Ha#jj8- z_#y_Ks?>O_|H?M@8KiSg##5r;KBRD=mw)72cE{~0>Q-bc?bF;(%&V9T#mkOZT=n~{(Jh0OD=kS>s81~5^e5}0!8N5K+Yo( zr!`%j^?!DkU+XwLczZQYy(6_yZEH!di#GD=f#oHB@#xK=3-aGvOE#lhkr#MxJgL-J z>+Yg?W|z<=ruHMAsLI}QxqO#j(BQnMe4rhYy*D12xO#w=CibnmrrvhQC2_!s$Pawq zgjwy4I{u3E4muYez_|aZ+c6S;Mnye_?ZD#8;UFu;4HQa19>aeOa+UeU^#o` zBm;|rcL`*adgbhm%B(h#F_Y3cwe!m1gOZ0h;a4zJ za}IA7vz)($K)Tm5-SW=#Ezip<3$>=G_MEC zgV`0L7$5?H8(gA|38()qqUyQ$%9;`Q)v8Gk1|s==KqY#kZ+B6TdzT<7Pz>?Xh+8*E zW7zg+tHEnVAQZ}j&fmRfMI0~msA_!C#4|M%N(O?XwRZZ%72frnxZV*-Tb0laKxz%% zyTEzxp%xFcR0APEiA*58Ybbzd(QRJ_U!JhKUh2TG_4Lq9#CbjQlfF)aPygqSY0@XD z9lpQk$v34CVShy9w54d$hnUW|k^emXT%fuJB_6NEGrR-eejY1Lky9r^(wdhU#rVZ@K^HZ2{dXqj5&WRgrk=_KC92k{ix(Atg5Ki zUict=UZa{63dgyu)?i=;;z?rz-&>TATL5pzX*n;8PT$IQXUEfR4_iOdc$B$c0mbn9 zW9gOx`BSM?lVMy-)!W^~gJ2a%x>P>4ss@YvZvIy8*J+G!l9%ZLpImHSSLKi|yM4zs zQuq5DR{2!y_NK$iOrno`Ig`7dqXV?{V`Y@4E!;79T)VU;_URsH|BFK+|22`+snGUV z$=H^fNbeXHTeft2-R{g8YhsVE*-g@zUyetH`_LD=BI==B#|0wj+9JlLDj44`ap>bNHsR9xAdZ@e`+Of zkWV3?(^!KzfTN8FHOCn@Dw4r`swhD5;D~^l8XL6uig~oPfVhs90n2R8$Jp2d!UmM5 z7A95Q|9d%K8V`cy6g_IX1;H-WdY+grL7G3HZ zwR4x{l3!e;*!*wtdqONwgxj-PM#UeFjV9^^+#J<@Icm;HLqAoth5Q!0gVx8>rup~N z1oZ0&1+CW*;hXtHe^6KERiN%vnf)A|c)s&ZL}J-?6g4 zEMYL=`3JO+dJ^6VOa5A9C66dOPJJ=i(StfjSAqB0UdqyCDe1q^amLz3*J$j36<7#a4`)P1aq#?h1*dBv9>h6iv=aN)wxl+CX${5Z<1o7MlDJ?tl52c^ zWc73b42a0i0UTOk<#qQ%MuwQ2$|TesReR8_`FlL)OpVJDPm0RXZ*l(6dMfuiAn>Io zH?x9>d&()_lXGyJ3$svjzFJ^_8U>Vu-F5NS-`X9@gg^~Q} zYJFmfbHj5=abJ(Qn+x0zsr|w`sXv<|;wxnMedp(X^!+rAe8FIL z#=RQBB>Z=|RsQ_$!s9mK^%_D=lCy#xFcUN^1os68PLu|3w0)++486i4RqAL7K>>2; zy*lBfdW!=MIjTJ8|4DJvDX-=3=5-am_D>5B7X6hdO#ieB**Vv-t0(f6Q<3Qr-z_QW z+%MS5e{?Iaph6YcC@6Y{U7lwya(ArY@2u>?^q-OZ;9YX6>m0{Hd}E9jB6rRitRrm zYDy9sR8A!NR@`K7)cTRPTb&~QS1`&8&gv4A;QK?xQnXhTL=t0RzEXb`%C@M!rL^9* zTQV@)U^YL;jx@80Q|bTv_P8LnsMK+)&3VUcK;cpPc+GumINS_BmPo=$>=8Lm_QBLG z>A}O$kuK&fwF>mUl!jNR8#rALBtNFoK)y-`_wSkbSV9uHRABjenFf42g|Jqi+{Hsc zh9Hf}<0sT0475@3h3 zJrC?mBq$6`R$gQD}-(FqXY<_uCB5PvXwrWaW|dd4Fzf){#6wXI*pg$IR~Oz zE_c6GK|SoW?bYr~J@)%~!yMS{{0@*?&Q?k8pcJ!qp8SdVU1;)WB8N6V~p zgaBOpU>2sZzAoULYX#ORpsxKHAgnvn>M=dItuTI> z-r%<~zi3apwppPs9rdyal+bO@3fzZlT(*OG_JDub@I_F?o*KUCsChRpYL+#9j0sr=Mk_?BI`a;uuNK-gQ#y^Fd{W){fRORDC_Cg9(tOelg-bev6m+(P2OOZcXOJj(OcGvZmQ#25)bQ8b2LJ_El+lI|45%1a!EdYfk>U*{rGNaHeAas00D2b z4dPB^5}Px&@liC9HU+zu&qtqm@8uLkfWr6q7P0@k zmp@_$Myw@`Jd-Yyows4b_jH}*TF^0}wwWzcexunasH}mn<|pU|^9M94(*-$Ja^#so z#mwiURNvaPL{%&e5)|P9-=pHha9&T#?`@`f7=xjd0_28QFFgXYSa7q001*DUE>nag zXH-D-a-6$pNxaeJfG754_>LuOK`a1AzNnJ@f_oaVgcEgILR{IY`9SW@znY?V* zAjKVEe%^wI!JGi}vz*QUNIQ}_>3o6Eyn#;^W`{3KEro!*J?Xj`h&{J~z8?7>%;;6l zU&i~%7fJhbUS17{!;}NuLOv*Zz4yoN^#8?K3}~N|vE8D3{2b^Cga-e+^?EmS|Gh26gFwQ0}?!tlwRzC<=eJlW!kK((!n`@z{(d z4j0{iU--hr~lS*`EMxSoa^sg{|#?_jTXt! z$Ga65aS6)yo06{ni;`R1B3<{~?yOOe4bJ0p-_5BS-djxP7%3e_7Y>Q`BwB!@5+%ET zGw0c_QQ={QZA_mQw?|}bx2-;(!{>1@{dco$v%xR29-5ut=J7_&;!>Ou_^bDSsO&`n zyl{`gbP;q(WWqNX%J@3G9R1lOjTBY^%ramN?CLimyTFU}^6Vt%EW9(v5nsZB$OP8& zH~p6xyB?VPgwFK(y%OTJ2;;VvI2|P;^8e1_ydDlnK~Fzlb7MS#ktEhef{aZWiTCJ3 zFeB?g=!R*dYGPFSSRK%z*>mF$Xyt))ltId?sqXw1x-y~do8ALzDc6@oCys(~8$eZX zVe&;|rCKKZK=~5n0-TS$f;+e6CGfk7m2lhXB znAX<8kE_gAH;<$#4d4feuB-@eo9wm9&qMK8MSHHRzi#~fuMbT}y!q9o?KgR2R*kD} z;2y&ta?^Z>*CC^RLL#4q<>M!70T@8eHtImWv3ORqeGYrphctVck5-dj22P-0qOi9L z^^@G0)bF8XnLL|Y)HD7>0R;+XRr?dT2H48%kbuLXgw5|rK2t&%hNuJI-{(Xb0Wgj`Uc#8-LyaOt}JIlgG&c zCtRPBd-1AX#QkOA3Gnt<3CHV=XJwUew9dYMYU%au zv9%tHA5hkyF3I`f0fm@U3UnJf2;U(;2L>uU0SY8dOum={F(+3m$do%^5~8<+IBqY9 ze|7o;ZSZg7uKR84x8SFT;dx!!uao&aOiqwyW~EJzwXpQ!hwn(`2e=;GEN5l=5aP4x z@kD+n*vCkMJ`MxaTUyLEu`c~>*UiJzKYq76IR}Q};R!iwaKClW_z{bvq}52HfM$mU z50ph;k5~WS4Vo-PSARfN2RS(G@aNK>`b6@XAKD*OCp#tm47S1b>tHWkA|bNO*Q;SU zM3blwJG!IMpkm2pU!D=-yWB7$fRx=WS{;lV-rk7w6}#F-Z{c`E;C80>VsLK4F5d{;9a`r_Uh(;fO+M(=_`S0fpgXC+<>upoGm z4L83Tg1@6z*JV}M)^mk=SB*c>q=&M)5ijUP-%GmMsdgJ+j6FI9w{Hc-z~j; zpG$C;WA9?7)!Ty}jVt&xOfMzA=sL;qzEx4$X@8B* zQL%P83@Fp{(x=4t8RlzO*?#>K8@TVsr1qL>JOREIQA*5;Tsj||2Xc+}$^lEP9 z9HS;JMC!Z6alkJAP)y*ic-PC6cKePM3*Pe_>6gcfFM_rc+Uv7FU)@~qZS_+6K^lp? zw7g*dqkqQ&ch`DfOqi#geZTC8mg49gyWm#!iX17pHW#aS{Sx4J9Y# z8TtUfC|$0aGzRkUyZ>jCpU^?!M;9YNj?jkRf=R;ek4(XE`fP9HlOQDH6AFi9Lmnx$kF0Z;4aOa_ zvS=VL_cY^qVT-!8TwK>ftNRHl%uMA|&z`vp2Jsu3e3oEF(UX)0BNodyb-SEd?=lCD z2q#)THDx7^(^4~`3W{21B+++vk~O#v`z)(R1RR(zs~ z$^&q=D-0GM#HIF>pVf74ir0N}x=~BAUz$6*;kl?0Xp{!(iG`Jg87fLMA%UvtP9U z1Dxc{dpd%n02K)2Az4qGGvHG)6J1?9vw?X}Odo+72{gZGCegxN718{HQ92G;P76>X zJK8^Ix&CFnsu}(q_cKxMCY<>WATW841ov-Lc0@MfN@}6JnX!k<_{@lp8TH(`%jtD02<7^AQJc zPJstaBSRl+5_%F*kv{&VJ!+Mp4zD6l8z9Fa)3oqa0@ro@6h z9?GU(eTrf<%P{JZ6YfK-<+XHbt;qxX7G(2Foz|VvcjMR45zZmbis201ifj7f>DRq) ze<``u7}un5szG=jrp`vBJ_rW80 zz`-RLyY99EGhh6w$dePD<5n7}2Hm?CHfdjo1kggt6O&mpM;3P}Rw*t|kC!Fln=D>r z1#}e%;__iso%0HZCGs^|s>Qbi-Hb+fZ!+=+SOjbtJf}1L@Zn!M?Bf>7!ucW0M*EjD zIwRsw_Ev^m)9!4KqjY8Saxn0Bk?Fd>Aw+8zcG*6fNm(0#-;$S*vH_p!u zs{c$%9xd1nLV7f2cm`3(4PH0)`)W09Srp0NV&LmXHYm5`LkA9~+Nt-r103FQgK}0p%+DLi?3UZOse(T46w4qxLth>7=gd5zvNcTS=IebzBj3`K3smBM zJ28u1aX(x7o%-U_k$}OVGS=$wT=8duQ!~0|%ftuMD|}VpzJ;6m{EI{pg2+fk|A_g~lQXo-$^KP7gzD}bAotWQ+uRfgX6;&XJKBU16aJtr z1I3G=9mWGKBAdX?Bl!QWOAAA@3mOL0kae=LXmrjBx#__eoxbK5L%glTdfg$NtArk> z;>J$VQD($HPRU^Cl4{154590mhA^36ld3$*CGHn@bRg|dF_j}IJDmpWfT zoM~-dsvNyWQP{3dLD>Za^ePdLylLrV%T9OUd|=cV#8KB~{GtmQwDLgzg{Zeow7n7~ z{Bd`!CtJ>&ah=f`^maHcK~vV>*`opTKP^hQ!&$N9crcjvp>VJX`;%keQ?%Rq#A;QV zyqQqrv2#D+#P=@ik-+GR^p{D(?$}vY1}^Mq0Kaf7JkWh&!f(QYuF`&j)FoXu)eO!q z39tm?CM`akq{nAm?9PHf%;?qI zY|9Uh_#X2Kvt#f`1&>?#LX{~}iErnV8wxeEi)NcX*=R)jW>O><;`&~faV(F!lP$Y9 z4+N=C;#HP98ul%e9~#_b#f0d~iObz;OCm>Z5VDB3(Vi{VEB6qN0`M<(QY}O&a6}l` zNDXey>vbNc9!1--2Z2+qH2*qib9xZ6-=-b zriz7~haY6@h@p>a-gc>a5UGA-&L#o8B$%<*CHJdXOh&^K>n=*aD**>#Wks|B$w#pM zL|5p;!%enQPyAmEq zb8b1NzDpx-D@#!Oe9i6-k>WGdRX)$@ofGPLkXjCjsDuz_`p>u~;OTcr1tcQ{$PAKU z#&vS6m=5DGkzViGZqq}5?edqnHSW^2i?WNqve-+S`EokrzYFnQzu+5eM-7AA857%#BrfmkAlc_(tP{VPoI7^X8+XUG_Wq@(OY<&bC;Llf4Spp>** zNwbsrE;cl0;KvPEQoCk*?f8ORY^|h~#GKDpWdD-~4+`g^KjeK45-dvG;932EoMATF zb$IuKGw7Zh9eQH=Q;Y8JT!N8*8CAuAJr=%v)FLF5!b`WxAwR0gUwoYoDbIzQ(9 zjSsgp4;L?RJ|a$uT9~tX67`PL^HZMrm-rubh;Ke|IvrksSde1eN>CrgPUTL8>Oy1V zNeh3!*{t)|=zH&d_|!%-w;md+n~PD?=`NxlhcO1EhTrLL>NMCow4urVb}g~4>_&q* z-PKT5jFkRo4P2UM!rylXwHo&&L4VVdrMm$PRvZb0@8JpXx`k=a7g_`x72B<1*4+Kh}DzKK{sMHQsVWh{>kz%I*J5 zjUFHQYTI3o$9JPVbB*-$Zv2q!sLEC#GVGGwF_C|KcwWnxs(3i?@4gKlOy~}UX;xfE z5OVN|gP49DtqXGEc<;9er~g82thi?~%OB{~`-nGyN#uPFnhkF7A`)_0*Z~p;LrA;j z21i9_bHcfRUj%0L4YVBtm$LcdpB06^iXwq1a9m|0vjHlfAfzDe~5CCTeioefm|sFR>l`tUAM0Z zTj0ens1KhKC#7!+mT{3G#x9ry%C$@-z%u*B&c2HMw#Bu4JMIdAL^b~Q1dYhOk9HRN z%lT^Sy%cFdGtu?yIB@(>_S%PvF)aHzj3~iy5bYA=P;IsZPM*MzD%x?;b3Tu(i3f~b znrB%PlaSty4O$6b4biT|&f5ioI&$bg&lAo@Hs9$F?J&5!@Thl(LX*08(=NMBIVJKy zqu7z|xFO?&IuQr!6BMX=v;3c>#p4gOQ}7uTBI*g48Y-Qb9eb@#YGb4CZay5UYTnY6 z%74xWbe8>Y=R7PRPs7JLM<{g^C^h7yA!7G;V3x)T$e3!q8$vj}gc*5C^PHXJZ|E9O zUXfwrG@$0_PPgE~;21SN`YAx>ZrU|nwml!741RRO#cWK+D3p@n&DI~6K3X;ZanfkO zpgtfAfh|UEspm<_3FbO;6=}^0PwsLL`K-l{yzBO%Io~_{;)XKQmRkGqaV>+G)!Iv( zy9?;bpX&fw+}g*f@L$U#liDw%7$l#pIVMjVn;#BB#&yFPxBlBIyer*YmKg7LAjv2P z-Wu`uZ)c&l(*E#wtRaZN`g>03IyGHSgP)CGGUtUM%hL^IgEW|9!yqFa-=_EYiH>%4 z)A6U>Q+UENblVrJdhil1MuJM7U^%MzBrh(gYT?3eh|}k5{Dx*=)#q+3%xaW!&5-Q( zE{{e37v}A8(LJ6hx-G6Dv3)%L@5jUE>3-Uu{Nr~*`DLN*f}RuT&C659hj8DgjmLmQ z#T&lXGVzm7#Ni#M#Mj{73Dhc=x{?)2Gb!-b;I#HluRq&7cMYA~Iqc%0QH)H8THAID zH!yWa@b|a$804FCm=higr++l3ldbuaoR0B=u=@`%QG=*i?%0>I{z^Xv-6o+X9IkN$ zlX*&JT>!Uex_@FHp#<$o-+zb8!l6Vh2M^hsmgV%&0Jfm`*F4J-2`Ig`{PX>M#Q15J z_SA=)qeVSSkNf`TSupiy=bH-VFSoS0emZ4|DpvRzhx^H4;2~X(8_iOFC=++?kuIQO z?j*)o2sN7R^ML(ZaH_iu-klckv5M?dFV$iOwa@_&XU8e@cqT3RrYX_21I_i4#cw~J z1S3Dw_;k!3Ljuc1p*%>WRWw#f{^*|r@)W%q0XM9RvXN*DP{k~;fuSQ~^}p|+qn<-> zQxe1@|4+ks8cT7m<3=1Qh`pW~S^_QYbQ&*QkbF*BK>w_k%L~051uuf`eR%W67w2=E zvAmkEn6-R9eq@a1>krap%(mJ$gz!+|W;XM4N8$}@Y9 z3-+fE2#@c`jo z@6=Vs=(E0{dO%`?@bX`Z2Ng4mJ>RRlj2gBp-pa;!4%0bDCc+S+x2{N8?Vw&uY;*hC zyq8ECVyfFx-+KMP;5F5otT<-XAsMFQvi9#}s^;dVoiYI~NvvMbSK$xfX^bb|H(rY- ztimsa{cP7GGo!HD6YG#*p2|K60C)E|Q0kY8vy+9?=1l<5$M72^6nE^|SQUo-U=^+(Lx&09pD6=!1mmpH;w$5}S3OPJ&*Mg7EY zqE@rK7E`iE5Bi)#rIfC!RuQ8WkBR66xV@Fjf3TK_#&OywQd#imLwLko%N-9b7`Mg; z$mJaEuRGKRSAtY=#H78rRBXo4jdg(7{tsK@IYUA$)(T~7D?%T`hLBqj(*U%b+R19g zEysL{43r@Xx3I}VxO!7;!8Wv4QK{QA_Tea(eNC2Z7w(3mTF39K!QDR`Bq;_YpCPmc zg~dT7tLxY#MTn*b$Ke)ImUm#+3E6D|*};Y0vW=e4!-HOE^O|L>|7*8D%mc1`YiqPu zDt|j{5IKdx@$^ng?ChG|pIfPMaq*;E2z=IGqB**Coe>r1++ct&)LynLe~g!yZE$-4=+?<3!g%ZfT1*#MQM-%$1g@ z4w`TAFlner@!6ZyPc#$~mfaA}rNN?<`l)$vt_+!rXtadfy+)23U)M4yb*o@)uR$A|g9rEWV zr!sq`f42WH!={-x=Ezv|)aK!<2IaWYp;*nAoSVySW%)# znEs$3J%ZA@VQrUbw3Pm$h=B+OmO(&n@}4UMTq=?84Qr6}XYvBm=W!d$Nq(oO?6 zR_~GIcH&i&s@$%^zPu1%ob44noYZyd0GnLwP5(bOiZJov(1mr-=0w zJH)R%^B-wz>MuYa0t3oPfSQi{P@)GSRK2C!gAy)oQqHZD0Sb-?>Ud8bmS zbxS{176`kYY7Y&J*&wM`p@F-Qx0np?xoppQ?eF>T!lK|(BE)n9AooQ7w%MP?+y_GD zfldlh5wHM~8TMt?<#pkDyp|4mmP1?#3;vlHNF?#v&QDy$2JD61AS(s1I72Iv^1UdM zT(j3nNiGMYTTi!oVU?zNT0j0=JoUa{0lZm1M&}%AGUnbsMcJ}NOtSmDf)pcB?t9$Lzr`6Kyc&6BB1=mBd6?lzZ@)ABOYRNV3;7ku7l;*=fIG$5 zVz>`M=FaN+a%Z~MMd4i}ar64IdLVN@9W3XD{*wcDink=Qn$v;~Yspj#?0Dr$5r zTTsv4<|xX2k(2xl*IbO0|4tId=$yhKZ{(V#I-eGvF1` zLJ%Y?;uuBNkz22NM9c?;0fI$0q`pcK)b{QhmW&)e%En&K%EJNOaQG&()3S){E^Pn3 zs)Xt(k$=T!aRiqWoyy_gS;2P9rxe z9@=V>FHruZNq*|U(u_|t>&hh_+n5`s1e-YrJ>er$2@*{D_ouJaKNpSW<5BYJ;(jmR zh>Xxk_X<;b7iLHF75=ge?B5vpx6$e^8kX`EquH8r?P=$O8LpNS${U{&?js~!<;o;3 z)kne-E;m-0d)4H`i%8&ARIXVa*yS80AAhqpALmp1yc$uPac>tBsWk3^xu1O{Q2C`1sKYP2(-O>N{Oj^2{$_c;N18-W%~vVa~6 zt__8Wztqrg?kR|KAZK*U)~^xRMpdVx2ySiOAcRR+nH z8nWFFAMd9b&^Ggto~V*s`IFM$?#%bbFjGqhbU8+U!!@lr2}>-vS>xx7;HKt8Gc=>C zKIq(ZwsnXVhIH}y)u@-Oelus?3i=(Uz3GQ6MTa`}fX%K8`pUym>8OQ$V0dp1_*f9P zXV`&r%N+u8f`awBwQw_~_K@q2JCU1%z#cg?bpbjyP0oD3FmbO~ady`hs;4lqGt}QG z+gu*F2N8qrny1@xv|S8Ig`omeYmNOLfTGl*;3H5ZROEHBqT%`K7I|*CwY*O1Nq&Dz zI0PdK`Vp=z48E=LVy^vCF(`$xObA8v1w|D;>*9OMA!rDVV1Z$@I^?XKoqKZ~hbqVFQDi$cd+0b<@HZFFRpld|4acGdwybJ#?wF~v z00f0w5zI-w#2^6o1eh>T==tM2gi?YiL>$EaAr8xTW9U?nRC}p7N6$1`RR@Y))MZ9+ z{f3^StQJ%)-)Zr2YS{#Cb92FIH8j|6Snzq!Q;yRn&wGg}?qDDyIx=-F>vW&|nhGw-;q5QQaE}6%g`U@S!)Jze zev+fHLYWrWIqLM(hL$w?(6_+*d+lLNexDim+#@XIKAl7MqiCbcbinK+RxIW=b#_bD z+2XHNMF@B5+L3NCHg;X+S8HW}O?pPn=!a2vj15b9`rr9TV#h*5vb)73Yg~6o26t2A z!ay_6MVWF+nj17>0x--ieciK8Rnvj8?3Yfi8zI+$IcatkMihZ?8FiIb`)AvV^Q>JZ zm#^=@>@zv73G)l8mOW2qW`sFtW&~Rf5!V6|-F|4k$9)n`km=U@5rSRMV@(f3rS@rE zcU9-QJ6J-EODR%hVOr>4xtE>5y^2NRycZwnly;TxuH(9X_2Uu;?YO_2vHGu#^iU#rCn#F4%H}kUZr7zrBt>)zgDH$McJ?TgrNHou?f1T&T!SP7N8Sa5c zB@Q^_OdHNy(pJYrvC&W53xj3NQMEp#%2jJPPUY>$6z2&d`=zf^w)KHp**UOh|`5`di(QAzvIDT-%39qaH*#YNA3ETc@?0qHUoD?sD6 zU^hQxtc`a(6MD6pm3CDg8iNr3mc(duDR*ba*E(;{etd)CzK&hrz{zAb>r*xE^q>RC zX&)ilEH%wXj8ebGv%ZHm?2qr*lwN~4z?1?ZOO^n#+w4|v$DCJ~dvy#a-hVgu6--^) z@{^$}aO8<4jg+VmM%5>wKWD}_J0`R;>#V=m<3Q68qwLQ0uyg0%`{&ThWgRaNnfm<0 zRgBKEsCsqE4|d0xZg>y+xS-1%C|D1@JiHI6o(KyHE&{ZIN-V!6vfq8ZMW`LOqNJM?28wtQ5Ak+BOcVEg%5ml6(3JZ* zphuzY3!-pw{lF9OON(gTFawa34Q#|6=w8K2{`I^=621!meR)BiN;s4e74SD566_%^ z=y0)fzal8EsW3Ck4r}D9zo5T9OUrDX(?1JGV`yz&w}404`;JhF0ChEuMF#xco>Tv%+t{ z?r`9JJs{fY-6v;b1Nj}P_YnQvrIISE&rdu|$Qdfq#R?7hK()mq%p)*M0w=NGk7?=* zc-Xu;G4|{nmo|pVFdwVWiJA3A_-qs*`9}zesGFu^!I5hDRxQPROX|w;Of&%>%x2SQ zg|8RQ5u#@PK3yk_rP9UPve+h?gsQ`;NEnu;eSsuXDAsk;1F+beb!noPn+%-~w#(q; zUf`N7DM*Z&MIe0saG-RD{Whv=Ke{)!N{_qS8f`pq$1Zp+IVXH@hKidlQS{=kOcM&! zP!z|dMIImC_iu8`W;bs@KGBjl|1C|ZyYK4Qa5-EuYds{$knRvcTu>*AP>`y%l?5mG z77=HpwLRKe`AiAj{>OU!p#>A|?h8-3gmG+=u^E0oN|xo7qy7b>gl`%%C?c2jTX+XP zU4dn|0Lo1k+*@$dY}oo6Ip7EFo%N>_eAfd{ssow^$>EAE-V>n%!AT^PYtOIx`1N#1 zj|}44w&~&>i|Lv*?fE9&_R{;ak_aIspJZyUt#AXC7^EPV@(jb9vSmv^>XB5(NjbuO z37>V^ae%FVKDDLx6Rcj)s8A=;@P_s+Xwb-Q_Je8*Plw{)>9ct*>li`0v@9iD206iX zPJeN5d}Q0mIsC(2Xx@^)mlJe0uX&a)?jcp$5Nb7Xb6+}GS~dbHZ<2nq7CoLS?ffDC zD)rFjSEeUnC7xT`6->Y!nwLIMyVRIlEfyXF*;RZKKIfJYtj&PlL)%Dr2hrkkDnWT7 zK0cmk;2h(2pU>kQ#!_4~-%)V;5E(?H_2=gyatvxZ)NIZyCq2R^T?V99d%(YcA8(+o7xq)z>5c)ae* zk7Y2=BTTAv=*?5FpRv>-)3E1!Tq!jGcz8)$Ep7_6t!rT!aq5bL(bjEfvvm6%3Wq|W zo?;&-DL-HA(z=0WTzW3-4le>3wxEm^*Xp3~pm3NyFz~ls#|jEQFft*s{p+%}QS;~Q zfpaG3gZ`pQ0iVj5S%75yXa=C*|J5D*1VIuD7~>c(-2qJT_z9mFxGQU1CBzfQTx>heb8QhOdw}-m6VDu_Wex7>KYAl@hYygeK%V?Lm;)aP&!kX%a zn-?7m6$N^T@Z~%H8m}b%R0H0P|0B%~Je>6ZVfwMpk9ej3W~9#6v1oO*FTpCGOoD5j zd-RWuJ<88gW^`kr=3(kSr12l26r5>t#%K=mp9t?187AJotZBGF^~S>TN`T{i+h8RV zM}PL`M|%!q9bV)5yu>iMN^VRjgO+|<>i=#1-G8-3I~S`;wcu+(ea(dx(ybwAs0uAg%qnIzA4&ea;${tnbW ztr@ONgQ-6K(!i>th?Q;`Vu}&uhHpe2vMdmZu4^vqDeJk^#`(H9z_qQUKiUh7L%g1R zfB4>^2Nwd0Z`C4@0aNt}>xcmzZpQsMdY$J|`O6lciZdtv1OK@yq&X40V4;0FaZy0; z%p`p1k)IKCtxM-~_L)shbsyF!RnO`0p+e{etYt1v%ku)d|1!;*D6dEFZ|S1#3iavk z#}Z=FR3&SB|9t!#wh|);Akz5uKt5I40Mh@Azh6ZT@7^cI5U*KAkP-eNzddVin&CQ3 zW6x&);lc!7Es z8ueFDBx6sWwcUJXmc~vu{=N9~tWh^^((!@>pJW8`W#j!Vp0Yk92zMkEKv>$qe8ygmJQ$5vs-UdEO5map#e7 znM+Eu2;e)zzICS~8`>6&FVcN1$jXbpf3ykQAy&Bb>NJt#)gtbZ!Iw15!wt0V+;x1) ztySVki+C2ON68j$Q_};z>f`GJy)B;k9fQWRgAkrZqrNHtdq`PxT3F($vDQOm@bLp1uS{mtwg{^o0 z7w_HN%*m)pR299KHnUFhlUFd%Z6Liq9h#; zcNz0y^}Bty_hW!8ZlC`Z^Obzw8t*dlpZ1|HZ)5SYMjggu30`P$Ns~!z!NqPgaTOMa z+{fOKYzg29vBQvac!R8Bmr1z*W8O7vV$U061*d7RgDLaLVbSM6gYM@cizkQ({XXz< z=|5xXe#q|_@*RH6MmAXJP8D@S1e$phaCf&xIxUGz@|ESJSw$k@+LlqrR=8ThLZ{nQGtn}~K+WurvY9jfU4wp)4tT%(oWnh3{>CtLA zOd98;Fd@TNc63RK5|`%m2%#;=#U%;}3^<8@aLEk68}`~EaoE9$4F87Ae%bvBlw0Sg zH!QsREB3>GzMul~b8ksM$z$)bIn-}>Ou8{u6(`fp0vjy3f8ryS2mF1ZmUD@C-s){Muk-j3%>e83FA#=2gv>fb8^JA4{6azYMo zSEm-E26FXs?|Q*nW8(YEGhCCre8&^@bYZr7abQHg$KIG)>xV6;+k2}##8#lKWF!?7 zP4~VnDJQV8=@5%p(?#HHp+;QLfAIr;!vEh3z<>rGZoSe;=pH4B0pE1sO~mEfBh?*Y zrD5(Wtj|7By{9N7d6FL)6dnCUMeAA3ud@Pn<7a0&TGi|&XQjWc_=%qcKgc7>E2LoK zpip8Bu3J9+i-zp^Slt{gX1kp<^F0KLHd}dFS*`6kT#g-$j`8dLH#QJmlEs3kbh&7K z)bV@y)Be}grG{l!a!Kb1>dFpZ`fc)IuW||5`!`9(67#U7w=Dfvfd}A8)dIB5+Y7Bh z%<3^VDh@#?`=A#I%Uy!CA|A|wy^e5%J}l1XV@6i|UKv~G^acBHRJI6)>C%TMG-zHu zbFOwP=J2*H0I|M2S`l!`9Z4Na*p|!tEHOlL0j5%>8v_1Uy6u}pN?0@WMe;)uFN{?P zLkCg$#pVB_EZVPVH>Z;U5%Gov$yu}s&EiiXjM3BS>1y`P#u3l4=>md`7@X*~0#mdF zW2uuBUjnXyX%4|EQ)(y|7Ojp49f#kJZv^JRG8E5tG;hJl3+kDZ15Y#(o_5$WFQsTB zWvWaP#G_W(8&mDsG#mm{%1&*Z3f*mU`Lo{VG)yQ$9ee$_&x=Sbb!i zaeQs?6fjD{WtOTsG>(hkh6}4!1%*$)3k3ZG@_~DA8K=8%PJ>*pQdkknTf9x7vcGNc z{?jmF4HozKx;+s1lNs%C4CdFjAP;6}`@M6^yRJ$YzJntYkSQdPsca9y_zwX!Q`hmL zZiZ;Wk*18&`%`AZd3*udWSns1Q=n7t>RkIdwgfD^;H%bW=mvB_b87;U1*#2{u&+O! zOkcFhvMQg!aG(;c>Hu&_EOz{IZ4S!=vum?M7oT&w0eV6CDj)N>5*$%a{GGNmmvEPQ z)JOjTmr~c*v2&{G4>0?Uv)165-vS(_67ZK=48l5&A#-3~VY`}p&@guDTv0@0NML#^ z;#|}Li%A0sznTF{TYhXG;48w)oeO-$8opk|=#V)bdiR8?U-Z4prZx(>e6TO(*}j?b zl^DRSM9~=d67_qFJo(Q(ouXPVSCfn_ctzvxJf7YV<&M-ub;Q7CqAZA23Ob_TQBhAG zn+zLqU`pfqy1Ouj=voB@>_`Jp`W(vxuE5G<5I@DBU6ejA6Dn7_$Xp4)d*2+le=Djn(dcROx z6a4&CcT2xNL^!xuf5WEw@wGY;i_<@4L*z8q7zt4Vv@;6v+v%L#Ct;MMOAvs9J}S55 z8R^{qsyo<|WiR!sr;DY6rd$3gXm-GfD36C~{*&hvl_2IUKF5@W3PdOM+~y=X4j@lt z$Od$jzr#m8Sg-w2IX}0NJy6&;Ppr-6yUM6{{*UdW5&Joh{-fT{DO!f(n^F(?hM|EE zd>*N%<6T_?qBx!eE(x;DMn%BIp3hFLgemj1dB^bTE{z?Ai?CrW2zQf*KusxB1cv&(osx1c%#sLd+I_GfyKyo`MWuTz0es4`Bwv7^}BVUMjv zRDlNsO2F#_h(p?<%Kgrbr}*M`ij+-5bcy{4z>a_@W-vmDv4w{ToO%3FO&*N_?AfxH zQQrop_ha+d(B1tdYsL}&0)VZSN znzo;BW3>V=)OF}uv0BD#>a&&__O{M)Z?~)*umZopie6|{hQW`koYzSr!AdshfhO6z zY0Nw|lCC@c;_{1LV4vP_u$qnkB0Z5>!C$`@;Fl;@G*lEJORU0vw~u84Cyr9^T`0aZ zCaLM>VS6TE3KpdpqFpU%Q3CyRCcFJIg7rCuAx@v7ky%OB0=bF6{9#`C^)dz#{tqsW z;$XIj?gJgvd_s||e46z^%z#_av6-xTdV#-Peq8wR5}7>Pj5;bJ*|@brh4xlwZ4KN+ z*w_kWs1?vg!v0v%-CGGx#RTTPJp$jjV%YArm$1fLYjK~_jrW18n2&ca9i6Trb+y_# zw>YJkk6wErPHhX^nVt*Bl!ljp2YGq>^Eq#s{cT@5g_`X@D}BZK_yc`MmQ=bL&D4Kq zkkRuDMz1$*DV^ruM(nNEe)+$8=_Xsev(Z|xv!#0E5q27~v-Jbbj+jjR86le4o(P9n zzpMZsG^AiG)A_H)e4_jir z6vnTPw%XZKPoGkq0k1CLuSe3L;h`U!GLDE3VH6$1$neF~RxJT~k4 z_h?=Va9_X21m>z9W4`L#!U8S;e=6F!hkR~`+qOcd8^664xCe{hj1Q@^HBWlE9&45& zwzTNbku00Y_i^uafOZ3bhFL>2-36GE2&36dJf!J^(1fn>Qe-`u$wEvsBdvDgj|Hwz znJs;C=jF~Aw!ozrMX$30aB)g}&)Ud10&opwRK@)r4+=3P*RU13OLTl&-#r}?_*y^) z=P{g;DzE)j(0_c&@2*t`t8E|NbFxtj5B={mss(C2AAzHZPQDk?)rf2w=&FUT*o~Wh z91fY^v%V;;s`|qFOYC`HR7tQdLXUh{-|S5=-fi}iDG=vPjPb9&Q<}+BNwNQeh!W#O zJl{O*`N=ltXTJtHyB~cvxB4)3o40+b|L0Z^DL17D?Qk+yWxEm|NV83XepH$JfV?8~ zejp0Kbg8@VpUQampV72M5SQJ=3j(dZzMq?>bys8Vrj*HyJFfn~co?2mFmIVSQMfc> z@_>29gS4rDVk^~5Zh{bICvP&r*$d$AQ(7r~DH8-f?{VMoBj~fIFb_!dpCCj^U8!Cu zfTP^KHSQ$8ELRk@&n`8+jZW6C{5uyi#FM!Zlp_<7Dz9TNkH!~Jq^InBID*H`EiJ$% z_%Bzymht@JV$bru;k?O0#1Eywa!bk%*_(VcGIij*^0(pKOqPqxCEwu{GW@|| zeMT2;hZTaX#V$!m7>x;IxL?-E*0}F6K;(Eo%i(T#{<>Xg>CL?Z30I5A+L^KE6$Tz5 ze9q7lgBqnHq}u0B0WxE~r5kCW*g9^)4Gtcf_)uJtTxua$41W>6%`;H&I#BI4zy-B{ zDLfw{I2Q0!3d(p05&rq76unztU3A{(*7hqvMh5D4$C~vcHe1TT{4!n264rY7w7j%` zSXEtKmb(IacB}EG?Y5P?K8Ks-n{a9<)w9iM>@(gA_wm)SK{-0m;M$w-*uC5M@lf?WU7n99p^)r`zN^7 z-{T>wn-x0Oi-E&{SUBk72l#Ck0%+-S?#+k!h*iZOmoyE2I5*KSs#nk7psTK0S!zQw z$Vzb-nC71HvFP*lSx+#E-aN7t5$!K-s6|d$YhYkw!myL^^SQ1PDrua9xj8ED-44kj zQAq6kOzywju4(U=vE$}uWlH4dQGLpklVq+R{rez|Br<&|sLy1Jq&458Wanob0{&7k z8VPlOpNnf`6E1kEvXBt}*w|1|&`afQ%Xbh<&%7@K*dXvYHmW&V!(@n*jbs+QNUOo> zCj_um01Tu1Mg+y%6T$tT`+>V7@F!vKB+_1__tJr$qYSW03T4BD@3jMwS>T_45D34S zc(JEAdBl^%H#cUYpuj&Saj3*VK@=tlLL7S^zp$zQbZ2{fvv>evRC9OXH`AkrNCPtbWyx! z9fOz9pS)D7C|CYv^~x4vuK|$#xK~NVYmpuP?fI;mu~(9GSFup>xko`Q+4+1U%FzD+ zFY}{wxQX{`^bG`eHz{rz=~9Z0%N-e=QOp5-&#BlJ0F6`ZE>CTl4R{+PA^xO@?T=j= zD=DW~;wNQvMLQtCb$swhrNSakYWNti>G#jry+L9!y}l zl(l~l5iR8~bYzmtiF}2T$G!lfpM#Zv%wXJjoW71%M$=%UH>|E<{O2~)b*O++Fg^8s z(X_K0n70sXjf19DQF0hu)1&x49xA2#(e$Ze_*rlWYdNai?#?e7u73>`I1^t;jl*7C zU-Q5Q#O6**zzxdbhhVn5>2pYq#dm3GK_;UXfh`c5|E7=c`cFLK7+v}|I?`Q+UPn+O zrIb@u>?v7b>Aj}7aJ9xyp8_JvmoU}HKzT8%ifA^@1JE$*i#$xJ^!Jb{%)kxkm|c6s z27Awr89rvOea3kq-_JI1{|^i;zfnw4^>nHiWBMbr~TPG#r=-Ldz=y z&sfV#OXq&knJaO!l$Catl?)Fv*g1W%ae8fJ50v)%LIvt@A5*m7OgYyhZSj{j`l`st z0#{rOO1$HKY!2-p(bo;4li|?~RxVQUZ?zs;5f?cg+jAJ2(vUovQD^ zbp_vT)ZZMr@z!ica4ah3R|)2RVFlw$NxoiAKo}e!D;H_G1VbW1LeU# zODXSneiYTA4AFMo%!@zvA-*pb-*u3CQbj%`G%kJ~ZzG$gjhKY9%ZyVJ75=Eh7M-is z!?s^-loBE?7J~qfw!U24iUxx3!E+cbY$i{!c<5MRzw=S6aHch+b^SlT|0busc?yVX z$Yf&vje15N)96o^tqlo$dX?gZynL2MdJU=helsh)@u$r%WrQ3Sg8id0h^HJ!hq$-z z=d}2So_-*#xz9>ThjU#yvk{n`4H~lVwPIx0DXtX$Pmal0bBl1;2NC?OQ=W1oJqf^> zz!(!PlT}yk8y?=rTUC6vh*8$eSCg_(+xGI;c5hkO5ZhGDdHI`%+)do2NSW@ndh-y; zk1YxJZtzt^utANXU=aD~(;7iWwd&HW)9}=REW?l762xJoSq9w4pUv8^$^&4R2X6)j z3{|ivbT)TBtIA2PnuoA^V2T!MLv&qrnE$K@EM8QxD}%2vXR7PVgdN_O;saNIP;$lY zDU(6U4q{QgR*+I|#6A-84~s4W4=)1;>K?J<$AVVSm&z%JpqL{_oxt$oIRACh?Ccb1dk23#$&8^%Zqhd_USmdGJ>|ARl&eMN zlBj4%h1}J5bZgeISPTwjxJ7rQ!$Fb{3{69SNo+_`(NJ=_2M!if6+IW|;&l`|!lTqa zjKe6iKl_^u^weYLx{P`eq!8EIT|8a7DQFg?wWDvdww?E=${ef1`2?YbO({!2jfsoz z0^FQ0w_JB_R}jX8*YTv{i!Yq&fblpRgOB#v=PPa&SAe7SXj6XeAt+eJCB0SQAb(HZ z_@h`H!X$T3=_nXAiS<9*K8Avyyb8Zf#r?L^u8$JFGgrW_pmC4>a*IB|y`eW1Yi^yH|jIdYB_9#pEcU`p`?R_;gNt(x>Q~SHpEFSE#IBp7# zaH%xHUcTACnNOZ_Cl<9mGrrB{fqkWdNk@X^_scLv*~6EQUR7c-{oH6w3g|oK1NXeZ zm&m70Jx@FP&LqX3;5tfxLEZP*!vb`1I}d?RG)9po?GVi0gapL@7=l%yppu9$_0-7c z?u>Ji*-+cS*{UoI_188tHm+Y~6;&OyND0Qzpm>@W^cEXPJ!c)g;8{)oR6`H-qV{{# zh{)xJ_)Qi_%JHi@lY<-fIw=6t9lw0js$Rz@%1}BK@2Mtl;|vfpzz+*dIQ)SrAR;u? zceA9%Ea_F&DW3SRU_5)=8d@rc$6)s)B29l7LS+mL!(}NPw^QM75r^?rHCDL}on8qN zmCbpJv@k>&pVM*O%Vj4rUqpvm>|#k}#Ihj}kv&YUOD(+qBIu z?w+~`_xs$;^ZeKq|FBpFLHV{RpM~*h75-S|o-v6*Xk1f1&OEX(={pC=%W6k)s z9Slnn8joC^JD&6AeGwxH2WlwI>XO#S3QoHI z^Mer+mLzFB{JGd`_=+zeSBA_mqnGb$gMj;2axk$mQrRzXr^y4HISASTYkj@>W!Rt9Fpw2=L~FZ)DVMf3~t6S=Xrv z-;76mr~$&k4ebp_kDpRB+FIt^H&1{V&&poe)|lBR1-QmfzkTqG>}IP>WI`YRebO(I z^>iIvlWPr}*sxjdUc%e`i=V0Qd`s}$=e0F@eJ1&H6%)$rT;R|8d8^ZT{l!F%$;Iy- z2=;#3b7!^qE6t{=`eXYeQH^Led!XlnEod2Othj;n_`qgwi}<y9?pdbUlD zsf~L>2XHX`BGcimV?s-ubwCFFh1mdwjE}I&f;lM3NVH)&O)Rd4i_Macn~57=A_?5rcit*aVT26FVm8*Hv3)$K3B zR_#$|r6RWfxU6+1*fyvVp3w>_|G4)Om-_xP{)*u&d^d8;N}gMAkCSJ1Uq=JQON%v- zaE9~(HUE2i9UDLZliUK1d60nw)1GQWei;*k=84z+UYe};8^v{-r@G_^d%-f(ARe!q z{`z)Bgm=Bi4gyjc(2!3v8ecGSh#6&jY~dUtc?!0W)?c!oi)#|dOiv;5Sx~3gVblk` zz-AW}Y+Zq$*e3qdio;2bqMP$se-kMN{yFmOAJ3%wphU?8-&#EXMQ<_Sv9E9}gq>7NuuLBebK-k|fF;`LJ$G)>O{=@np#O=fC(hMnz$V;6G?#>1{1%-}`$ipuy6u41;31*P zYFdz5gxYF7Fe=gHC6fE?^?R%#cKjaHjF3S*GXf%Dc3nq_bX7Inn1FcUchCvqk|hQ; zInoV_&y`$|cP?SU&&Vh)mpX$TJg@t17p}qH6KerSj-DHa5sRYaO%rLR-4=(pYIRN! zR|>sacT>4=Y6|+nZdP?d%k<3+(GslxbsCq$o4cvH{Go5aH$D8w9di-z8gbU2OL^o* zJ*ciL!A7bckPtf@LwkfBLiu9w4TCf#4Y|46m4I|Ac8pzQb z0%4bQy1J6s@*bUhQaCx5ryayau+uHB-A66p>DjO}+?ckAp@vySpmFnRZ{BH5>;TzE z3C9acLc+~eU;io3xvPOA0NAJVB)~M>7?)`!2@5Yak%~5Ip14JmR?!Ot zTBNUI*Ps?}>%0CID8Det(I*NZ0k{N-O@z6ZayPql!Rsd+W9`xw4xRX_`w)I^J5(sX z1{%^4VV?oEiH8%6phKS5gMZ&)=2_WqvOjIzW-hS-UgOBRPT#U(b8Y=J#i?*y)(bJK z4({U3x79~XIuN!3D-w2(B~3@Er7x116-iR2&KZ@ImcOb*7{n=g^M5aN=l~g29y2`3 z)7UqrV96Tf&3Wr=+V?}=ADC?2L@aS7bRc||+MBr!_B{a1r=-(|d=noGkqVf_DEKF7 zBB=aWuu`6M{qeVe6ux22(&1R}>*U-RcIL9MKVu-NY0RxjTPC@OQiB#SxZ}a%#wo7* z{p}Qj3b$a7M!A{0F#Kjh|FAm9@X)X{+*0b5#Hb zk=9@vfuLt<5x=fvgT;v14ueHS&|KN`H%7q=#izvgqkeB5q5F;jL<)c{ z@q!=7CzUk!uoxnD!N(tdPm^fZ;0=uZOrO`i&tH0OG!4eAlkZF2HY$Xfow@XHD5Y;x zZpdr5QPTMs__4oL*%V9fc5@tj`6P!&lsYP_g~wc5bTo$cp~Gu|TA74LSjzZ|B=SE; zVam&Qqb`SZKQ$;4xAPjDt7&ES6Zp2j(VE&6zZFN9qtjV3;{7`>vcrhUN6&)Og}t8? z(x4&g3QjhD8uwwb%pKzQx-VwZqM9sR9T8a-yZCskrC4@6t|6=DbJ19V_D_;j*{w_+ zP<|4IpqQNo;0%Co`-@kmkJz@z;JCZEp!2mrICzlWTgt&h z@6}T#z(<8eJLGbzgobyVVv>?&=F;hK2fTJdq#vQk%vVBVoPKBU=s{{XH#R}SJ;U@k zFb$687;p#oL9iUi>83JO&P{OMefkYhPlq&tv)B85%jys8;ys)hN0Ar^-+$iGCQJiv z359>XGe?`#5Y0v(d9MbGoy;~P(&vEannuJSFQy6d>AmlNcgLDB*sDKs7f4djI4b^@ z=As}4BmPMZaao@ z%1)z10jeWP7h9XhI4HVr2`+atZ%X)y_zuu~?1(DxxA9L+ho2KSPF?Vlpt#EfyWOektvcDuKzx@{`(F6!iVo*Yuk7G^GjWRFg2al z7E|P|S8CH#*?A>F>vlP;dOyCRfs{+{%jE&tvVZO0V@1(y>(HQ);G8&(j?59&WO5n9 zG5tH2x8@rw=|_Kr1ZpEp9O@ZQ#K!v_>+*Wdk8YHoE8qu3AYMRvgqt52GrG5fkG=j= zGga$ykF4~*B=v(USS?TjWkzK@1~nSa>DA;X@g}RC$0HiPse@;5N#XBWy_Seu|C@V^ z(8KR2Dgu8iPlx_t1YbxZ_xr{dbmJjb)HSX#*C8`eP+8d{^tC{Ah?0=sR*}z5{R<2o zoJLUc?vME~T2f6u@Zh1GGdsSY%+*4$6PHUqlvLuRlh^qR4nd4|Vsc4}7LLS2WKV3A z6@J%^H3$z&Rmq59knt`&ZeAU5xL812Qtv56R8b5ET?Cys> zHTu{;e^=*{M0#Nln>}eje*;wiRXqN8cNwT9*6Tr*pJXP1QEV1-W{5XLh1ki&njL3a zRQ4VaTy%HI2kO{GD4+I3mz3gir~-BvLr5wP=z(>QFUvXQ_a2cnWRw4%77B^&V;p-9 z&c|+iX0%~_LBe&5_5Bn}rmSpmni0XMnVKHKRFc==tp+;ILV|5HrNlelrFGN&dJ|qY zox7e4-Y2|hau;82tHbBb$J`k|UD{;S(#^2;yteL6yoeMR%6I9vcK_aG2)MsOHE@bJV(>-=wy;m!DA7TZUc zba{HPZtmlc_<>spsarxz@zM~B?RA4hD68k@eJn7SLn7|fzX(0PtYyKG?Py&?{`K{k zbMcL6ujElej>F@2ssUM(0G;SPgpT2xQu^p;0jF9t^ncAGV^dTSV)~J$Y_w!wd#z*^ zGw5va-^!z@)Av@~hqfMTm(oXu+I7x+pti2P%5*NQuQBciNv<)jd_NWX!^a}&DkSON z2wnK@@l~w->~JRdw9p94hIt`O4zf?+M*T=sRb<2H*hi<&!SJn4*v}Q?!VYKZW(YB* zU~TperY_CUIPbpmOaG@=QK!dEsvk`X6-|Q52M{FPOWT(c!vpDW9|eBFn!Li5i8@s8 zK^001dwPW!z@cNukXhJ~Iz;0Rw1k-wMaAFnZi55zz)P9|*VrY1ZxC>rMO*6c=HwW4 z3&OG(G8@{jUHL@v^G9G2<$u;*{v2=3pLp9DBw7oxf$@^wPq5WbN~3F&JBbz1ihhv>`Mo9onRudWH$H#p>!%o6A>Q!A z<1VvX1d??Z9-oR9ZbLqYzFy$9e#2)8zWPRmoc=hC$h3FWYkys$EKw)Yhtf0|QadZR z*ojM*Gh5KcjR5e0bI{#CY*My#UJ8mb_u^6^%>=HGutDGIqJP8+-=(d|Hc8%(F9C<4 zx19?4I2#$o+`(c4T)?Fk#u}{6^Br;n^C-m@vP|+d$^JZ~g3F#SlVbol3s1;i(G_%; zXE1)S=!+a?>Ka%op;Qc~iN*?IEDk~Xh~9fx1s0P6nJbi5S%f{4fix7ln4yZH&uU=@ z;>?dR{eJPTOTh7$k@W`LhYvV%KXwqm)}rOThWhQQ-H9 zH~N!lArY}1RXS#mU_d0OBjicvc4DgbpT`Qs>%~Yw#l2JG{oclt7&nshcr;`IORPT^ z4P-Dn)4uvse+AfzuPQo%(_QQ>0_sTmfP0LvF6?kDj4G<(V{`5m%y2OuyPwK^_yiJ) z@B8>U3Uu$%H}V$Pv7z*Ix9-0OO$5-@@|yd5iE?NUD+58OA>1G>)VjXDUN0i5L?6=E zJM3h&@L?KMKf(fB=5l;9y1U{9$?>>27BM~hgzWO*Uii0UYq#N*|K+Qo*mTv|uFqO0f9jN>#~2@ZcVMf@yJj3m#e!FAtf`BawOhZQ`p z?f~@x4a;&Kmqpx=x?@3w)_5XZzkMuM6~G1phxr z*66^WOwjaRZ(v%f#Lc#(FJ?YBcrm z`)%82-B-n)XR_2o#kF?Am6cGZBeJ)}*Ax8r}@3P%(3xc}@PPD`(-}+DR z_~ByP7ZrMbFR)6foAl||3kr#*o#$wXD?ii5eJ_Rio!qtp$ehmPkw> zHu`IRTzbZO<_{nZ!4X3d&1HY4xnh3W5*~X~q5d<-XEt-*3UUg0b~Sz_hY0gHIU{*E zMEXNj4`XqqDX}6|Og1+K&cnnL2d6Di8Yd8V$6z-f?N?xnmLPTL0&FEOQc=D6br*Rl z`&kY%7#Ex*od{Y$5n-VBfV0)OCJr5y=`q(hU1+)SKUfCZ@Us9hWf?UJ5cnU?X?pD@G;I_amO&j1jXC7e&h>AJ zNudDqh-0)mqlx50S2;1Nqz5UZ00u3y3Gm=AyBf?ipiV1b5cegM8r_i*(-zdv#@^LD zQCozFS%kO-b-AO?^Q%co2%`Evlz=ayo(9H%1u@i+7B;>=e3`%K4uLMyh`s|*ui`h_ zIgL6Y#CClG%En(Qb6xe_;O_?U7cdgCHQjk8ZI{M$#AnMC;3nM^xYw)FN5e%6AJPzY zum7BOsI=@gy7*WVg^*By>ol@H@n3uw11?5Gnb3-N9$0eP`5kopjMjI|7D6=zVAO(l z))fbjqiAv(Hw^#_3K)28huxBR$QsRqW5*+lwUX|eAL9|F~1aR|JKFSC)z zBp~?7(MqBG>U>DwYbV}y%HEc>Nc2-Ms=|B4EMbml z{2a&OprGoGL(Jecx^CYpl=$6qqay)?_~8+dlVJcyioQF}onB5M@NIq7Spll-LzUxV zk&%BL*}Ix(oiuB(-p9E5w+0k1jD@Lzo#C$M*9gTjOw_ltSTjV?0l+6=$wrJhEMVdM z`kmUYUL4l)c%1Ph^7Mf?v;3XvMtV8;A}tMY9CrX>fV8lGTOvpz0UDwe+n*(YZVO-2 z=Y)5bEgzjYk2Hc)K=duS*lEB;G1@6$T@kG_k9pT{D7GY38C-$Nd}k$Y5q+aC{?DNF zCAPS#^s)kt!^FeShIkuYQSovCcueba(qujdBObAI|mR1(S;CZ@_Wq|FYkH;d69cDmJ-bx3#UVquf|M@eyBLL zLn~sf7K&@~QBr$?)5NpbPq8U4(8+1=s5{-?ibx&(D;Hs*vdGa;>tFYSF;e_-pc1Ss z@yZk$xH*6rQ4rh|0{k~`iPD16c|`h7><&ME@z)^0or(UmleflJkW$w&^pJ2rL(@qI zIYX!aVb(OMsH19*_OJg^Rm;_Xe*ZQ&J&)b?mcM(a&gF}bFANPBIpiQ3W^SR9l+;?f zb8|5?5*hd#K~MFYO-mFI{uzdA9YpT-bAuM zFvp!7D=+}KI}UYrdURz6vqheC#FE+@IZQjEBGBW|Zwrs<{E6TjW!0@t8IIGZfm3VX zga14a1PK?eU_eu#*tM^nHNYAqcA9*Xi04_iBOqf3lt9ul*4%k7A0`-A{4VOLLSURK zJWvKmhGF#;S0*mZ8_MwcGZ)Ke`m`H_5}}wg3(p?gDwA%}tg{w*vamR2iAkCE`Q{3f z{|Y{AAHd5;tQN1V9P2r~+t=xSc<^v-|xfXpkU;M&a2b*|-xO zMYaIexI2{(<9K#SqS+V1q4xR+4slYcLPs%~s}4y$j`nedr_6SiWhH6dps8oA^uK z!Uk&(+QZmdr{tA!lPV+?BBazBX4HCm5m|2U9v&rT^(2KUcYN^^kpNvFrx>X+)t?uo z)K6i*x+1uhxcdQ1pzFsz|F|=cK0W$MHbp+K9RGSfy>vJqZ?{vSrR6(Q8$Gnoy&pVO zHcFA@K z*GyEZh2aBsGtWI9=T3aTv*qdFr-LiV`%OiAhC7hxzm8{WsA0bDIL#XuT8PSviF6@v zNs5Xvz53d|t4? zs^Bd75 z9RkPvdLw-RvNQk>R-&?ta`p$c>ww26A$tM;Td66%)l`upiM zWcK~a_Qo_eBl8+KwXGl>VMaCNCdo(%x$wK@5^eLdJ@LTP_a4>Z3XcSo3}peing7NGRPiiF0D|vT+_#C1{{c4$E#EDV zbuX|7dToy{Hu?MSa{Lfi1A3aY%mEn_5ua5w&yAOO+%nUv&M!lr{2|o3xDw#Kkb5OG zjey(n)~^Z&QuP*`{&J2kl#mEN+i@f#e75`GAu4@s)90bTxU47&2D=7)_&Srrq3r%J zF(ig~B|%XX{SvDg5|{wWr%QnBC^saa{>XN6$XpNghcb^wo|f`xY!#lF2U5oQ({)<; zz+$MJaOFV2;pH949cTue0tAW9JbLmh5$+%#t6j?vWZ~3DQXd0GqO}V@Bq^CPh{C@2 zHb!9qTK#47tyTjQ$^eN(0y^R9rfAi)2t zZCB=93_?kN>gV^rppS>Jnm*(5YdFWb1^Fm5byjGmG zc-D_pssCZA4OaPh-`(i%E=EkoK54A6+G_(sM<<;|j={JsY059AyVRGK*gA}%6XKP) zr?a=tN8g$0%(2;&W+j|sbN1LP?L9IWzc-?_L1f^9Z@E(A+s+WoI0zgB|Kr0 zTieMG`~lsyYh*mP?Kt03`0ss5pNYRCfA0H^1r6k-{*gHnww#&H-+*-T!-vrsQ7U3v?-D zb{X`uUnybBd>@k9=ucpl9IEoQy1$1SalEWpif9XWTkTgR*3(q`Ox!NS6( z4`QGPJ@_nJ!pq))$dbG+eR*L~(e490hn_CRWkDq7lL^JEh&ajj=KI4RZ&3LWM_pDY z)jQ?zYLyD6CF^bcuMHQ%{^>v9pXIO*|LCu0X-VBQ(6jVmD@5BkNmzCjO@s{d3MDP3 zelaSVA$Z>DHIr5`+6vQLipzr5l1c|4kF*aGHQ$S10dJm!Gp^=nDlv}xp%hs zR%{rTYR*OH#FU?Ml;{ToN|DVd27Yb+UCpZf=qV{TG49Iu#I4Swf6j<*a=Zl{*$Pzp z&d0z>t7~U6OXGd!JPwnh&_{z zR|-Bk`+eshJin<7^8$GzHZ#N~*`i#8Y4sId4id=6+}HiI{%!;(h}2E{Qxq44LtmPh zLsoB@7=cveh3m@^L%T6@dlQmzA9MUR{P=B44A69{_NqUXfgDN_Y%j$Xz6X|pPayK) zCi_wgE#2u-uQozjVpKkD;P_Ibc}BoNz!qo>8{F3tnzPBtsUD{Ls;V%_`_YS1c@{ z`j)yUW@ag$9;IUKy z8|-oixBJD>ahsUr+~>}g=@1;h*Rzu#qMj>B4{2D^BY|23b8YV;?3wa0Il0s7Oes-I zpI(InTsMg0ok>wC-Q$x_B+l{AllsYrG(^NVx+EEa2OzWe47Pmzu(d%b_fOf+%%%%d z$7!`>+V`(9sCmrE;r_iqYOA2%4wm7y#_}sGxkA^kFw8iD`h~}rKrgX-xAG=lb+V|B5VBd=BI815pjUsLuxJhg5bqBKAp<1pCWYi)>9Rm z@=V_Nbr`$coF3=(ISk2v?)hVRv;Nm>(WZFS9NdOvVib3OGTg9yRJ^;W2}AoKJDUd< z1PL{3gkWcceipkw8oI(ZZdyT*r&Vtdxcp}Y=v(V|DvFFI@nP$(ryBX}f3 z{zJKTf+t?3G4OF*d7kwahPOK{s=M*mv1LcPR&Hb|R^Dum79X9V1MT3=yYk5OTpb6z ze;MUzX|PH8;B{a1n}{FSZ{U^-S>)ME!X-|)^zfR$TW$a*0c6fz);-p7&)YDto3+$D zkZUF|8}q0AX07k0XZRJFXFKMtiL`ew;JEh(&|LDUBRsY@OiRZ+nd?D)bPS&7*#=n! zkDYaQWA<4w%8)U^5vK&L6Qn^z%LOX8h8BWcZVyGev*0P*-VHJmP-a*Ib?Ecb&H!W-> zx$>Ka*9$-J*Z$}IS9j%6crW)1f%}KRy_fTnY?|AAIMjJ_){j5YZu7PXQ-I!Lb(8~i z?6>6OMn^QaNhjm&3P&rMJHzmKMq6uf)3ZS7a&YmpQo;%<3}NSlQ|wi@j3PTnf(sWF zn*xE!MI95f^0Q(0*zuK=S2tk8Pc4rO=b!6z)22QfuOHt;_LV5QP;cMLShP47x6f7& zviM>o{O-eTd>#0f$5h(lpbX@CXV(q?N7I@AL-oJ^{}n~DhwMgVi8QH@bs|ER30X>v zHOZcRn<3e=6J;5s?8dHaW8W(KzBBeE#xjOk&UfCQ+wJ=Yob$suw{x!Rc|9JF`{g|L zh_#y%#NN*$z%em2PAg%%W*p7!!>_tPxsDt!h7;VsJQdLXuNRLJ4>ikkJIuSYd&RNt zrc2n$=|AeLwf)VPuieZv0X`q3ZH=N)oMbGmQ>`oWTnGXC7+!EEhR`orl;R(y^WEjh7$! zuacl^o2RuzN8*|pZT!%vr4wd?4}O9u5}onmI^}9lyYc?;C+e_?2iU`vo?pN1o?FPx zUO637@P%nrJfr4vTo{_=q5s#{`A6FKGoWL&i{kq(f?-wJOjM^`X!szF{O=B z73NLgy&;jAU(Y%pchO8rHt=0NaySJ~CYFK^38R3#wf-WB?n+VSj;#>$ljT*9+oaOx zhW$sU=!#urQ0U}#;l+?b$|PbIXjx4C3?iv{X&J@cV`s-e^Da1Dp2w44TJk3gohCH@ zAb}@=C@{I@>+qVtxjcTo582~elttX-0S)|T#{|QcGMtl)ua?P`ah}i=wtqCdaENY5 zA?}(3>#Lj#AR)k6MQY0mCYFf(xJ zp(6ECR0-Gp%cu=Pb=;+F*&t8Nr8^xT*)`wJ7OVFSh-DXx>8l&t2*ptQX1!=U7?PVQ zM+EoqP&OU`m!PLwn2!TIt+NrrO4Dx@;d7ey?#)*JsDgxdd}VFvMDza^3>K0DY2 zk#?_~L#I+`hh1?a9a#kpUQ?EZGqiSpEc|-DR|8pamEFzL+#iJK)ifP+mY#1=Ob3ay zJk*Q-Ik~)YNm%en4?aDXn>#?_TlE%f*qmV4&&m`q7w-Fz#ldTeLD>6ESnv1@A%T!c zA~qo>Vv1}bILY!T1wsjG#*(dfM$A{KJ?BeJ2hZ2rS7yF*USQMjl56)Xdq2y1kFidU ze{2Ucgq*9hdqv*Ky6W6@R>Jf3YuOdVi}m3~X#%Lx%NBFD%MPd=SX1sN6qB|9lr6ETQAVbGhxAp-gw?+@RyJ(B-SAFpaF!L^h=mFf!_h9{b*tAdxA3z>_Jx zdv_juXl~Cn{V~B~xw552k2)MVcMw=VQ?x(XaYhja+q2Y#6Y|Q(qz8WuInP|cN=Vqd zU)Z9d#2*KU*i$rpKWJu)2@dN4bw8JG7b9*L7Wr1vVPGd50;7?h0lT$ndZ;-zdbcX> zAtIwkXxN1_M*Au*l=;Eup#5AOEU9utOIT{DALgZY^w0Cogwc7wX(P}{05MxwV#E!6 zF>a>&ZjB_<1^pLc4{8~^G!0qgBS8n~tOw7s=gi`z(12lVC=FZ2*BAHsI2{qIB-5LK za2mUj!gn%e(ulNKMH6CkM6Vg3CSW`e#do&WO#&A-`7s8f`K}v^J<@%V@{8xT&#ThE zu%iOf`QkBYE;=eH$h*9?=IYXVjCj3cEqj&BrH>r&pzn9YO3CiHG~9ScL)ncg5^Z5H zpERo^qSNdFQhrMT3~_+LFd+1pFDqrZ?Dzlb4FJ!uo{s z==yn{giUY(Kxr(K4ehQ%b?zHdZGi?eUj(PA^7vyA7ulwF*H#L+LHFA~@>|j?ZLai= zn5ej#lGZs0I9PlG$!BJCXV_HGf!}XoZ!hp)9a}iCBK*iJEwOe^L!AfXln)?pA*kdp@rNoiMzC%4E281UsphGeAB zC|5MGU*ukDrx>J5jPv`UEivH~i4%WF&M39ZeRYd`a(SsPDmj;X4q374cAKb%rHna8 zpL{SBa;`p*q>QVeRk9ALm*oU1`7n@E%_N00$O%Iza)flUhK~Hy-l_A_Jjw2!@+Nif|`U&EBcuDJB z&8tJJ+%#4e6<}>jSROM*C)^4e6}Pk|ut6>{9yMmEeh|V}rEskGhVd=-g=F~kSdy3( z%s7wIJ2vZDCn1vT)c^SpasOQx$tn3rrO`@OUijT5$hq#&5W)Vlxa0j$>ixB|<-|_T zybx$WuoU`jGFs^9j0Pg>HR_g#1Vv4z+$(WV_pNilj*(G4auftsD#hR-J~4LDD;Bi{ z@Cj+VRm+|nWEZLnA7$496zlnmE7&wjIolIgl#41EbZA>JW*P4?al;JSL285>hzc$(ULMb%3o|r)scr{0MQiMsoQsUJ_(A zFWh;PT-@+PiZ-ucp)2zG_hZ2fHF;t!^W2gRK1SpHyIuzZ@97c@H`D_`y&wrgPC@pC zhQ$`;jh&%|n>!*2RL@xVC8xs zpW@Q@0C{MIH2>~BU$PGt-TagJ7k5+jktRs^%mChlEF+EWLsOUBIw&2;QHrSCtnRHt z-Z>Z!lB&P-iOfv|*CX=q6xJ*0@4!+TX$*^c0U+@nSIRDHtsT??zsOq6760?2mwtQ{ zBAX$Zj}NBT#UI8;$*odL`+T_x|5RHBIgWkHkZWXZ3#xKc>Z6 zYf<~M{+CVES0;ke`K%*B%_%Mq1H^Z3(jZT+`3&3}eq*aKo^86|b~fKIUxD;&W$cU* zA5d#4H*1`S!$+C-XL&hiPHPZ0=6YP#$K=xw*+896`RYQ--h2vEr{J6Lg@E;JpWV7K zm(tF&IvstWObUi;=06+Jkzw`TK(^Why8J56_WX0ZKKEVf{;z|(^?*Q1{}r+a)%S@K zT2J?sFr1$Vi-~ewz0Dy#+nX{)XUv>c??2I5Norc zx4Dz?Pn&bxLX{uwzA-=PLGQ`2Ik@Jp}ASJL=<;%&6!SBZyNg|`NR8_5(> z#F;nFB;V_f^W=2%yelvzf?IVOY6L?4XA{r%PbN&1>fk5vP0CZ9leZeC#mca>x6@As z-pd?!%NLYd0I-b$TIxKjg560>o}1&QzO#_z<5B$IWqJuqFdG_-p(qOc2xTcTForMq z>YrGPS@f@9N^I8U>jHL*!;IB949_N(e|XBzfUCFBXqTqVp;-NOdt%E=Jdb`q9;RJ& zt7VM7R!)0Vvs9|$DgOIWcONTyNFqX*M1_OG5=bDZFk+=7V=UqNC=PnDQ0Cl6b!^kd zJHaG&hgDACL9B!OIY#E6f4046cxs2vGh63evSVf~Nmym#nWD7k4Vb-p@2>hR@a0dr zWRN)fFD;P&?>$7*V+o;^TM)-Jt?=0JWWz6B8H!*r@}ok1^12+d%7K$S_NLVxX=!R6 z>n1!oZY^|8GWy&_L*=I`zX9+`S_!2V*iEYp_a69;YimK75w>pDcMD|Bg*(8hQkJ7O z_|25V>cdYXBm>1Sopx+|gb+<%hI{J1nXt0i{))788~WonlH=zZuJ_1FvT5tXw=xs& z2$$5QxvF^Myts8qW5vT)lbpye4uy#G8*^5LSf36os8UJ}6hcND4Q!Y+WIYPeHemPsdt!mRtM`!sY!Ur3->F;`@*MRes5|9agB;S(K3C}EhfQx z^bKHs7Brl9oy~{CPs{2bgTA`*8+5BzMck5otp#?|$Yt;6%F!&7?vcCDPORpl-4gmj z2e+tP-*fqf`0#gXw9Os&n-F26+UU_ND6?9H!>XrRwEslUWqGdjsbL5Q&~o=(8E516 z)*;8z{#&=XUje$od~QH$#MIi+M3)|8E6*=(mp>mzjGUY32s5(02O@WlxXpxj+m7nZ zuX%jFd1FuiSBAW^(&sy=#h-%MhPt>YRb&3A3fReRT-g&yR8Yw}kCEFjI(d&J%YY<24@GxY^!R+6aT{X@N-~FTX zICH_i7T8rfC5O%ruNyb~zqtst_8w?;IW{i5WZBf%I|w7(e$Mxlph@E=6Nl^-yo;*? z?AH$%;d|mnqVK|S4iB_}1b(__S$(MrpA_QpJ8w@7NS&nMhvIuYd>q=2CVm4_t7BxZ z<1W*V?)N7{?+xHS6zvb3O*exW#h-k$!IyacD;V_VB!l=~`LlgZPRiP-zXP|Cd}9qi zy0x8=!uuP;g>Sx20`^USu_Lkj1|Ng4w^dO)uwPgxS>SL+%YlTHwIS-!ylv_y~4+4oX;p^7wy(8A66i; zgODZrE3O?C4L&u@8J7Z}v$Y`<$Likp=~XQ#Mkjh?+we!!oqOB+qhyLY$QLADNCLA1 zG3T(kqW^7jkm2zyeb8eW^!)=jZ-WzxS=h(u-5-;$Ow2W*HQ%9pLb zu<}Z4p;%fs+uUfD#`qz!yE`qX*2LK6XS5=RfhCA~p!HeT_dKE@9TPlgEXnWwFTJJ6 zRk^!({-X8__mVc>92&!?IAdw2&cYHW=_;#zz5j*PX5$b+T@pO=m4=$RCSyEkqpEnC+@-JQ1nyT_BwaWQQftH304f5XMLyFWmw?Cy+=%${H zIQ5XdnxaRP{llYMS=RoT-WSS7T~+D$F^=eRUuwHTTHB4vi+ zrwN=sJ4pT7PA0zwW1IKu+nSrxDEPy_Oe&{>b1tO;gnj0NDn?n5Qy_oixBbfXrx}(0 zoj9adyi3gxyCSh5*ttnBa<)PkZLdi_Nl{^yd2=;KHgfUayKjY(d1EtU6alov5jW&0 zx!<_i>h=WNa%bRVGT(GBTx@gJxAlE_3&ALGcH2SVjd0}DY|Vp>*#^k*11HK}?*$*s zulk@B^nMI%-d^rCP`mHn0r%;bN7j8uDZ7aU9o;vdd1bxSaztN0Bx^q1VhVFXH}7fB z?dLA+WuQQB!v+Y_BjD!6IL*l~ZZViSOa|Z!-#jTU)m{4(zT5xDfrIJ+fkxK*cPQVtFxn`(Kx`l2u0eyH{@z%?AwTGd~%qb2yg6 zETfFA+TQlQ z&>(vekFN_L0$u^%B!uYgiqW&^X%ouVCxDbrl;XgML&&4JgDvN(DH9b3Q!+*ge~n0e z3hRCx71nryN%-fH?;;&wTFU+C7ObUhSe<=WG~Bb}?%knFBCjn~X+$|vU@r8l#?8Rt zdy6wlutMJUld*c+jYE>1OVH3$LImS^4GwCz(}^=>qwcz%`5pUBclS4t4=rBLm9l?6 zl|G)i^+=#g`KW-&NCGF3=k$fa-%)AhDQWr97EtBiF#GM;RZYnvI`RPvEp|D=(nSZ^ zU65iTkk|ECpUUyQeMp^^@y-maSpbz{VI^tmGaYsN+nz-r#jI5Z-LVce!OMZ(FE_CG zL!V~W{0)0x#oTW#rZ2%*J$4nz*)dVM#fy&WZCt2L>pH_AAcES{1&YIPx50P zmB%{vaV;ZQ>A2b=XlDYqw`z|oMUx?!)qi^~?%IhhdNy2?bKp0Y5BBN6yU3x2aw5Y@=7~dPmoL;#(SwSb)7n5i7 zCjS%lh^71ecep3e>2HWkYY5t|p0SA6N(|UAn+r}acNw^0J6!m-#^IoGE?#lo zWnn!yrR-}v)lZN0gc>nMQT!?^WGxIE*{r$PXDXyK43Woq8Bz~Dnoz%KuUa-DX)%Jf zCbS#Z1u$0Gu&_+yY^buCS0BpAtR|qiooPZZ)z3Alyb07*neP{KiOapdaG5b6--+$K zo%ZF3iX8d&_jE2GZJs?Ps;z|2qxADze{Wv+bXK1w$~hMi>%h zb3uRL{a>pe?PxFDeX;hf>VP24p$*>kon`k^`^YERm_jc2T0~^@kiid}Zz6F8oY1pT+$$Q@k=!^}jLUW*tNwnhurNHV^`|q`OZk^( zaZ*o5G>5Ucd}nxN@xAz}!up>8b9W)rcH3x--S?t0{rBMw;lx$3E!ZXGo7+~1b)6X` z)bNn*Z!O8YCdI5dh_Fj%kw)DT0(CftVj&A{k8`{VZ;lj}JjPy3Md#=@lKVZ2gtw5V z%zq!;F6HrVAdi5JS#Xgf-ZxHRCFI@W@DOA@!W3Vy{b_@^^yG0Xkv%d@WrX}mMj{=H zR>NxM-wQk`4C!NE>U+Wj8GyMGV=oHzgj#9%v}8GeTM{XUy*j_jeenn5cwWVa7Tu7= z{$BhOq%HwnYKDG?xYzNS6ES*m04AV~PM0{z>3$VV15Ut1Xl$CQ?yVPA`Og*ITjnpO z(#ZS+!Rq_m_xwN4y~pRo!)|;)Nvm|@dx>ksg(T3Xuqp5jP?S?nfLQb+)l&ONtcYvf z2&Vb8F*0WfuqIs!815%{ndbt1*jJ z;0=-DcRw`-GKqEs7@wE+?h=wDV!K-bptM03?C)+S22-QTkZAH;w3*b=4a>;xsl|!6 z)sDltuk>(HZYNczJjx7ArkFrgE~lEniX3Z1(*~;(pW?i}0vy(~{2NiLceX@f;(ALG z{`C4z+!}W}hShhY!d%9G<~Vj9cqXO&MCky<+T9R{H)?4XU!2GNNr%9IA_x z%Gi`#N@-7J+aN1G(=E`{`thF%Tzhdj7Xt{n^fIt{okCq zX{O9$8F@yZ3%QCa3zeVc!8fX;$X=Gd^{AaKIFeLodyIy(!BhnJeMU72WZ-h1@=O?E-c?Xu|ra zr@9QB-*^18$_q|%ARR}G4^fgHGOe!ZWQ-ldNqwL1e8c%eze3CG7tF1Ys$O5`Z;TD` zT`4Wcm%M0njzS?zlRXXslMh|1NIFx9Q}1o1f^TLKodPF7U>LNi083$vCAoe=jB;C> z!8%B^y_wv=w5x&VIP;n7v`^qSk5-ESLc>E=<95|x3;t#5R=<{sNT2g8mj^y>rKs7E z?;RVK?W*EmMY6VEy#lWC?jXE40DBulYwNw1IH@HdpX7M_P$l>SiSk_p8>@s8p!z>` zsP;Rgy>bJE(5n~8UPSAhARqzX{OT%fB5U1{Y}!Yz0$A5Mm5EWMp8&~(QTH?zDajKi z$PO~MMQ$+L^?Ge^L0E|o9ntov; zRP@UuEtpgZnTbjY+wb1Atoy1LF+E9ec7$}ri0fOu6_H$3fN9V}O#o+=i?&aex`d%!M0$!f8ZM}+a?>SAK;&nu{pAf#bR{uTq+ zVa{f|?xI(L73&n9N-gshh1sa>sRh?5i-xv%MbbA}M?zeA1k|Vf2l%i5$mhG?7X_6w ziaO5Ne5c{`jxCN866STy?Kke4S<8e8V&3IvPB0YLTYrm~{lOc@!pP%}C7M1iZ2xL< zT*aPI{9~;Ci-M{oNOgXn=H>Y?z1YzPV+x_HLjXH5~i=k|=zG=%gZg_1s1BE%TryW4810VzdeUY+R|ybh3sd zmcQo>uXH^Rb8xL%m;RhPW~GuJkMIm{Ii>J|x_X42*NSe+GAw;6NS?Gh9s8rnxzz;C zau2h13Db+1dmHqvgqj(#75KSQSd1;$m@Q{!WbFlSD`&VY7i!(9t7Py^ZFiHt$~f+8 z&}9?&c+vqS)4Ql^ zJ)qZjMIp4wesR3pPUjD|=pGd87PAZq-LgxCO80N$_|Rw~Wa{c8R5EKe!}c{|dI^GE zWdNN0T#jffzbDh*P3^q<3{IsH^yNDPv55Nqe$d7agy6M}?`*z!^4f|vn#)=6r#7d; zs`kfJ(b+P` z>B-HZv%!v`9?-ybv2y_2Hzb-ocTo!oR=9xp-|hwMgg?j5&Gi9Ay4yx1K3sUCD`kY% zXZVclOmb)*|C|KdfB6GoJHGJ_80Z!=Q9y-Z-Ktl)!ZPA26GyOH&MT0x!pN6>mm3h?1^z2 zo_u9A)3n7tcB93{A?RE-$)+@5_Pge6D!<%=KStIJWefkBPb8XlTf1?K%zJNXgWric zy_&ItDW3S^7HxfMpD@iX_E_h}oTf=e^)1-?&byo~ox3TmDF4xK-MUv6RWhy~LzAJJ zLS2-KEPeUtXD`VK-285ewD&adB2Jdj%>nBy4SX7M10?#c;Y!WMbVEYZAP>)BoJ1<$ zCpRURz{3}c2a1s^^Um!Q-_V65s7lclF5pnH&<~oMWFj6i`Lrz>-SZ!_fhcZk;@ZMW zo#+3t?JaluRFlqfu03{G%;h4EZF#_fgemZ;2Y%U{?&8KWTXT*7;~Ab< zyBfq1hIZl7;(K88f&WAxXvul{#-OoXM6EHH|5NWE@Fsh`xUE z?a2Vr3X^edn+}ekgmA|(AhG+msJq)#KcU}!OG=U!X)&PSVRZJA&CyZOdSzLiJ51ND zp!JcQofVpV1Ea66Uxk_GS&z1O|9w_=CwRdU zrUIg@Q8dx0Xln>CxouM6?DyLwkKcTzvP0$PZwKcNu3GKRh92tcVUOeQC%P95*e)q3 zn9foUS;R&cDc<8wFrBf{U`Hd(VxzMqbk(t$x?bEDNv(|GKGy(`$v04y>T%qxFFoNO zE4q%;q^$n$Syq(kaqxAIfVkHELJothsAM*_Y;p{O3%uGX7=+I+DVfL#@G90@bZwT( zIxfkEpB%XCskRE0#4q`(DRt^#hU0VNRim9d)9?DV=VXyTSa^}W6gM~6Tn=31&S>>+ zfdX%Nc!pn38GA`7XLIMhmR1SMv8H?VHu;6umnL~FtPw5yd_lGzi7khH!ZD7g>mNnlez7-{e49-&<9$!lE)4l0$ji5-^`=iJ~z|ZGrYDfl{A?{ zRVZ|eF3W_}Et{W_tUi($;9@bTjleBjpnnE!gpwAnUHW)@cDGhy-Q|Scx^h^TwEkgLw)myE*V!dZWK5e z)gVA6Rln%iJmO^SSO0Bs@;Tc^>c+&Ri@c@P=c|Nk0L<~?yuZAYg*py{il=*)O{|Dt zNRaLn7Q~Cf$1xA1ds~QtAzri)3qYqEM#UoB1KW`q80QU|yl!}XU+BnJjzV3xCF&eM zTkwcI1BD-QKT(ry5W_$7J6Rn>iT~nHou?*ob`&O`CJKA~ks27vc>b1%${>Fuj=C(% z%;d4y>nv^z*eNl+s`5W7!6 z`$J_f&(k(;`DHBc{>{W>@2b1IA`^jvl8kG+RrXSDD^ z?%U$8@4zO5xgVzuY3V+y3sy#9)bR0p>!WzXf|zQnf|YYKm#r5A34$ml+1EeC@XAR@ zPnoVgXplFLp#6YSGyU-*Ao3@5NAINDoASiNuq>8+#=g*%{lR|uK?q4 zvEP-BH_x?8P$Y1<)#w@Fg~`(D5$6$PkUR#|ekU#!KWAj{yZBqIalu*=V~_1OuSHWa z2|d1fZp=vqH>GfhUskGjg?jFxUk0uJu8RB3WTme)SGs`!)Lu~MS zd+&5s9Cl&Q6L6zJ?|)m@kW=*AkO9i!{ogj7gGJ-NAEXC6+lIid1evlFg{wgmE7xE* zQ`~c*Y5Q{m%ll_34QSzC^M%+eFTd4vm)Ivdp61{IMOFADx^4%NxMa&YZqNmAU_O-O zQxx3v({aqRZ9E02{QdA7Fyh+1gYc!qwY3SFUsWFsJl7((_6)_MZv)>L!VlX8xkab^ zkB-%;J%9b~+c*!HCHLaNjhERG^8X3+N4QhfWuBzZ+pjoaz!-f6@=m}O@FqGU3@h4@7u0$F7<&=hu zJ6%P#)pUd(yA&=)*WUp!JWvqPm9BT0K4-fA_>lWKpuqcpIqdP#rs{U zx6^+J6T2=r!A7pGL}TR;h9EtoybDz5D+LkH6h`n4Jk*HqP_E8<_9$X%e>D?bbWr<3 z+Nb>>Fs#8SNa5D^?|;YD*PTIC24z3SWmvw&IH}g)S)$qo zDuju63qxH--TRu%>zp3RH*a`7d1$l#(U%ga^c{a3)A9k&VDCsUno2deO2;yk__ZDE z4WzXK4liAf zsytwD1MEMLlM#%Pd04Jq=Io33#xgCWB6d}r)^w!STI6@1HO6^hqiL@7K%T19DT0>B zb>%%CK(>G{RhE`iFKA1o`3uo~{4ew#G$vp7LkQbdA+-jfqAkwhNuRfbxtOB2rL}B6 zw)FY;r;A*GdJT;$?Vu%{Kci{9MlGaURncwBgH=BrMSvc#G$R?f%$_y zy#shQX<^2#GtkgzY0G{W^?teL0kb(?uR7K9>gw^gh9&z46|J3j8}S}Z z7twChoAHE_@~*K7TD~(LLgCn=-5CrBR6Jcn&iGc~#RC7X1e$ZYdYzv#!|gc90rjMz zA+(iIL$=k~kYAsQZ;!9@Q5Eg%6&M_;{J`mlML;_vZWjh|MFG=EKK~q`Jq@=JZ#Lok zCQAIuv-*S!#r@#kmf6;e)|$Nm$e#xE`7jojSA$)0$T`2&p6)>{2_IHZ0qXg zKGG~k(ixR&=0co#M|^b@7+X{eye4<$NLF1sf0@X0y{^{Co^Pu2>}UV|qUdTq#nQ%7 z&0EupFZHFF!&4_>Np(@bXX((EfN($uiXY)gNI?dW&~sBSnThP*y8~Z7Uaj%Hvx|NO z2qVEOy{DY^cZL8KNh0$X8Ei4|;`v@UFa~)7tN=IBOT5Dk=W<6vm}OH<{O#Z1r-`th zv!hzAFkWzD5KE$Q)GT}DmOz%s?U%kIHzfyF60f<7LAS^Cp2arNm}T|cdTIF}sZqf5 zR+Cb+)YcpPKRa>M=jAKS@_ygjM!9Pq1Yx5+MKFb6e1RnVK@cmu;Bn*c1BcsE*c6|4 zeH7!;9rEM8gB0fB4+69wAF_+PTzfoDiW11QS5;w2SE)FhvHp7kb5QAy+~(2TVs0@?=>F#5a8WYu+XQ-9<8Q z9puAhT?XEiFVlix`}b9)b1;n*OTYPNBu%2jlZh_bqNez4V?@lQT<^ne=vwgz83jI~ zMLN@;uKDWs#hxYdX+9h!`+F=o6JmX|{jcQ|iDfxOBK0_ci?E?W^;)fVN!Cwjc3-V~ zF5zWLoWp>?d9ZZX+~d9o5qiSu{^m@x#+j|PZ5-l&3S_1>>jJ5E_5-uFdb=iWU`jXx-!b{D!}Nl4*0W9ZFFK6zKMe7I*Tdhsm=Fui`Z<};B1(>M_s~*GflLZ#PbUi1EB&p>y8Go#=Bgcp z^Y-LQ#Rj8a$L~4Fx+hOA)7#e!)M36_$6<$G>uC|mblo<@QaV~$Rp+&*`$@wE8fHhy zgEC2>4{<}|rJSodcL?&xN4p(sBCzeQLjM>I$PNe)%7#8E@Al0zL9M{+_7zDinX=p< zoh9<$TN?!$@<9Lnm`<<6gH^7;n44^cwI6tfepNl@X7O+4GL26yeR9i?##p?B-R1ts z6cfasm6eN$0dXqK7jkb@C!C=Xn}NPHDVf8EQXH`3<=ciysC zC-b>^G&IE9D#RmwN%R`Pj1RyURlmd`JV@o?@Y`QU3&MiZ<4r4Ic4sPN+DxE>FZ1kA znA!3P*WU~+gg0k$_~TyXFYGgrs{P}O&#m44S{HkV^(#IdNuaux21v&&w#0y2t`qTo z+rnpPes^!g-}l|6XL2r|I^+(YE=P->s5X+dNK6Efvi2v_9S_zRs4n9rghMNdAnUOG ze(u~IArup=E9T0x%qIjp?m3toQCa&;#ZGVVmaTJGt`w!Z7vSE*r?}gaK0A)VwUwSP zmKG*F8vG7@|Bbj;xVhwuT=3kr^}&iT&)T2CM|`@}*qa8CFuyv|T65|CukN&Z?Aema zjHUP1KUu~{Ab96XpT5FHdyvBURbE3o)V{}VH56z)6J@W;}x<6rZNwIV?L zfP&m3O|GfAo71v3l+^9hp#h zJOocrCJZC@lj$oOb}JCG{X z#^T{qyZZ-&3X3;};9ZNA2XcGW1hfs|;MccS&C?D~`u$x8Vyx7(wF6*s`E4SUzZ3fWQ9I0?@$|$H$QMB{5w&Y^KFvr(_es(;=e^9-7U^u z@ud>cU+|b%y7+?0#8sq?_alaC`a3uD{4`!c4ofKtrb8~Hmk3yYnoRE#&_1-eG!6WC zni6HxdoiD3YEKTuhvyhqHWIHu83#bsl_bZ~P}uH8*b%4CCAtLaIszh};ROH0wwh)g zTC!&htdr9N#`Iuq)eJZxPnJB+sHqs^1AG{(9ZX`dWMj%fZLl>&xiePP)} zUU6P&s27GW$%zp>kEpV<_%=gPlS69r&l_&Q4gRA|9Rc6!;~dQHx5PSb-G?im+m4FV z3evE_`yh#U4r9?vBG$m#)RjBNjH?fCf?Hx3BQp&FhMZ6oy(8D>iL#UGVci!zC|dRtG|CDW)Z>j)o)6j|jxdg*TW^E-!_wcwyG zvAbPni1ndUaHAlM8U5UJ^l=ToT1oo(k_J<|GJKsZmw17SOt7x_IX8`eahre~M$|%n z#4cSM(;YR@0i>}Tt>K16rN!bVZ64t-G=N(fyO3UoC)2OzkO;F{A3&2|>&@P{GfyhQ zXc{sF!TKAt#o?ZX#%p%>%(r$SpYFk+@a@#sxh&Xz(XnZ0l-nEm-8&OcfFm(coyr&g zHB}R<(@ou`fyWvo1UHfl4yJkl0{WD@A`4jHR^^yD0Z*ile|VM6O!p)lv^OR%W^EQ0R9!vQ4gQ_XRq8KVgO%bu9P)lJ z|D`$JTUvGNR67K?c`2GD#VFvBqpe!4FuS&des`!gx&L12HkCOKJJ{=uf&QAe!S4^_ z!dK5P%k9?iadmD+$w$vdU%4&&uKWJrYoT=LH;+ptvAzzrRG*euU&d(^sq#ild(cvn zQ+o5ipE7nfC}st9Ocn3`r}UEo_pV;kwETfLj@UHxzUlV)HG3TO=~(jkL`T5$yj8ta zYgw#DLT{ftarwh-EhG6M4*m;K32BX~9s|D3UD>jFhtDc@=@y<$mWAsn9pj~5w87<} z6^lWK#r0?7Q!{<_*mx+5GblVI%zA6l^p|&wXUf47K=4!0v zuVAwzOz&3T1ZtYRfj+sjDqxA2th(;)|KvaN%G1lPG1W0+&A%><*FG;6kKu~e;GNGH z4F!U(N5?+?v*@rHwzn0wD4h(eo>QTPgS6o%oC&+)0>zS$?90W!NBWr>&De}k6w6g;GlgJL>rY$R7aQ_6`oA2VY&rav|vPxCnL>`2hZmB_sh7cn+RO&91x&newhmM4fUbuZ>&asc; zVV|;dBpHFE!&viV!izSQSC-LphQy4{WIGBQteTCWztZFPdD zZ{s6Y2@uauahk6`3x_$y4+;DV{;}XO!O(<{^xXIL9IWfdyROSXNZA%xq}=qVs`<

*b5BUAiYxnJd`;IX0&uuQ*YqlJF z<3gbzry94$?nUedXl{{q|C5{YYO(A?mK~c#TTkb{6Rgjm+>!&~pWbzbA^$qIaM?>{auCptgeD+}nrbp40TL zq!97LKOQC9NNg+??0q7TVEj!MUWeB?k48<$U({MGa|Tf9o&Yx?d0i;DpUI3?9``x# z2%;4G>n$%CMgFAV+xa2zSzBDkO4%*Q*f-b#inN_@6Y&WM=rld=vVa|SR3UUq z&HcDS-E_^PPgfFi4wKr|olByW2TyywhVAbkeeLG-U+%l~wQXp9bC)&?9Ty30HrYa> zj%qC9QJM^dBH%P&G?L~cNX8oAqf{B%OQX!MI~6aVeL1ZLqXxU1aVv;lByUX?JM8SO z^;3_JQt<>7!Vlf#y8-BDt1xa)hu8^Tq%|ZxrTqN66^e>mU6JnRBEt7O$177K!91oF5^*RIL>+Ew3IF6y`jz|bYa`^>gE=G^#V(c){Kh0GzO9uvaL^`2 zo@oV=wh_@Ftgq3En*<>p16>3vd3RihBNC)DQS>T@l++KUH+{5i!Z7Q!Ipk{!5er1- z+}r~OFsMT`xgMfA3Tn5-Lt3)Q2SEgU0@n0StVa5Gx${o_RH-Zado2Lt`EPvIRk|Q! zBc0*}@`WUNFR357i=My}LmuYdV;$Sru|kLfZEmB$P4A3=0!?3Fn13ivt|Ab)3bvd7mMBQ!OQ~`u2j4!6PCdKlk-Yh4Pbf#ew*ZT$b9oK z(o^@cwjuxVRdbI$vL@;cVN8vFee>7b@3>xtTYveMkLsT4hiMl}Q772SZnn=c`>zG= z*jmS=YIAC6v2bziDdZ1CH5wh~&$*j_9>SMuVcF zSA2Gkx01idiW;it1nJy=7S4B9>mE~>!Zmgu^&5FXw%YH?@_}LdF7&YYHI9dB_3@{Y zd;Q(Ma|mF2?o|}eefE^jVMPqgbc$xnp*-6iAL%^RA2}VBXG>)`VIP=l+C2ZRW8^goiU;f8kxz=JwL8-Wf^lbror6BD25F&wb->o*K-lMQVP}vN*}ZD+BT4 zhRInPHl~vB!~>m|FI_eYya>g;WkNfqW*_oN4=7XYtC~RKoPS^nbOv--bobmA$A+lW|OU!#-^5|+ommOzW~A<-(E+*YoD@C*=~r}+M^BCiRHCA!mDm^1H*Ci3LdXoiqdOFjPzMp0zjn4ffuNm7zPB9iy}d0woPd@51T4!*tr)i~0T1bvSA3NDPYx)~Qd(vcb( z{rkiHbIc|aqA|cV+X@E!IwN<9IuI$)~Ayg?n&`=qHQFfx8m%b$}AgIhQrV-RaFlAQO zc_^8+$@(H!VTV`ElJ6t#!ev+2z&X74+^2mi!Q zj*CbTxPJ~V{^_!vu7n?h2UcOeA93vdtU8@u<%~CrL3_)?MV@2un=w624_luMG?u9SZwwNX+OZcVU54uGuA1MOg3<_?U)boNvL z!^|*=(o#R;%|y+UWH)^r)40k*&8Vdcwc1de~zTZWB3r~SFUwbLaZd^C-3G~)Naw`D|xRDW)Lxjog$WOpWQD#*bp(f zF);o`;fb`-hAQJ1k;kh=>z&${-rg0sCNlQ8BS(gw>29zU`diwSGjijD+p(#?I@B^a zOjLujz{t6eq)?>Ma>9$!ql@DZXI{bvB2cynp7iqVBO|BwBKt*3DC`rg^EO&3btU{F zxmmvX#mHk@^S8rS(*XuWKYS})i{rgLNiVc|;P?Ci^o1+n_6A5}q@9N*g(kBU9i^;f z|auBfJ^eo!Lg8??N5O-Z+N!vHZ%(q^uHq#WrbsUjqMpOWZ*sC2Wxt(@2;L zJXO{a_`$OA`OFQzA-S%v^R$J(GSGew#R4zMjFNuDr1fR2^mYX+ zJnoL!Ay6n`&AcHqk|bL~p5ngW_kuWi`SI{)mE9U1IH&AuBfj0+35DdF<3(>%cy9B$ z06Cv6$o#P56r-2Z!fH?Z45`-ZF%apURDTi!CW1uE+WRV|netJIDkLsC`c}6HcSdV55?(Myc zKR}XFABx5u?#hWZ!qHp!gVM2IKzviOL6yntAF$7sk10&gs>Uli?{Nh67GLv?O`If-BaF4HJ% zsrjP8Q6`De1y^#dZr#sZsq!N^URnWDo;|gQ73FvQmGra@{hw5O9t(SwBfI6P+|5;xL!BR!Sh_d$ZnqG{d<9V{yUJ$&F{4bSM} z0Z$lY-TF>4C_~2&8O+0EZ>nr*H^9$?=kx&(Gj`F*aO+_J=?5RCx!L^FosZ-l)?jEk z)1e;h;OSqcCi3_80u}(K=z=d7*wz2>r~67sH@qh zXmjtg-&;kBcZ%+R`2~J)`6qRv7FQ)y`>b|rvfBw=o;&d3CTbyyDQdD2`u;B^b9lu8 zh%n{CUuhXyjpS0h(A_uA}1{@oGSRwVY_z1KPLHwq%c&a`5hhFr!LM6(H+W5Rz z2gW9p?;w}PI&i)EwHG2En~T4F44D+-{-GJ~9DDBCt^YDSJS&t>mp zT=c9X%d9Fir2V+d(zMCF<_ajXY^V>rVAQ~d(T=ye$q0S^`@4UXx%XTeK3lybvG;y( zbJfItJK2J`t-128#s_4Pw1_J-4?Nl0OYT0cEjfbKvb3#zliAls*295Adl`$pSFHz4 z40}hQvkvEg#ZGSuH?+|fgmryx?z8^L`^*Y9Q#hd_3$sO>5nP=_xLWQJy33qR1H*Tl zxy>B7&9JtC6aP-|79Clxf7X3_S7-JD9(C9;v^lBs#j46Jj~@S;kerRecgpzFV>8M|nc-mfFjewvgRrJInEqmJ4< z(r>gD@BFp8n8%?QJ)>j9x)!Iw_g~S7cN`fGYsT5Yd*alm4Hl9~`QX6cYvpYkptADlB}mkDyE5TXUV%a=ZMC%iLQN^arCyIsFi)rwPM3Z4sh*yWif7Y;~% z;G8u{3lDlNn64Z7<8CGz6fP!ecuC|0Ct%9?O4=)|TF^7}8uw#M&OJ6nXBMHwWev(j zEwJ=(F%23&vPjSIHG1)KZW6e{Pf7F9zeH5J#N(Xvv6}K&^X_c0;*~V2q`Dvli~2-i zDDWv$JVVfK%s##>xv;`O|8`l_CGUJDg#J(dfA8o1EcMtpE(0b9lAV+j66B8E6iCZa}6emopuip2@r&vF(f~>0%xKY=pJ!q4^17x zxjb4bBroE&;V}nNxygGNCE-by%Wg48lzs?)Zt{v`jwqzAS2^^(Z{)&5;(B%bUIF-E zayKFh?WIgTS;~Dxa`QTL6B3wSM&P8MD$ae3*-KE%=~KQ+)@#5C1r4p}QT0f9d*Q$! zMLgNAyf)F0uWXd-V84`<-)W2%$&OPE!uUo!A1izi=kZCSBpt>=^)$>yjA)wfAOf(g zgog@#qNDoe+mAMEpbH|qNH+h zq(1I1V;tMzqx!w<;fKjMgj<+Oe;h|5g;g7<{Aw^PpczGwv}JjMTOCZ zO8%qQP!0AG7$|T0tFS?^jyhB)ZKmCF`jzo;fDUk!&zwgAcp*Fdu3k>3r{bLr0y#&A za3nbKHrCazeb75E@P?Q{NNN}Pt8bFW+Ct4FT;fbWMC5qoE|IAG;e>!V1q$FhX*#K% zyUst#fV#TTvM>5`Egsqsu~U?=`Q^d5k1EBXcqG1Gii2$`Mo78h0B~x46T#-jR!|y> zKr=r1vAG7+M78$!<`Ig2UTc$K5u_Gcioh~xJ+|C@Z>8g05Sz+X`09(L9>iH?G@3R5lVyk}{32q) z;YSes&}sYlpYzGsrqlg}P!;ie5~fZJP|8PZ%68;I9c^vxw-s-8%)fZJCF~rXi?3op z*~{;Lm+q*O>c4kR^1*Bw->Vk`$buX>(Ejd7gZ5M8DnY+p^ z9i|7N84enYPFK3W{@4cNU01R!)KNqY;_4jOgfEX7eVXx=fbqcpNfNLr%k}$srJo=? ze~-MiW_nQ1gQ5-;&Jex{%i*v(QPZTf8e@sqPT#(^PU*;R8lz9q5GrIt{oT!fUwXag z*AR8RB0f}=dc9KB+uB{^_opXy5^`^=RP{!IRERj}6z%MswdyoCf!PK`j{8@yy+}{iGyA$A9 z!B(B7vcHP<>KMFDz?`V$H-N~}KYJ{2r=%WJ3MI&Q1Y*x_yXCOj^yxX(nBCBkMRQ95e}PS|)7E%bnr=@V+S z`Xe*tyK7CKYbhWEwIOZ8iFe_T2$RovP}T4RX*+iUOL})l>nlgOcf-}r z=!@xrsVh_kD(7OoGEb!a(bs@AH@RX5e&Y%2-h-jIG2))*(&u4l{CA+M?` zWO|I)Ri2+k!~@_1{I?;8QR z0;nUCQel+PQreuuc;z!k%)M;ozT?5@)ejKVyZkVzE@tLllBg0N<);rN~B+ z641n@-KEW~V%w)@-CxJqLTe)_CzbM-%j16(1KJjV!=d8^`ekKciiFAo&Yo$Z@q_}B zzl2f+*?AwI+4cn(2EEgRz1j;PR+Yl9N*9ss!)`S~GNv?Ge~wx$Q;H$=Hz8Krjj)a~|>4>*1NEe&gjg zP9M*nZgL}vSxTnI0hk_%DLZ<$fXS|PmEvn8!Spd?{#)Mv8D3RIOu?B((ovu7v)& zXzymG>0s}+>}={EUlX(Mnil)f)krsbsJ=~$2+{ofn?6qH-b>cF%;a+wrG9nu$}eAL z+gRLz_uBtpd}$vs-K+k9WoBiNsy^&g9`dzo}SNH!Ynd7vx8GQk#@ zUKN{ks2fGFfJ?is>F1Uw@E9)tPI~=vDdBgkO>1rWcqlbR7iTY0>?-Zg7qCP*Xn1-@ zfH4T$s68cn7z4po#-EL+Ly%atACxD zpc~^l=HTJN`f?K?Z5X!f`~Hp&(?K!#Fw&&hMCBmN1=xR94mLfC7GRN?gVB-Oh9pmr zCUh`QP^tC@X3#KhXXD=$jc-zv;s(w$0TdcOV4;^Ffz7Uiug2daM>pjD$N#uv)nVXZ zWk>(NGtf?TXO$8vsCVbH#HKPw9_42kt)^SpC*&)>WtsV_^Xy2Lg%jtiYZw0GCL8n?o^EOT&2x64)*} znTHGE!On+h(sy`e$>7@o&(aUI%fS!Uv+>7AEa)lQsx`jtu1`-!W>^-ZqcSSv zi{qXXvm?lUqG?%R#huqyC_1ULN><&{#pSw7<#l^ZcyxGZXVVfPbFTJg(VDBE&=lo4 zSKrG&zwslV22i^oLd6n(byLRaxwvwp)dPp`jYSB4g#qq?Vj(WIAbi%1t7iNvr6V0% z>i)MJwp7aIP=WiH{J{gV*Zd~r`)`Wx6spLejU>Y#<(&Z zJm4ftY+TY_{&j!%4|s2HBG_S}-A`TqG)Mo&%Bu=yMz_rVygHZdWbc#cJ+Qoy*X)jZ zpuoyh*Dmlg^EkSiKQY#$kf0u^AR2>lG%maqm6zrLH##S1x2smXf zAK5I}?BejpOYo*ICNbyBr~8edr6c-mIsXQU9C8eKJ1iU1#4|G2e=jgo;N;&@HIuBG z+2IJJmhY?I;@{uK$Mw=C$!B-Cg7LFKaoYS(UowU7t(PFJdc2;@@{+sI;4PvFe*QM>`36`k3;4-NZ1neA{#PBM3=LGEzB`p{P9_`9* znOkO>9f!29afs&x?fddk3%yU00b|R!EY~?Sy%@RT!@Wf4HkD*{&Ls2x*9X%iW3fZE z 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

aM_4BmSz42D#OAY3#zc>kL(SvSzBlb8pO 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

yOXhrTNFymr4!o?N~ZRU1Rj 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 Model Overview + +

MCODE Logical Model

+MCODE Logical Model (STUB picture) + +

 

+ +

Major sources of information

+

Specifications consulted for the development of this IG include:

+ +

TBD.

+ diff --git a/spec/IndexFolder_Oncocore/treatment.html b/spec/IndexFolder_Oncocore/treatment.html new file mode 100644 index 00000000..8d154afb --- /dev/null +++ b/spec/IndexFolder_Oncocore/treatment.html @@ -0,0 +1,25 @@ +

Treatment

+ +

Major sources of information

+

Specifications consulted for the development of this IG include:

+ + +

 

+ +

Chemotherapy

+

TBD

+ +

 

+ +

Hormone Therapy

+

TBD

+ +

 

+ + +

RadiationTherapy

+

TBD

+ +

 

diff --git a/spec/ig-oncocore-config.json b/spec/ig-oncocore-config.json index d0836daf..7896405c 100644 --- a/spec/ig-oncocore-config.json +++ b/spec/ig-oncocore-config.json @@ -11,7 +11,7 @@ "version": "0.2.0", "includeLogicalModels": true, "includeModelDoc": true, - "indexContent": "LandingPageOncocore.html", + "indexContent": "IndexFolder_Oncocore", "historyLink": "http://hl7.org/fhir/us/oncocore/history.html", "primarySelectionStrategy": { diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index 28c59f79..e4be671a 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -75,7 +75,7 @@ Concept: LNC#21924-6 "Tumor marker Cancer" Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Diectionary). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." SpecificFocusOfFinding value is type ref(CancerDisorderPresent) FindingTopicCode is LNC#21924-6 "Tumor marker Cancer" - FindingResult from TumorMarkerVS // should we populate TumorMarkerVS with the list of all possible tumor markers? + FindingResult from TumorMarkerVS 0..0 NonIndependentFinding 0..0 AnatomicalLocation 0..0 PanelMembers.Observation // each cancer type can further narrow the value set of tumor markers as needed. From 09a56524fc8cb635e4427d8b14505ea8d10041ee Mon Sep 17 00:00:00 2001 From: May Terry Date: Wed, 19 Dec 2018 14:05:18 -0500 Subject: [PATCH 156/289] treatment and biomarker documentation; genetics VS cleanup plus changes based on Rute's comments: - changed RadiationModality so it uses ProcedureMethod. - zero'd out some element reference ranges. --- spec/IndexFolder_Oncocore/biomarkers.html | 46 +++++-- spec/IndexFolder_Oncocore/treatment.html | 39 ++++-- spec/shr_genetics.txt | 20 +-- spec/shr_genetics_vs.txt | 157 +--------------------- spec/shr_intervention.txt | 5 +- 5 files changed, 80 insertions(+), 187 deletions(-) diff --git a/spec/IndexFolder_Oncocore/biomarkers.html b/spec/IndexFolder_Oncocore/biomarkers.html index 9cc12285..215ae388 100644 --- a/spec/IndexFolder_Oncocore/biomarkers.html +++ b/spec/IndexFolder_Oncocore/biomarkers.html @@ -1,19 +1,47 @@

Tumor Markers and Genomics

-

Major sources of information

-

Specifications consulted for the development of this IG include:

+

Tumor and molecular markers are key prognostic factors in calculating cancer staging, identifying treatment options, and monitoring progression of disease. This IG distinguishes tumor marker from genomics as follows:

    -
  • HL7 FHIR Genomics Implementation Guidance
  • +
  • Tumor markers can be indicators that result from the existence of cancer process. For example, an abnormal increase in prostate-specific antigen (PSA) levels is a prognostic factor for prostate cancer. Other tumor markers include estrogen receptor (ER) status, progresterone receptor (PR) status, carcinoembryonic antigen (CEA) levels, among others.
  • +
  • Molecular markers are measured at the DNA, RNA, or chromosomal level. Genetic tests which evaluate molecular markers include but are not limited to in-situ hybridization tests (e.g.: FISH, CISH), sequencing tests (e.g.: Sanger, NGS), whole genome and exome tests, and karyotype.
-

 

-

Tumor Markers

-

TBD

- -

 

+

MCODE identifies a dedicated FHIR profile called TumorMarker for the identification of cancer tumor markers.

+
    +
  • Tumor marker tests identified by their LOINC order code. The assigned TumorMarkerVS value set is also extensible to account for new LOINC version and code updates.
  • +
  • The TumorMarkerVS lists the most common tumor markers but does not further align by cancer type.
  • +

Genomics

-

TBD

+

MCODE focuses on cancer genomics - the study of the totality of DNA sequence and gene expression differences between tumour cells and normal host cells. It aims to understand the genetic basis of tumour cell proliferation and the evolution of the cancer genome under mutation and selection by the body environment, the immune system and therapeutic interventions (source: Nature).

+

MCODE will only include the minimal set of genetic related elements relevant to capture in an EHR to drive treatment options.

+

MCODE aligns with the Sync for Genes approach to adopting a layered-based adoption model. With MCODE's initial emphasis on a minimal set of elements to drive treatment, there is no immediate need to model and store whole sequence reads that would be sent from an NGS labs. Rather, only the relevant genetics labs test results and variant names and interpretation, noted by Sync for Genes as levels 1 and 2, would suffice. Subsequently, the MCODE implementation mapped to the observation-genetics profile as much as possible.

+ +

Identifying Genetic Tests

+

MCODE aligns with the Genetic Test Registry (GTR) as the primary source for identifying genetic tests, assigning the relevant GTR ID to the GeneticMarkerAnalysisResult.code element.

+ +

The GeneticMarkerAnalysisResult profile does not constrain the list of genetic tests. However, we provide an extensible value set of genetic tests identifying cancer as the related condition. Terms were curated based on the following filter criteria in the GTR TestVersion data set:

+
    +
  • A lexical query of the condition_identifiers field containing key cancer related terms like 'cancer' and 'tumor'.
  • +
  • Tests based in the United States as country of origin.
  • +
  • Tests status is active as of 12/17/18. A date is provided since GTR potentially can update their content on a daily basis.
  • +
  • The resulting dataset was clinically inspected to remove inappropriate tests (false positive matches like "Sudden Death Syndrome NGS Panel").
  • +
+ +

The GeneName element is not bound to a cancer-specific value set at this time. Nevertheless, we provide a recommended value set of cancer-related genes in the CancerGeneVS value set.

+ +

The CancerGeneVS value set includes the HUGO approved symbol rather than the full representation of the Gene ID (in the format approved_symbol:identifier). This choice was pragmatic since a certain number of systems store the symbol rather than the non-semantic identifier assigned by HUGO. Nevertheless, the approved symbol for the gene is unique so it is possible to derive the identifier from the HUGO dataset if needed.

+ +

Sources of Information

+

References used in the MCODE biomarker model include:

+

 

diff --git a/spec/IndexFolder_Oncocore/treatment.html b/spec/IndexFolder_Oncocore/treatment.html index 8d154afb..50b2dcfb 100644 --- a/spec/IndexFolder_Oncocore/treatment.html +++ b/spec/IndexFolder_Oncocore/treatment.html @@ -1,25 +1,40 @@

Treatment

+

The Treatment domain includes procedures and medications administered in the treatment of a cancer patient.

+

The following profiles are relevant to cancer treatment:

+
    +
  • CourseOfTreatmentPerformed
  • +
  • RadiationTreatmentPerformed
  • +
+ +

The CourseOfTreatmentPerformed profile embeds elements which comprise a course of treatment. These include surgical, radiation, imaging, and medication therapies. These are further described below.

-

Major sources of information

-

Specifications consulted for the development of this IG include:

+

Procedures

+

Procedures are further categorized as:

    -
  • TBD
  • +
  • Surgical therapies which involve the removal of cancer tumors from the body.
  • +
  • Radiation therapies which use of high-energy radiation from x-rays, gamma rays, neutrons, protons, and other sources to all cancer cells and shrink tumors (source: NCI).
  • +
  • Imaging procedures which are used for diagnostic purposes as well as image-guided surgical procedures (source: NCI).
  • +
  • Medication therapies are treatments with any substance, other than food, that is used to prevent, diagnose, treat, or relieve symptoms of a disease or abnormal condition (source: NCI).
+MCODE does not currently constrain surgical, radiation, and imaging procedures to cancer-specific therapies. Extensible value sets for each are being considered for a future release, pending further requirements from clinical subject matter experts.

 

-

Chemotherapy

-

TBD

+

Medication Therapies

-

 

+

Medication therapies in MCODE are further categorized as:

+
    +
  • Chemotherapy agents which stop the growth of cancer cells, either by killing the cells or by stopping them from dividing.
  • +
  • Targeted therapy agents identify and attack specific types of cancer cells with less harm to normal cells. Some agents block the action of certain enzymes, proteins, or other molecules involved in the growth and spread of cancer cells. Others help the immune system kill cancer cells or deliver toxic substances directly to cancer cells and kill them (source: NCI).
  • +
  • Hormone therapy agents which add, block, or remove hormones as a means of slowing or stopping the growth of certain cancers.
  • +
-

Hormone Therapy

-

TBD

+

Chemotherapy and hormone therapy agents are not specified as constraints within the profile. Rather, we provide a means of deriving the list of relevant drug integredients pertaining to the therapeutic drug class (as Rxnorm RXCUIs) on-demand using RXCLASS.

+
    +
  • for all antineoplastic agents, including chemotherapy and targeted therapy agents: https://rxnav.nlm.nih.gov/REST/rxclass/classTree.json?classId=L01
  • +
  • for all endocrine/hormone therapy agents: https://rxnav.nlm.nih.gov/REST/rxclass/classTree.json?classId=L02
  • +

 

-

RadiationTherapy

-

TBD

- -

 

diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index e4be671a..0f2c2861 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -1,6 +1,6 @@ Grammar: DataElement 5.0 Namespace: oncocore -Description: "Genetics." +Description: "Genetics and tumor marker related elements." Uses: shr.core, shr.base, shr.entity CodeSystem: SCT = http://snomed.info/sct @@ -8,12 +8,7 @@ CodeSystem: LNC = http://loinc.org CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: UCUM = http://unitsofmeasure.org -/* - **** Modeling individual biomarkers does not scale. - * Markers can apply to multiple cancer types, and potentially other non-cancer diseases. - * Must model this in a way that constrains biomarkers by cancer type in each value set. - */ -EntryElement: GeneticMarkerAnalysisResult +Element: GeneticMarkerAnalysisResult Based on: LaboratoryObservation Concept: MTH#C0679560 "Genetic Testing" Description: "The process of isolating and testing the DNA of an embryo or a person to detect the presence of genetic alterations or defects that may predispose to the future development of a disease or disorder. (source: NCI Thesaurus)" @@ -22,6 +17,7 @@ Description: "The process of isolating and testing the DNA of an embryo or a per 0..0 FindingResult // panel, no numerical or coded result 0..0 SpecificFocusOfFinding // MK: What gene are we looking at? mlt: identified in two places: 1) FindingTopicCode through the GTR ID, 2) in the GeneName element below. +0..0 ReferenceRange 0..1 GenomicSourceClass 0..1 GeneName 0..1 DNARegionName @@ -39,7 +35,7 @@ Value: CodeableConcept from GenomicSourceClassVS // LOINC preferred answer lis Element: GeneName Concept: LNC#48018-6 "Gene studied [ID]" Description: "HUGO Gene Nomenclature Committee (HGNC) identifier for a gene. (source: LOINC)" -Value: CodeableConcept from http://www.genenames.org +Value: CodeableConcept from http://www.genenames.org if covered // interpretation LOINC preferred answer list LL378-1 for LNC#48018-6. Element: DNARegionName @@ -75,9 +71,15 @@ Concept: LNC#21924-6 "Tumor marker Cancer" Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Diectionary). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." SpecificFocusOfFinding value is type ref(CancerDisorderPresent) FindingTopicCode is LNC#21924-6 "Tumor marker Cancer" - FindingResult from TumorMarkerVS + FindingResult from TumorMarkerVS if covered 0..0 NonIndependentFinding 0..0 AnatomicalLocation 0..0 PanelMembers.Observation // each cancer type can further narrow the value set of tumor markers as needed. +EntryElement: CancerGeneticMarkerAnalysisResult +Based on: GeneticMarkerAnalysisResult +Concept: TBD#TBD "Cancer Genetic Test Result" +Description: "A panel that analyses different components of a genetic test specific to cancer-related genetic markers." + FindingTopicCode from CancerGeneticTestRegistryVS if covered // the identifier from the Genetic Test Registry value set (filtered for cancer-relevant genetic tests.) + GeneName.CodeableConcept from CancerGeneVS if covered diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index 6400096a..9f78e303 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -5,6 +5,7 @@ CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org CodeSystem: HGNC = http://www.genenames.org CodeSystem: GTR = https://www.ncbi.nlm.nih.gov/gtr +CodeSystem: MTH = http://ncimeta.nci.nih.gov ValueSet: GeneticTestMethodVS Description: "The method used to perform the genetic test. Examples include Fluorescent in situ hybridization (FISH), polymerase chain reaction-based assays (PCR), Sanger sequencing, and next-generation sequencing (NGS)." @@ -25,10 +26,6 @@ LNC#LA26821-1 "No expression." LNC#LA26820-3 "Low expression." LNC#LA26819-5 "High expression." -// ValueSet: GeneticsGeneVS -// Description: "TBD stuff" -// Includes codes from http://www.genenames.org - ValueSet: GenomicSourceClassVS Description: "Data absent reasons (null values) for nuclear pleomorphism count and tubule formation score. Aligns with LOINC preferred answer list LL378-1." LNC#LA6683-2 "Germline" @@ -313,13 +310,6 @@ GTR#GTR000500816.2 "HNPCC/Lynch Syndrome (PMS2) Sequencing and Deletion/Duplica GTR#GTR000500826.1 "MSH6 HNPCC Sequencing and Del/Dup" GTR#GTR000500826.2 "HNPCC/Lynch Syndrome (MSH6) Sequencing and Deletion/Duplication" GTR#GTR000500826.3 "HNPCC/Lynch Syndrome (MSH6) Sequencing and Deletion/Duplication" -GTR#GTR000500883.1 "epiSEEK Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" -GTR#GTR000500883.2 "epiSEEK Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" -GTR#GTR000500883.3 "epiSEEK Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" -GTR#GTR000500883.4 "epiSEEK Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders (489 genes)" -GTR#GTR000500883.5 "epiSEEK Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders" -GTR#GTR000500883.6 "epiSEEK Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders" -GTR#GTR000500883.7 "epiSEEK Comprehensive Sequence Analysis for Epilepsy and Seizure Disorders" GTR#GTR000500933.1 "Integrated BRACAnalysis" GTR#GTR000500933.2 "Integrated BRACAnalysis" GTR#GTR000500933.3 "Integrated BRACAnalysis" @@ -446,16 +436,6 @@ GTR#GTR000505666.6 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH R GTR#GTR000505666.7 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK NextGen Sequencing (NGS) and Deletion/Duplication Panel" GTR#GTR000505666.8 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK NextGen Sequencing (NGS) and Deletion/Duplication Panel" GTR#GTR000505666.9 "Hereditary Breast and Ovarian Cancer Syndrome - HBOC HIGH RISK NextGen Sequencing (NGS) and Deletion/Duplication Panel" -GTR#GTR000505735.1 "Ataxia telangiectasia Syndrome via the ATM Gene" -GTR#GTR000505735.10 "Ataxia telangiectasia Syndrome via ATM Gene Sequencing with CNV Detection" -GTR#GTR000505735.2 "Ataxia telangiectasia Syndrome via the ATM Gene" -GTR#GTR000505735.3 "Ataxia telangiectasia Syndrome via the ATM Gene" -GTR#GTR000505735.4 "Ataxia telangiectasia Syndrome via the ATM Gene" -GTR#GTR000505735.5 "Ataxia telangiectasia Syndrome via the ATM Gene" -GTR#GTR000505735.6 "Ataxia telangiectasia Syndrome via the ATM Gene" -GTR#GTR000505735.7 "Ataxia telangiectasia Syndrome via the ATM Gene" -GTR#GTR000505735.8 "Ataxia telangiectasia Syndrome via the ATM Gene" -GTR#GTR000505735.9 "Ataxia telangiectasia Syndrome via ATM Gene Sequencing with CNV Detection" GTR#GTR000505800.1 "Hereditary Breast Cancer via the CHEK2 Gene" GTR#GTR000505800.10 "Hereditary Breast Cancer via the CHEK2 Gene" GTR#GTR000505800.11 "Hereditary Breast Cancer via CHEK2 Gene Sequencing with CNV Detection" @@ -735,17 +715,6 @@ GTR#GTR000509326.6 "Renal Cancer NextGen Sequencing Panel" GTR#GTR000509326.7 "Renal Cancer NextGen Sequencing Panel" GTR#GTR000509326.8 "Renal Cancer NextGen Sequencing (NGS) Panel" GTR#GTR000509326.9 "Renal Cancer NextGen Sequencing (NGS) Panel" -GTR#GTR000509342.1 "Autism NGS panel" -GTR#GTR000509342.10 "Autism NGS Panel" -GTR#GTR000509342.11 "Autism NGS Panel" -GTR#GTR000509342.2 "Autism NGS panel" -GTR#GTR000509342.3 "Autism NGS panel" -GTR#GTR000509342.4 "Autism NGS panel" -GTR#GTR000509342.5 "Autism NGS panel" -GTR#GTR000509342.6 "Autism NGS panel" -GTR#GTR000509342.7 "Autism NGS Panel" -GTR#GTR000509342.8 "Autism NGS Panel" -GTR#GTR000509342.9 "Autism NGS Panel" GTR#GTR000509348.1 "High-Risk Hereditary Breast Cancers Panel" GTR#GTR000509349.1 "Hereditary breast and ovarian cancer syndrome (BRCA 1 & BRCA 2)" GTR#GTR000509350.1 "High-Risk Hereditary Colon Cancers Panel" @@ -762,16 +731,6 @@ GTR#GTR000509372.6 "Connective tissue diseases NGS Panel" GTR#GTR000509372.7 "Connective Tissue Diseases NGS Panel" GTR#GTR000509372.8 "Connective Tissue NGS Panel" GTR#GTR000509372.9 "Connective Tissue NGS Panel" -GTR#GTR000509399.1 "Epilepsy NGS Panel" -GTR#GTR000509399.10 "Epilepsy NGS Panel" -GTR#GTR000509399.2 "Epilepsy NGS Panel" -GTR#GTR000509399.3 "Epilepsy NGS Panel" -GTR#GTR000509399.4 "Epilepsy NGS Panel" -GTR#GTR000509399.5 "Epilepsy NGS Panel" -GTR#GTR000509399.6 "Epilepsy NGS Panel" -GTR#GTR000509399.7 "Epilepsy NGS Panel" -GTR#GTR000509399.8 "Epilepsy NGS Panel" -GTR#GTR000509399.9 "Epilepsy NGS Panel" GTR#GTR000509427.1 "Hereditary Cancer NGS Panel" GTR#GTR000509427.2 "Hereditary Cancer NGS Panel" GTR#GTR000509427.3 "Hereditary Cancer NGS Panel" @@ -790,17 +749,6 @@ GTR#GTR000509431.6 "Leukoencephalopathy NGS Panel" GTR#GTR000509431.7 "Leukoencephalopathy NGS Panel" GTR#GTR000509431.8 "Leukoencephalopathy NGS Panel" GTR#GTR000509431.9 "Leukoencephalopathy NGS Panel" -GTR#GTR000509432.1 "Lactic Acidosis Pyruvate NGS Panel" -GTR#GTR000509432.10 "Lactic Acidosis-Pyruvate NGS Panel" -GTR#GTR000509432.11 "Lactic Acidosis-Pyruvate NGS Panel" -GTR#GTR000509432.2 "Lactic Acidosis Pyruvate NGS Panel" -GTR#GTR000509432.3 "Lactic Acidosis Pyruvate NGS Panel" -GTR#GTR000509432.4 "Lactic Acidosis Pyruvate NGS Panel" -GTR#GTR000509432.5 "Lactic Acidosis Pyruvate NGS Panel" -GTR#GTR000509432.6 "Lactic Acidosis Pyruvate NGS Panel" -GTR#GTR000509432.7 "Lactic Acidosis-Pyruvate NGS Panel" -GTR#GTR000509432.8 "Lactic Acidosis-Pyruvate NGS Panel" -GTR#GTR000509432.9 "Lactic Acidosis-Pyruvate NGS Panel" GTR#GTR000509436.1 "Lysosomal Disorders NGS Panel" GTR#GTR000509436.10 "Lysosomal Disorders NGS Panel" GTR#GTR000509436.2 "Lysosomal Disorders NGS Panel" @@ -811,15 +759,6 @@ GTR#GTR000509436.6 "Lysosomal Disorders NGS Panel" GTR#GTR000509436.7 "Lysosomal Disorders NGS Panel" GTR#GTR000509436.8 "Lysosomal Disorders NGS Panel" GTR#GTR000509436.9 "Lysosomal Disorders NGS Panel" -GTR#GTR000509441.1 "Macular Degeneration NGS Panel" -GTR#GTR000509441.2 "Macular Degeneration NGS Panel" -GTR#GTR000509441.3 "Macular Degeneration NGS Panel" -GTR#GTR000509441.4 "Macular Degeneration NGS Panel" -GTR#GTR000509441.5 "Macular Degeneration NGS Panel" -GTR#GTR000509441.6 "Macular Degeneration NGS Panel" -GTR#GTR000509441.7 "Macular Degeneration NGS Panel" -GTR#GTR000509441.8 "Macular Degeneration NGS Panel" -GTR#GTR000509441.9 "Macular Degeneration NGS Panel" GTR#GTR000509442.1 "Intellectual Disability NGS Panel" GTR#GTR000509442.10 "Intellectual Disability NGS Panel" GTR#GTR000509442.2 "Intellectual Disability NGS Panel" @@ -851,17 +790,6 @@ GTR#GTR000509451.6 "BRCA1 and BRCA2 deletion/duplication analysis" GTR#GTR000509451.7 "BRCA1 and BRCA2 Deletion/Duplication Analysis" GTR#GTR000509451.8 "BRCA1 and BRCA2 Deletion/Duplication Analysis" GTR#GTR000509451.9 "BRCA1 and BRCA2 Deletion/Duplication Analysis" -GTR#GTR000509456.1 "Parkinson Alzheimer Dementia NGS Panel" -GTR#GTR000509456.10 "Parkinson-Alzheimer-Dementia NGS Panel" -GTR#GTR000509456.11 "Parkinson-Alzheimer-Dementia NGS Panel" -GTR#GTR000509456.2 "Parkinson Alzheimer Dementia NGS Panel" -GTR#GTR000509456.3 "Parkinson Alzheimer Dementia NGS Panel" -GTR#GTR000509456.4 "Parkinson Alzheimer Dementia NGS Panel" -GTR#GTR000509456.5 "Parkinson Alzheimer Dementia NGS Panel" -GTR#GTR000509456.6 "Parkinson Alzheimer Dementia NGS Panel" -GTR#GTR000509456.7 "Parkinson-Alzheimer-Dementia NGS Panel" -GTR#GTR000509456.8 "Parkinson-Alzheimer-Dementia NGS Panel" -GTR#GTR000509456.9 "Parkinson-Alzheimer-Dementia NGS Panel" GTR#GTR000509460.1 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication" GTR#GTR000509460.2 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication" GTR#GTR000509460.3 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication" @@ -871,15 +799,6 @@ GTR#GTR000509460.6 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication" GTR#GTR000509460.7 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication Analysis" GTR#GTR000509460.8 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication Analysis" GTR#GTR000509460.9 "Li-Fraumeni Syndrome: TP53 Gene Deletion/Duplication Analysis" -GTR#GTR000509461.1 "Primordial Dwarfism NGS Panel" -GTR#GTR000509461.2 "Primordial Dwarfism NGS Panel" -GTR#GTR000509461.3 "Primordial Dwarfism NGS Panel" -GTR#GTR000509461.4 "Primordial Dwarfism NGS Panel" -GTR#GTR000509461.5 "Primordial Dwarfism NGS Panel" -GTR#GTR000509461.6 "Primordial Dwarfism NGS Panel" -GTR#GTR000509461.7 "Primordial Dwarfism NGS Panel" -GTR#GTR000509461.8 "Primordial Dwarfism NGS Panel" -GTR#GTR000509461.9 "Primordial Dwarfism NGS Panel" GTR#GTR000509474.1 "CHEK2-Related c.1100delC Founder Mutation" GTR#GTR000509474.2 "CHEK2-Related c.1100delC Founder Mutation" GTR#GTR000509474.3 "CHEK2-Related c.1100delC Founder Mutation" @@ -957,25 +876,6 @@ GTR#GTR000510869.6 "Thyroid Cancer NGS Panel" GTR#GTR000510869.7 "Thyroid Cancer NGS Panel" GTR#GTR000510869.8 "Thyroid Cancer NGS Panel" GTR#GTR000510869.9 "Thyroid Cancer NGS Panel" -GTR#GTR000510871.1 "Sudden Death Syndrome NGS Panel" -GTR#GTR000510871.10 "Sudden Death Syndrome NGS Panel" -GTR#GTR000510871.2 "Sudden Death Syndrome NGS Panel" -GTR#GTR000510871.3 "Sudden Death Syndrome NGS Panel" -GTR#GTR000510871.4 "Sudden Death Syndrome NGS Panel" -GTR#GTR000510871.5 "Sudden Death Syndrome NGS Panel" -GTR#GTR000510871.6 "Sudden Death Syndrome NGS Panel" -GTR#GTR000510871.7 "Sudden Death Syndrome NGS Panel" -GTR#GTR000510871.8 "Sudden Death Syndrome NGS Panel" -GTR#GTR000510871.9 "Sudden Death Syndrome NGS Panel" -GTR#GTR000510913.1 "Short Stature NGS Panel" -GTR#GTR000510913.2 "Short Stature NGS Panel" -GTR#GTR000510913.3 "Short Stature NGS Panel" -GTR#GTR000510913.4 "Short Stature NGS Panel" -GTR#GTR000510913.5 "Short Stature NGS Panel" -GTR#GTR000510913.6 "Short Stature NGS Panel" -GTR#GTR000510913.7 "Short Stature NGS Panel" -GTR#GTR000510913.8 "Short Stature NGS Panel" -GTR#GTR000510913.9 "Short Stature NGS Panel" GTR#GTR000510914.1 "Kidney Renal Cancer NGS Panel" GTR#GTR000510914.2 "Kidney Renal Cancer NGS Panel" GTR#GTR000510914.3 "Kidney Renal Cancer NGS Panel" @@ -1023,12 +923,6 @@ GTR#GTR000512417.3 "Inflammatory Bowel Disease: Sequencing Panel" GTR#GTR000512417.4 "Early Onset Inflammatory Bowel Disease: Sequencing Panel" GTR#GTR000512421.1 "Noonan Syndrome and Related Disorders: Sequencing Panel" GTR#GTR000512423.1 "Proportionate Short Stature/Small for Gestational Age: Sequencing and Deletion/Duplication Panel" -GTR#GTR000512587.1 "Autism Panel: Tier 2" -GTR#GTR000512587.2 "Autism Panel: Tier 2" -GTR#GTR000512587.3 "Autism Panel: Tier 2" -GTR#GTR000512587.4 "Autism Panel: Tier 2" -GTR#GTR000512587.5 "Autism Panel: Tier 2" -GTR#GTR000512587.6 "Autism Spectrum Disorders: Tier 2 Panel" GTR#GTR000512594.1 "Connective Tissue Disorders: Sequencing Panel" GTR#GTR000512594.2 "Connective Tissue Disorders: Sequencing Panel" GTR#GTR000512594.3 "Connective Tissue Disorders: Sequencing Panel" @@ -1100,11 +994,6 @@ GTR#GTR000514731.1 "PMS2 Full Gene Analysis" GTR#GTR000514731.2 "PMS2 Full Gene Sequencing" GTR#GTR000514731.3 "PMS2 Full Gene Sequencing" GTR#GTR000514731.4 "PMS2 Full Gene Sequencing" -GTR#GTR000514882.1 "devSEEK Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" -GTR#GTR000514882.2 "devSEEK Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" -GTR#GTR000514882.3 "devSEEK Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" -GTR#GTR000514882.4 "devSEEK Next Generation Sequencing panel focused on genes implicated in Developmental Delay, Intellectual Disability and Autism Spectrum Disorders" -GTR#GTR000514882.5 "devSEEK Sequence Analysis for Neurodevelopmental Disorders" GTR#GTR000514883.1 "BRAF Full Gene Sequencing" GTR#GTR000514883.2 "BRAF Full Gene Sequencing" GTR#GTR000514883.3 "BRAF Full Gene Sequencing" @@ -1242,10 +1131,6 @@ GTR#GTR000515879.1 "Chromosomal Instability Syndromes NGS Panel" GTR#GTR000515879.2 "Chromosomal Instability Syndromes NGS Panel" GTR#GTR000515879.3 "Chromosomal Instability Syndromes NGS Panel" GTR#GTR000515879.4 "Chromosomal Instability Syndromes NGS Panel" -GTR#GTR000515895.1 "Hypertrophic Cardiomyopathy NGS Panel" -GTR#GTR000515895.2 "Hypertrophic Cardiomyopathy NGS Panel" -GTR#GTR000515895.3 "Hypertrophic Cardiomyopathy NGS Panel" -GTR#GTR000515895.4 "Hypertrophic Cardiomyopathy NGS Panel" GTR#GTR000516046.1 "BARD1" GTR#GTR000516046.2 "BARD1" GTR#GTR000516070.1 "ATR" @@ -1503,8 +1388,6 @@ GTR#GTR000521954.6 "Invitae Breast and Gyn Cancers Guidelines-Based Panel" GTR#GTR000521955.1 "BARD1-related cancer risk" GTR#GTR000521957.1 "MRE11A-related cancer risk" GTR#GTR000521958.1 "RAD50-related cancer risk" -GTR#GTR000522151.1 "Cockayne syndrome" -GTR#GTR000522151.2 "Cockayne syndrome (ERCC6)" GTR#GTR000522151.3 "ERCC6 Gene Sequencing" GTR#GTR000522151.4 "ERCC6 Gene Sequencing" GTR#GTR000522151.5 "ERCC6 Gene Sequencing" @@ -1517,12 +1400,6 @@ GTR#GTR000522162.1 "Ashkenazi Jewish (BRCA1 and BRCA2) 3 Mutations" GTR#GTR000522243.1 "BRCA Screen" GTR#GTR000522278.1 "Breast and Ovarian Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 20 Genes" GTR#GTR000522278.2 "Breast and Ovarian Hereditary Cancer Panel, Sequencing and Deletion/Duplication, 20 Genes" -GTR#GTR000522326.1 "Seckel Syndrome NGS Panel" -GTR#GTR000522326.2 "Seckel Syndrome NGS Panel" -GTR#GTR000522326.3 "Seckel Syndrome NGS Panel" -GTR#GTR000522326.4 "Seckel Syndrome NGS Panel" -GTR#GTR000522326.5 "Seckel Syndrome NGS Panel" -GTR#GTR000522326.6 "Seckel Syndrome NGS Panel" GTR#GTR000522334.1 "Parkinson Disease, Early Onset NGS Panel" GTR#GTR000522334.2 "Parkinson Disease, Early Onset NGS Panel" GTR#GTR000522334.3 "Parkinson Disease, Early Onset NGS Panel" @@ -1586,43 +1463,12 @@ GTR#GTR000523295.3 "Ashkenazi Jewish: BRCA Targeted Mutation Panel" GTR#GTR000523311.1 "Diffuse Gastric Cancer Syndrome: CDH1 Gene Sequencing" GTR#GTR000523311.2 "Diffuse Gastric Cancer Syndrome: CDH1 Gene Sequencing" GTR#GTR000523311.3 "Diffuse Gastric Cancer Syndrome: CDH1 Gene Sequencing" -GTR#GTR000523331.1 "Cardiofaciocutaneous Syndrome Panel" -GTR#GTR000523331.2 "Cardiofaciocutaneous Syndrome Panel" -GTR#GTR000523331.3 "Cardiofaciocutaneous Syndrome Panel" -GTR#GTR000523331.4 "Cardiofaciocutaneous Syndrome Panel" -GTR#GTR000523331.5 "Cardiofaciocutaneous Syndrome Panel" -GTR#GTR000523331.6 "Cardiofaciocutaneous Syndrome Panel" -GTR#GTR000523332.1 "Noonan Syndrome Panel" -GTR#GTR000523332.2 "Noonan Syndrome Panel" -GTR#GTR000523332.3 "Noonan Syndrome Panel" -GTR#GTR000523332.4 "Noonan Syndrome Panel" -GTR#GTR000523332.5 "Noonan Syndrome Panel" -GTR#GTR000523332.6 "Noonan Syndrome Panel" GTR#GTR000523334.1 "Noonan Syndrome and related disorders (RASopathies) Panel" GTR#GTR000523334.2 "Noonan Syndrome and related disorders (RASopathies) Panel" GTR#GTR000523334.3 "Noonan Syndrome and related disorders (RASopathies) Panel" GTR#GTR000523334.4 "Noonan Syndrome and related disorders (RASopathies) Panel" GTR#GTR000523334.5 "Noonan Syndrome and related disorders (RASopathies) Panel" GTR#GTR000523334.6 "Noonan Syndrome and related disorders (RASopathies) Panel" -GTR#GTR000523358.1 "Familial Thoracic Aortic Aneurysm NGS Panel" -GTR#GTR000523358.2 "Familial Thoracic Aortic Aneurysm NGS Panel" -GTR#GTR000523358.3 "Familial Thoracic Aortic Aneurysm NGS Panel" -GTR#GTR000523358.4 "Familial Thoracic Aortic Aneurysm NGS Panel" -GTR#GTR000523358.5 "Familial Thoracic Aortic Aneurysm NGS Panel" -GTR#GTR000523358.6 "Familial Thoracic Aortic Aneurysm NGS Panel" -GTR#GTR000523359.1 "Marfan Syndrome NGS Panel" -GTR#GTR000523359.2 "Marfan Syndrome NGS Panel" -GTR#GTR000523359.3 "Marfan Syndrome NGS Panel" -GTR#GTR000523359.4 "Marfan Syndrome NGS Panel" -GTR#GTR000523359.5 "Marfan Syndrome NGS Panel" -GTR#GTR000523359.6 "Marfan Syndrome NGS Panel" -GTR#GTR000523360.1 "Loeys-Dietz Syndrome NGS Panel" -GTR#GTR000523360.2 "Loeys-Dietz Syndrome NGS Panel" -GTR#GTR000523360.3 "Loeys-Dietz Syndrome NGS Panel" -GTR#GTR000523360.4 "Loeys-Dietz Syndrome NGS Panel" -GTR#GTR000523360.5 "Loeys-Dietz Syndrome NGS Panel" -GTR#GTR000523360.6 "Loeys-Dietz Syndrome NGS Panel" -GTR#GTR000523360.7 "Loeys-Dietz Syndrome NGS Panel" GTR#GTR000523563.1 "nucSEEK Focus" GTR#GTR000523563.2 "nucSEEK Focus" GTR#GTR000523563.3 "nucSEEK Focus" @@ -2315,7 +2161,6 @@ GTR#GTR000560652.1 "TumorNext-HRD" GTR#GTR000560652.2 "TumorNext-HRD" GTR#GTR000560657.1 "TumorNext-Lynch+OvaNext" GTR#GTR000560657.2 "TumorNext-Lynch+OvaNext" -GTR#GTR000560682.1 "Craniofacial Deletion/Duplication Panel" GTR#GTR000560743.1 "Hereditary Breast and Ovarian Cancer Syndrome: BRCA1/BRCA2 Deletion/Duplication Panel" GTR#GTR000560744.1 "Hereditary Breast and Ovarian Cancer Syndrome: BRCA1/BRCA2 Gene Sequencing and Deletion/Duplication Panel" GTR#GTR000560745.1 "Hereditary Breast and Ovarian Cancer Syndrome: BRCA1/BRCA2 Gene Sequencing Panel" diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index 91aade84..0b848b18 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -45,15 +45,18 @@ Based on: ProcedurePerformed Description: "A radiation oncology procedure. If the treatment is part of a course of treatment, the PartOf attribute should indicate the CourseOfTreatment." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" ProcedureCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - 0..1 RadiationModality + Method from RadiationModalityVS + // 0..1 RadiationModality 0..1 RadiationDosePerFraction 0..1 RadiationFractionsDelivered 0..1 TotalRadiationDoseDelivered +/* Element: RadiationModality Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" Description: "A specific manner, characteristic, pattern of application or the employment of, a method of treatment involving radiation, especially involving the physical treatment of a condition." Value: CodeableConcept from RadiationModalityVS +*/ Element: RadiationDosePerFraction Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes From 11c70c5597f5badb29e20ff9dba3cd833f3c3525 Mon Sep 17 00:00:00 2001 From: May Terry Date: Wed, 19 Dec 2018 14:26:54 -0500 Subject: [PATCH 157/289] RadiationModality - changed back @rutemartins - on review with @markkramerus - turns out that Procedure method is not in DSTU2, so RadiationModality stays as-is. --- spec/shr_intervention.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index 0b848b18..9ce7d1a7 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -46,17 +46,16 @@ Description: "A radiation oncology procedure. If the treatment is part of a c Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" ProcedureCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" Method from RadiationModalityVS - // 0..1 RadiationModality + 0..1 RadiationModality 0..1 RadiationDosePerFraction 0..1 RadiationFractionsDelivered 0..1 TotalRadiationDoseDelivered -/* + Element: RadiationModality Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" Description: "A specific manner, characteristic, pattern of application or the employment of, a method of treatment involving radiation, especially involving the physical treatment of a condition." Value: CodeableConcept from RadiationModalityVS -*/ Element: RadiationDosePerFraction Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes From 61907eaccf00bae1d3e2e9d674389f0e89308334 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 19 Dec 2018 15:41:34 -0500 Subject: [PATCH 158/289] Fixups on IG --- spec/shr_adverse.txt | 2 +- spec/shr_adverse_vs.txt | 6 ++-- spec/shr_base_finding.txt | 2 ++ spec/shr_base_map_dstu2.txt | 1 + spec/shr_brca_vs.txt | 9 ++--- spec/shr_core.txt | 2 +- spec/shr_entity.txt | 2 +- spec/shr_genetics.txt | 37 +++++++++---------- spec/shr_intervention.txt | 16 +++------ spec/shr_intervention_vs.txt | 10 +++--- spec/shr_oncocore.txt | 62 +++++++++++++++----------------- spec/shr_oncocore_stage.txt | 48 ++++++++++++++----------- spec/shr_oncocore_vs.txt | 8 ++++- spec/shr_procedure.txt | 1 - spec/shr_procedure_map_dstu2.txt | 3 ++ spec/shr_procedure_map_stu3.txt | 4 +++ spec/shr_tumor.txt | 15 ++++++++ 17 files changed, 125 insertions(+), 103 deletions(-) diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt index 472ae682..968e799c 100644 --- a/spec/shr_adverse.txt +++ b/spec/shr_adverse.txt @@ -80,4 +80,4 @@ EntryElement: ToxicAdverseDrugReaction Based on: AdverseDrugReaction Concept: MTH#C0542243 Description: "A grade 3 or 4 adverse reaction to medication, radiation treatment, or other therapy." - Seriousness from ToxicSeriousnessVS \ No newline at end of file + Seriousness from ToxicSeriousnessVS diff --git a/spec/shr_adverse_vs.txt b/spec/shr_adverse_vs.txt index 48144d55..831f1237 100644 --- a/spec/shr_adverse_vs.txt +++ b/spec/shr_adverse_vs.txt @@ -28,9 +28,9 @@ Description: "Whether the adverse event is attributed to a treatment, course of ValueSet: ToxicSeriousnessVS Description: "Grade of adverse event at severe or higher grade." -MTH#C1519275 "Severe Adverse Event. Daily activity is markedly reduced; some assistance usually required; medical intervention/therapy required, hospitalization or hospice care possible." -MTH#C1517874 "Potentially Life-Threatening Adverse Event. Extreme limitation to daily activity, significant assistance required; significant medical intervention/therapy, hospitalization or hospice care very likely." -MTH#C1559081 "Fatal Adverse Event. Adverse event associated with death" +SCT#24484000 "Severe Adverse Event. Daily activity is markedly reduced; some assistance usually required; medical intervention/therapy required, hospitalization or hospice care possible." +SCT#442452003 "Potentially Life-Threatening Adverse Event. Extreme limitation to daily activity, significant assistance required; significant medical intervention/therapy, hospitalization or hospice care very likely." +SCT#399166001 "Fatal Adverse Event. Adverse event associated with death." ValueSet: ManifestationVS Description: "An observable sign or symptom of an underlying physical or psychological cause." diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index b28b577b..e6c9d1b7 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -209,6 +209,8 @@ Description: "A set of independent but related observations that are often pr 0..0 FindingResult // true panel composed of observations only 0..0 NonIndependentFinding // true panel composed of observations only 0..0 AnatomicalLocation +0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated +0..0 AnatomicalLocation.AnatomicalLocationStructured 0..0 Specimen 0..0 Device diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index a0b26081..5d63a26d 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -51,6 +51,7 @@ Observation maps to Observation: //NonIndependentFinding.Interpretation maps to component.interpretation NonIndependentFinding.ReferenceRange maps to component.referenceRange fix related.type to #has-member + PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) FindingResult maps to value[x] ExceptionValue maps to dataAbsentReason diff --git a/spec/shr_brca_vs.txt b/spec/shr_brca_vs.txt index a480e255..35c0be5d 100644 --- a/spec/shr_brca_vs.txt +++ b/spec/shr_brca_vs.txt @@ -97,6 +97,7 @@ Description: "The morphologic behavior of the cancer. These are the suffix to th #6 "Malignant, metastatic site" #9 "Malignant, uncertain whether primary or metastatic site" +/* no longer used ValueSet: StagingMethodVS Description: "The methodology or standard used to assign the cancer's overall stage." #ajcc_v7 "AJCC Cancer Staging Manual 7th Edition" @@ -105,13 +106,7 @@ Description: "The methodology or standard used to assign the cancer's overall st #seer_ss77 "SEER Summary Stage 1977" #seer_ss00 "SEER Summary Stage 2000" #seer_ss18 "SEER Summary Stage 2018" - -ValueSet: StageTimingPrefixVS -Description: "When staging was done, relative to treatment events (qualifier)." -#cli "Clinical stage: Staging performed prior to surgery, based on evidence such as physical examination, imaging, and/or biopsy." -#path "Pathologic stage: Staging performed based on examination of tissue samples removed during surgery, in addition to physical examination and imaging." -#postther_cli "Post-therapeutic (post-neoadjuvant) clinical staging based on clinical examination after the first treatment with systemic drugs or radiation, when no surgery has been performed." -#postther_path "Post-therapeutic (post-neoadjuvant) pathologic staging, based on tissue samples removed during surgery after the first treatment with systemic drugs or radiation." +*/ ValueSet: NottinghamCombinedGradeVS Description: "Combined score from the Nottingham grading system." diff --git a/spec/shr_core.txt b/spec/shr_core.txt index abadc5d6..f7f82050 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -738,7 +738,7 @@ Value: CodeableConcept from http://hl7.org/fhir/ValueSet/route-codes Element: AnatomicalLocation Concept: SCT#758637006 "Anatomical location (property) (qualifier value)" Description: "A location or structure in the body, including tissues, regions, cavities, and spaces; for example, right elbow, or left ventricle of the heart." -Value: AnatomicalLocationPrecoordinated or AnatomicalLocationStructured +Value: 0..1 AnatomicalLocationPrecoordinated or AnatomicalLocationStructured Element: AnatomicalLocationPrecoordinated Concept: TBD diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index ebf39471..1b2eed32 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -458,7 +458,7 @@ Description: "A person relevant to the health or social situation of the subject Description: "Additional information about a person's use of language." Value: CodeableConcept from LanguageQualifierVS - Element: DeathInformation + EntryElement: DeathInformation Concept: MTH#C0011065 Description: "An indication that the person is no longer living, given by a date, time of death, or a boolean value which, when true, indicates the person is deceased." 1..1 IsDeceased diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index f4fa4f4b..330e0704 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -1,33 +1,33 @@ Grammar: DataElement 5.0 Namespace: oncocore -Description: "Genetics." +Description: "Genetic tests and results." Uses: shr.core, shr.base, shr.entity CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org -CodeSystem: MTH = http://ncimeta.nci.nih.gov -CodeSystem: UCUM = http://unitsofmeasure.org /* - **** Modeling individual biomarkers does not scale. - * Markers can apply to multiple cancer types, and potentially other non-cancer diseases. - * Must model this in a way that constrains biomarkers by cancer type in each value set. + Modeling individual biomarkers does not scale. + Markers can apply to multiple cancer types, and potentially other non-cancer diseases. + Must model this in a way that constrains biomarkers by cancer type in each value set. */ + EntryElement: GeneticMarkerAnalysisResult Based on: LaboratoryObservation -Concept: MTH#C0017393 // should be a finding (Q+A), not an observable +Concept: SCT#20889005 "Genetic marker function (observable entity)" Description: "A finding with respect to variation in a segment of DNA with an identifiable physical location on a chromosome." - FindingTopicCode is MTH#C0017393 "A segment of DNA with an identifiable physical location on a chromosome and whose inheritance can be followed. (source: NCI Metathesaurus)" -0..0 FindingResult // panel, no numerical or coded result + FindingTopicCode is SCT#20889005 "Genetic marker function (observable entity)" +0..0 FindingResult 0..0 SpecificFocusOfFinding -// What gene are we looking at? 0..1 GenomicSourceClass -0..1 GeneName +0..1 GeneName 0..1 DNARegionName 0..1 DNASequenceVariantName 0..1 DNASequenceVariantId 0..1 DNASequenceVariantType 0..0 AnatomicalLocation +0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated +0..0 AnatomicalLocation.AnatomicalLocationStructured 0..0 PanelMembers Element: GenomicSourceClass @@ -50,33 +50,34 @@ Element: DNASequenceVariantName Based on: NonIndependentFinding Concept: LNC#48004-6 "DNA change (c.HGVS)" Description: "Human Genome Variation Society (HGVS) nomenclature for a single DNA marker. The use of the nomenclature must be extended to describe non-variations (aka. wild types) see samples for wild type examples. (source: LOINC)" - FindingTopicCode is LNC#48004-6 "DNA change (c.HGVS)" - FindingResult value is type string +Value: string Element: DNASequenceVariantId Based on: NonIndependentFinding Concept: LNC#48003-8 "DNA sequence variation identifier [Identifier]" Description: "A DNA Marker identifier conveys a universal or standard repository identifier for definitive characterstics of a DNA Marker. (recommend using NCBI dbSNP ids - rs#) (source: LOINC)" - FindingTopicCode is LNC#48003-8 "DNA sequence variation identifier [Identifier]" - FindingResult value is type string +Value: string Element: DNASequenceVariantType Based on: CodedNonIndependentFinding Concept: LNC#48005-3 "DNA change type" Description: "Codified type for associated DNA Marker. DNA Marker's use the HGVS notation which implies the DNA Marker Type, but the concurrent use of this code will allow a standard and explicit type for technical and display convenience." - FindingTopicCode is LNC#48005-3 "DNA change type" - FindingResult from DNAChangeTypeVS +Value: CodeableConcept from DNAChangeTypeVS EntryElement: TumorMarker Based on: CodedLaboratoryObservation Concept: LNC#21924-6 "Tumor marker Cancer" -Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Diectionary). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." +Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Dictionary). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." FindingTopicCode is LNC#21924-6 "Tumor marker Cancer" FindingResult from TumorMarkerVS // should we populate TumorMarkerVS with the list of all possible tumor markers? 0..0 NonIndependentFinding 0..0 AnatomicalLocation +0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated +0..0 AnatomicalLocation.AnatomicalLocationStructured 0..0 PanelMembers // each cancer type can further narrow the value set of tumor markers as needed. +0..0 Device + /* Element: TumorMarkerName Concept: LNC#TBD "TBD" diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index 91aade84..f52c5426 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -12,7 +12,7 @@ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category CodeSystem: RXN = http://www.nlm.nih.gov/research/umls/rxnorm - +/* Not needed yet in MCODE 0.5 EntryElement: CourseOfTreatmentPerformed Based on: ProcedurePerformed // mlt: questionable to call CourseOfTreatment a procedure. It is modeled as a series of activities including medications administered and procedures. Description: "A series of coordinated treatment actions taken with a certain treatment intention." @@ -23,7 +23,7 @@ Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure 0..* MedicationStatement // mlt: to cover patient-asserted medications taken at home. 0..* MedicationAdministered // mlt: to cover clinician-administered meds in a clinical setting. 0..* SurgicalProcedurePerformed - 0..* RadiationTreatmentPerformed + 0..* RadiationProcedurePerformed 0..* AnatomicalLocation // anatomical location is given in the individual actions 0..0 Device 0..0 Location @@ -38,23 +38,17 @@ Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure Description: "The sequence of therapies administered to a patient." Concept: MTH#C133518 "Line of Therapy" // TODO: Need new LOINC and SNOMED codes Value: CodeableConcept from LineOfTherapyVS +*/ - -EntryElement: RadiationTreatmentPerformed +EntryElement: RadiationProcedurePerformed Based on: ProcedurePerformed Description: "A radiation oncology procedure. If the treatment is part of a course of treatment, the PartOf attribute should indicate the CourseOfTreatment." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - ProcedureCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - 0..1 RadiationModality + ProcedureCode from RadiationProcedurePerformedVS 0..1 RadiationDosePerFraction 0..1 RadiationFractionsDelivered 0..1 TotalRadiationDoseDelivered -Element: RadiationModality -Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" -Description: "A specific manner, characteristic, pattern of application or the employment of, a method of treatment involving radiation, especially involving the physical treatment of a condition." -Value: CodeableConcept from RadiationModalityVS - Element: RadiationDosePerFraction Concept: TBD#TBD // TODO: Needs new LOINC and/or SNOMED codes Description: "The total number of treatment sessions (fractions) administered during a course of radiation therapy therapy. A fraction is a portion of the total radiation dose, delivered as a series of treatments that make up the full course of radiotherapy. (source: LOINC)" diff --git a/spec/shr_intervention_vs.txt b/spec/shr_intervention_vs.txt index 7a5b7a2d..84885fe6 100644 --- a/spec/shr_intervention_vs.txt +++ b/spec/shr_intervention_vs.txt @@ -16,13 +16,13 @@ MTH#C133522 "Fourth-Line Therapy" // TODO: Need new LOINC and SNOMED c ValueSet: TreatmentIntentVS Description: "The intended result from a given treatment. Examples include curative, palliative, and supportive." -SCT#373808002 "Curative - procedure intent (qualifier value)" -SCT#399707004 "Supportive - procedure intent (qualifier value)" -SCT#363676003 "Palliative - procedure intent (qualifier value)" +Includes codes descending from SCT#363675004 "Intents (nature of procedure values) (qualifier value)" +//SCT#373808002 "Curative - procedure intent (qualifier value)" +//SCT#399707004 "Supportive - procedure intent (qualifier value)" +//SCT#363676003 "Palliative - procedure intent (qualifier value)" -ValueSet: RadiationModalityVS +ValueSet: RadiationProcedurePerformedVS Description: "Radiation oncology AND/OR radiotherapy (procedure)" Includes codes descending from SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - diff --git a/spec/shr_oncocore.txt b/spec/shr_oncocore.txt index 6bc35d52..0cdbdc2c 100644 --- a/spec/shr_oncocore.txt +++ b/spec/shr_oncocore.txt @@ -1,21 +1,21 @@ -Grammar: DataElement 5.0 -Namespace: oncocore +Grammar: DataElement 5.0 +Namespace: oncocore Description: "SHR implementation of ASCO requirements." -Uses: shr.core, shr.base, shr.entity +Uses: shr.core, shr.base, shr.entity CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org -CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: UCUM = http://unitsofmeasure.org EntryElement: CancerDisorderPresent -Based on: ConditionPresentAssertion -Description: "The presence of malignant neoplastic disease, in which abnormal cells divide without control and can invade nearby tissues." +Based on: ConditionPresentAssertion Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" +Description: "The presence of malignant neoplastic disease, in which abnormal cells divide without control and can invade nearby tissues." FindingTopicCode from CancerDisorderVS // StageInformation.StageSummary from http://loinc.org/vs/LL240-3 // Commented out because LL240-3 only applies to TNM stage group - is this correct? - StageInformation.StageDetail value is type CancerStagePanel + StageInformation.StageDetail value is type CancerStagePanel // 0..1 MorphologyBehavior from MorphologyBehaviorVS //Not carried over from BrCa because it was intended to break out behavior codes from ICD-O-3, and we are no longer using it. @@ -27,7 +27,9 @@ Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LO FindingResult from CancerHistologicTypeVS FindingTopicCode is SCT#371441004 "Histologic type (observable entity)" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) -0..0 AnatomicalLocation +0..0 AnatomicalLocation +0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated +0..0 AnatomicalLocation.AnatomicalLocationStructured 0..0 Device @@ -39,27 +41,13 @@ Concept: LNC#21858-6 "Grade Cancer" FindingResult from http://loinc.org/vs/LL213-0 FindingTopicCode is LNC#21858-6 "Grade Cancer" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) -0..0 AnatomicalLocation +0..0 AnatomicalLocation +0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated +0..0 AnatomicalLocation.AnatomicalLocationStructured 0..0 Device +0..0 PanelMembers - -EntryElement: TumorPresent -Based on: BodyStructurePresent -Concept: SCT#395557000 "Tumor finding (finding)" -Description: "The presence of an abnormal mass of tissue (neoplasm) that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). (source: NCI Dictionary)." - FindingTopicCode from TumorMorphologyVS -// note - like other existential findings, the topic code is WHAT is present or absent, and the result code is present or absent (in this case, present) -0..1 IsPrimaryTumor -// TODO: Add tumor size - - - Element: IsPrimaryTumor - Concept: TBD - Description: "Whether the tumor is the original or first tumor in the body, for a particular cancer." - Value: CodeableConcept from YesNoUnknownVS // could be boolean but this VS allows for unknown - - -EntryElement: CancerProgression +EntryElement: CancerProgression // aka DiseaseStatus Based on: CodedNonLaboratoryObservation Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" Concept: SCT#246453008 "Course of illness (attribute)" @@ -68,12 +56,16 @@ Concept: SCT#246453008 "Course of illness (attribute)" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) // CancerProgressionEvidence is not yet part of M-CODE, but I don't see a better way to include it for FluxNotes 0..* CancerProgressionEvidence -0..0 AnatomicalLocation +0..0 AnatomicalLocation +0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated +0..0 AnatomicalLocation.AnatomicalLocationStructured 0..0 Device +0..0 PanelMembers +0..0 NonIndependentFinding - Element: CancerProgressionEvidence + Element: CancerProgressionEvidence Description: "The type of evidence considered in determining disease progression." - Value: CodeableConcept from CancerProgressionEvidenceVS + Value: CodeableConcept from CancerProgressionEvidenceVS /**** replaced by Onset of CancerDisorderPresent @@ -97,7 +89,9 @@ Concept: LNC#89247-1 "ECOG Performance Status score" FindingResult value is type IntegerQuantity //0..0 ReferenceRange // set to 0 to 5 0..0 SpecificFocusOfFinding -0..0 AnatomicalLocation +0..0 AnatomicalLocation +0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated +0..0 AnatomicalLocation.AnatomicalLocationStructured 0..0 Device Interpretation from http://loinc.org/vs/LL529-9 @@ -105,9 +99,11 @@ EntryElement: KarnofskyPerformanceStatus Based on: SimpleNonLaboratoryObservation Description: "The Karnofsky Performance Status (KPS) is a tool used to measure a patient's functional status. It can be used to compare the effectiveness of different therapies and to help assess the prognosis of certain patients, such as those with certain cancers. The KPS score ranges from 0 to 100. Higher scores are associated with better functional status, with 100 representing no symptoms or evidence of disease, and 0 representing death [PMID: 23870327] . This panel contains LOINC terms to report the KPS score [LOINC: 89243-0] and its interpretation [LOINC: 89245-5]." Concept: LNC#89243-0 "Karnofsky Performance Status panel" - FindingResult value is type IntegerQuantity + FindingResult value is type IntegerQuantity // THIS ISN'T WORKING! 0..0 SpecificFocusOfFinding -0..0 AnatomicalLocation +0..0 AnatomicalLocation +0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated +0..0 AnatomicalLocation.AnatomicalLocationStructured 0..0 Device // ReferenceRange.Range.LowerBound.Quantity.Number is 0.0 // ReferenceRange.Range.LowerBound.Quantity.Units is UCUM#1 diff --git a/spec/shr_oncocore_stage.txt b/spec/shr_oncocore_stage.txt index b0d6df19..5bef92f5 100644 --- a/spec/shr_oncocore_stage.txt +++ b/spec/shr_oncocore_stage.txt @@ -19,11 +19,16 @@ Concept: TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set t Description: "A suffix used in conjuction with certain cancer stage categories, usually qualifying how the category value was determined." Value: CodeableConcept from CancerStageSuffixVS // local value set created +Element: CancerStagingSystem +Based on: FindingMethod +Concept: SCT#260713006 "Method of Staging (attribute)" +Value: CodeableConcept from CancerStagingSystemVS if covered + Abstract Element: CancerStagePanel Based on: HeadlessPanel Description: "A panel that contains cancer staging information. This abstract class is the parent of panels containing information related to clinical and pathologic staging." 0..1 CancerStageTiming -0..1 FindingMethod from CancerStagingSystemVS if covered +0..1 FindingMethod is type CancerStagingSystem SpecificFocusOfFinding value is type ref(CancerDisorderPresent) Abstract Element: CancerStagePanelMember @@ -31,7 +36,7 @@ Based on: CodedNonLaboratoryObservation Description: "Abstract parent class for members of cancer staging panels. Cancer panel members must include a timing element and staging system, and focus on a cancer disorder. Specific realizations will have value sets specific to certain staging systems." SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 1..1 CancerStageTiming -0..1 FindingMethod from CancerStagingSystemVS if covered +0..1 FindingMethod is type CancerStagingSystem 0..0 AnatomicalLocation 0..0 ReferenceRange 0..0 NonIndependentFinding @@ -42,7 +47,7 @@ Abstract Element: TNMStagePanelMember Based on: CancerStagePanelMember Description: "Abstract partent class for TNM staging panel members. Includes a stage suffix and TNM staging system." 0..1 CancerStageSuffix - FindingMethod from TNMTumorStagingSystemVS if covered + CancerStagingSystem from TNMTumorStagingSystemVS if covered EntryElement: TNMClinicalPrognosticStagePanel @@ -59,33 +64,33 @@ Description: "A panel of staging information that is performed prior to surge includes 0..1 TNMClinicalDistantMetastasesClassification EntryElement: TNMClinicalStageGroup - Based on: CancerStagePanelMember + Based on: TNMStagePanelMember Concept: LNC#21908-9 "Stage group.clinical Cancer" - Description: "TBD" + Description: "The overall stage of the cancer, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies. (adapted from NCI Dictionary of Cancer Terms)." FindingTopicCode is LNC#21908-9 "Stage group.clinical Cancer" FindingResult from http://loinc.org/vs/LL240-3 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" EntryElement: TNMClinicalPrimaryTumorClassification - Based on: CancerStagePanelMember + Based on: TNMStagePanelMember Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" - Description: "Detailed site-specific codes for the clinical tumor (T) as defined by AJCC and recorded by the physician." + Description: "Classification based on the size and extent of the primary tumor." FindingTopicCode is LNC#21905-5 "Primary tumor.clinical [Class] Cancer" FindingResult from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" EntryElement: TNMClinicalRegionalNodesClassification - Based on: CancerStagePanelMember + Based on: TNMStagePanelMember Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" - Description: "" //TODO: pull from LOINC + Description: "The presence of metastases in regional lymph nodes, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies. (adapted from NCI Dictionary of Cancer Terms)" FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" FindingResult from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" EntryElement: TNMClinicalDistantMetastasesClassification - Based on: CancerStagePanelMember + Based on: TNMStagePanelMember Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" - Description: "" //TODO: pull from LOINC + Description: "The presence of metastases in remote anatomical locations, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies." FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" FindingResult from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" @@ -100,20 +105,21 @@ Description: "A panel of staging information that is based on examination of CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" PanelMembers.Observation includes 0..1 TNMPathologicStageGroup - includes 0..1 TNMPathologicPrimaryTumorClassification - includes 0..1 TNMPathologicRegionalNodesClassification - includes 0..1 TNMPathologicDistantMetastasesClassification +// TNM are not part of MCODE, but may be useful. TODO: How to we indicate that stage group is in MCODE, and T, N, M are not? +// includes 0..1 TNMPathologicPrimaryTumorClassification +// includes 0..1 TNMPathologicRegionalNodesClassification +// includes 0..1 TNMPathologicDistantMetastasesClassification EntryElement: TNMPathologicStageGroup - Based on: CancerStagePanelMember + Based on: TNMStagePanelMember Concept: LNC#21902-2 "Stage group.pathology Cancer" - Description: "Detailed site-specific codes for the pathologic stage group as defined by AJCC and recorded by the physician. Pathologic, clinical, and other stage data are given three separate areas in the NAACCR Data Exchange Record Layout." + Description: "The presence of metastases in regional lymph nodes, obtained through pathologic analysis of a tumor specimen, and classified based on criteria defined by the staging system." FindingTopicCode is LNC#21902-2 "Stage group.pathology Cancer" FindingResult from http://loinc.org/vs/LL234-6 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" - +/* EntryElement: TNMPathologicPrimaryTumorClassification - Based on: CancerStagePanelMember + Based on: TNMStagePanelMember Concept: LNC#21899-0 "Primary tumor.pathology Cancer" Description: "TODO: pull from LOINC" //TODO: pull from LOINC FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" @@ -121,7 +127,7 @@ Description: "A panel of staging information that is based on examination of CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" EntryElement: TNMPathologicRegionalNodesClassification - Based on: CancerStagePanelMember + Based on: TNMStagePanelMember Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" Description: "TODO: pull from LOINC" //TODO: pull from LOINC FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" @@ -129,11 +135,11 @@ Description: "A panel of staging information that is based on examination of CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" EntryElement: TNMPathologicDistantMetastasesClassification - Based on: CancerStagePanelMember + Based on: TNMStagePanelMember Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" Description: "TODO: pull from LOINC" //TODO: pull from LOINC FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative FindingResult from http://loinc.org/vs/LL3137-8 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" - +*/ diff --git a/spec/shr_oncocore_vs.txt b/spec/shr_oncocore_vs.txt index 6f12555c..c00b1879 100644 --- a/spec/shr_oncocore_vs.txt +++ b/spec/shr_oncocore_vs.txt @@ -50,7 +50,13 @@ Includes codes descending from SCT#254292007 "Tumor staging (tumor staging)" //T ValueSet: TNMTumorStagingSystemVS // TODO: Need to include version of staging system (this is not sufficient) Description: "System used for TNM classification." -Includes codes descending from SCT#254293002 "Tumor-node-metastasis (TNM) tumor staging system (tumor staging)" +// RM 12/19/2018: < SCT#254293002 includes content from SCT that is at best misguided, at worst incorrect. The terms focus on the cancer type (prostate, breast) rather the edition of the TNM staging system. +//Includes codes descending from SCT#254293002 "Tumor-node-metastasis (TNM) tumor staging system (tumor staging)" + SCT#444256004 "American Joint Commission on Cancer, Cancer Staging Manual, 6th edition neoplasm staging system (tumor staging)" + SCT#443830009 "American Joint Commission on Cancer, Cancer Staging Manual, 7th edition neoplasm staging system (tumor staging)" + #AJCC8 "American Joint Commission on Cancer, Cancer Staging Manual, 8th edition neoplasm staging system (tumor staging)" + SCT#258235000 "International Union Against Cancer (tumor staging)" + ValueSet: CancerStageSuffixVS Description: "Modifiers related to the staging category. Examples of modifiers include the type of procedure performed in determining the pathological node classification. The staging suffix notation is the abbreviation enclosed by parentheses. For example, CN1a(sn) where (sn) designates that the N category was identified based on a sentinel node biopsy." diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 5cd02275..7e7b93e5 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -19,7 +19,6 @@ Description: "A procedure that has been performed." //0..* InputFinding //0..* Indication 0..* ref(Device) -0..1 Location Participation.OnBehalfOf value is type ref(Organization) Status // must be from http://hl7.org/fhir/ValueSet/event-status // Participation.Participant.EntityOrRole is type ref(Practitioner) diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index eb91250b..30ae99fb 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -11,6 +11,7 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a // DSTU 2 change (name change) constrain reasonNotPerformed to 0..0 AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/procedure-targetBodySite // DSTU 2 change (no such attribute) // PartOf maps to partOf Annotation maps to notes @@ -39,6 +40,7 @@ ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinitio // fix notDone to true Reason maps to notDoneReason AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/procedure-targetBodySite // DSTU 2 change (attribute name change) Annotation maps to notes constrain performed[x] to 0..0 @@ -67,6 +69,7 @@ ProcedureRequested maps to ProcedureRequest: // constrain doNotPerform to 0..0 Patient maps to subject AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/procedure-targetBodySite Encounter maps to encounter Reason maps to reason[x] Status maps to status diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index e15a3461..2645590d 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -10,6 +10,7 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co constrain notDone to 0..0 constrain notDoneReason to 0..0 AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance PartOf maps to partOf Annotation maps to note Encounter maps to context @@ -36,6 +37,7 @@ ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us // fix notDone to true Reason maps to notDoneReason AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance // PartOf maps to partOf Annotation maps to note constrain performed[x] to 0..0 @@ -61,6 +63,7 @@ ProcedureRequested maps to ProcedureRequest: constrain doNotPerform to 0..0 Patient maps to subject AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance Encounter maps to context Reason maps to reasonCode Status maps to status @@ -79,5 +82,6 @@ ProcedureRequestedAgainst maps to ProcedureRequest: Category maps to category Patient maps to subject AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance Reason maps to reasonCode // Encounter maps to context diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt index 7f89ea19..dac69682 100644 --- a/spec/shr_tumor.txt +++ b/spec/shr_tumor.txt @@ -4,6 +4,21 @@ Description: "SHR implementation of ASCO requirements." Uses: shr.core, shr.base, shr.entity, oncocore + +EntryElement: TumorPresent +Based on: BodyStructurePresent +Concept: SCT#395557000 "Tumor finding (finding)" +Description: "The presence of an abnormal mass of tissue (neoplasm) that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). (source: NCI Dictionary)." + FindingTopicCode from TumorMorphologyVS +// note - like other existential findings, the topic code is WHAT is present or absent, and the result code is present or absent (in this case, present) +0..1 IsPrimaryTumor + + Element: IsPrimaryTumor + Concept: TBD + Description: "Whether the tumor is the original or first tumor in the body, for a particular cancer." + Value: CodeableConcept from YesNoUnknownVS // could be boolean but this VS allows for unknown + + EntryElement: TumorDimensions Based on: CodedLaboratoryObservation Concept: SCT#263605001 "Tumor size (observable entity)" From ed333792eb6c27cb8d105b45a4d1dbc4487232ac Mon Sep 17 00:00:00 2001 From: Chris Moesel Date: Thu, 20 Dec 2018 01:02:11 -0500 Subject: [PATCH 159/289] Update oncocore config to have no logical models or history link Since DSTU2 export doesn't support logical models yet, it doesn't make sense to put a link in the IG. And since there is no history for this IG yet, a history link doesn't make sense either. Remove both via config. --- spec/ig-oncocore-config.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spec/ig-oncocore-config.json b/spec/ig-oncocore-config.json index 7896405c..e77be9ac 100644 --- a/spec/ig-oncocore-config.json +++ b/spec/ig-oncocore-config.json @@ -9,10 +9,9 @@ { "npmName": "oncocore", "version": "0.2.0", - "includeLogicalModels": true, + "includeLogicalModels": false, "includeModelDoc": true, "indexContent": "IndexFolder_Oncocore", - "historyLink": "http://hl7.org/fhir/us/oncocore/history.html", "primarySelectionStrategy": { "strategy": "hybrid", From 68d18cb3d354df37dfc160b89a575eb54d86f98a Mon Sep 17 00:00:00 2001 From: Rute Martins Date: Wed, 19 Dec 2018 22:45:04 -0700 Subject: [PATCH 160/289] fixes to IG fixes --- spec/shr_genetics.txt | 2 +- spec/shr_oncocore_stage.txt | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index 83467c5a..ca293ebc 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -65,7 +65,7 @@ Value: CodeableConcept from DNAChangeTypeVS EntryElement: TumorMarker Based on: CodedLaboratoryObservation Concept: LNC#21924-6 "Tumor marker Cancer" -Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Diectionary). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." +Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Dictionary of Cancer Terms). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." SpecificFocusOfFinding value is type ref(CancerDisorderPresent) FindingTopicCode is LNC#21924-6 "Tumor marker Cancer" FindingResult from TumorMarkerVS if covered diff --git a/spec/shr_oncocore_stage.txt b/spec/shr_oncocore_stage.txt index 5bef92f5..bd33087d 100644 --- a/spec/shr_oncocore_stage.txt +++ b/spec/shr_oncocore_stage.txt @@ -17,7 +17,7 @@ Value: CodeableConcept from CancerStageTimingVS if covered Element: CancerStageSuffix Concept: TBD#TBD // TODO: Needs a new LOINC or SNOMED code + value set terms. assign a local value set until we get something assigned. Description: "A suffix used in conjuction with certain cancer stage categories, usually qualifying how the category value was determined." -Value: CodeableConcept from CancerStageSuffixVS // local value set created +Value: CodeableConcept //from CancerStageSuffixVS VS only includes terms applicable to BrCa. Element: CancerStagingSystem Based on: FindingMethod @@ -70,6 +70,7 @@ Description: "A panel of staging information that is performed prior to surge FindingTopicCode is LNC#21908-9 "Stage group.clinical Cancer" FindingResult from http://loinc.org/vs/LL240-3 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" + 0..0 CancerStageSuffix EntryElement: TNMClinicalPrimaryTumorClassification Based on: TNMStagePanelMember @@ -97,7 +98,7 @@ Description: "A panel of staging information that is performed prior to surge EntryElement: TNMPathologicPrognosticStagePanel -Based on: CancerStagePanel +Based on: TNMCancerStagePanel Concept: LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" Description: "A panel of staging information that is based on examination of tissue samples removed during surgery, in addition to physical examination and imaging and potentially, other prognostic factors." FindingTopicCode is LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" @@ -113,10 +114,12 @@ Description: "A panel of staging information that is based on examination of EntryElement: TNMPathologicStageGroup Based on: TNMStagePanelMember Concept: LNC#21902-2 "Stage group.pathology Cancer" - Description: "The presence of metastases in regional lymph nodes, obtained through pathologic analysis of a tumor specimen, and classified based on criteria defined by the staging system." + Description: "The overall stage of the cancer, determined through pathologic analysis of a tumor specimen, and classified based on criteria defined by the staging system." FindingTopicCode is LNC#21902-2 "Stage group.pathology Cancer" FindingResult from http://loinc.org/vs/LL234-6 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" + 0..0 CancerStageSuffix + /* EntryElement: TNMPathologicPrimaryTumorClassification Based on: TNMStagePanelMember @@ -129,7 +132,7 @@ Description: "A panel of staging information that is based on examination of EntryElement: TNMPathologicRegionalNodesClassification Based on: TNMStagePanelMember Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" - Description: "TODO: pull from LOINC" //TODO: pull from LOINC + Description: "The presence of metastases in regional lymph nodes, obtained through pathologic analysis of a tumor specimen, and classified based on criteria defined by the staging system."" FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" FindingResult from http://loinc.org/vs/LL3136-0 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" From 5a7773825b4f4a904ea3c8fcec82f6528954d244 Mon Sep 17 00:00:00 2001 From: Rute Martins Date: Thu, 20 Dec 2018 00:23:01 -0700 Subject: [PATCH 161/289] minor fixes to race and ethnicity --- spec/shr_entity.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 1b2eed32..67ea4b11 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -329,12 +329,12 @@ Description: "A person relevant to the health or social situation of the subject Element: RaceCode Concept: TBD Description: "A code for the person's race" - Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity + Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-race Element: RaceDetail Concept: TBD Description: "Additional description of race or heritage." - Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/detailed-race or CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity + Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/detailed-race Element: Ethnicity Concept: MTH#C0015031 @@ -344,13 +344,13 @@ Description: "A person relevant to the health or social situation of the subject Element: EthnicityCode Concept: TBD - Description: "A code for the person's race" + Description: "A code for the person's ethnicity" Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity Element: EthnicityDetail Concept: TBD Description: "Additional description of ethnicity." - Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/omb-ethnicity or CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/detailed-ethnicity + Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/detailed-ethnicity Element: MothersMaidenName Concept: MTH#C0806887 From bf3a70e22cb5c0303924fd77c0a4a9925a0c1866 Mon Sep 17 00:00:00 2001 From: Rute Martins Date: Thu, 20 Dec 2018 00:38:24 -0700 Subject: [PATCH 162/289] fix typo --- spec/shr_oncocore_stage.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/shr_oncocore_stage.txt b/spec/shr_oncocore_stage.txt index bd33087d..f05444c8 100644 --- a/spec/shr_oncocore_stage.txt +++ b/spec/shr_oncocore_stage.txt @@ -98,7 +98,7 @@ Description: "A panel of staging information that is performed prior to surge EntryElement: TNMPathologicPrognosticStagePanel -Based on: TNMCancerStagePanel +Based on: CancerStagePanel Concept: LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" Description: "A panel of staging information that is based on examination of tissue samples removed during surgery, in addition to physical examination and imaging and potentially, other prognostic factors." FindingTopicCode is LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" From f89d07dda84753303929f0fd8f0f4d318a4e1c99 Mon Sep 17 00:00:00 2001 From: May Terry Date: Thu, 20 Dec 2018 15:36:40 -0500 Subject: [PATCH 163/289] Fixed Description for GenomicSourceClassVS --- spec/shr_genetics_vs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/shr_genetics_vs.txt b/spec/shr_genetics_vs.txt index 9f78e303..8690accf 100644 --- a/spec/shr_genetics_vs.txt +++ b/spec/shr_genetics_vs.txt @@ -27,7 +27,7 @@ LNC#LA26820-3 "Low expression." LNC#LA26819-5 "High expression." ValueSet: GenomicSourceClassVS -Description: "Data absent reasons (null values) for nuclear pleomorphism count and tubule formation score. Aligns with LOINC preferred answer list LL378-1." +Description: "The genomic class of the specimen being analyzed: Germline for inherited genome, somatic for cancer genome, and prenatal for fetal genome. (source: LOINC)." LNC#LA6683-2 "Germline" LNC#LA6684-0 "Somatic" LNC#LA10429-1 "Fetal" From ccccdd1dae9e33093318c47d83b02966423c2d1d Mon Sep 17 00:00:00 2001 From: Chris Moesel Date: Mon, 7 Jan 2019 13:59:36 -0500 Subject: [PATCH 164/289] Revert Entry Add back ShrId, EntryId, and EntryType to entry and remove from the other places they had been moved to. Also force Entry to be generated by including it in the filter. --- spec/ig-oncocore-config.json | 2 +- spec/shr_base.txt | 40 ++++++++++++++++-------------------- spec/shr_base_map_dstu2.txt | 4 ++-- spec/shr_base_map_stu3.txt | 4 ++-- 4 files changed, 23 insertions(+), 27 deletions(-) diff --git a/spec/ig-oncocore-config.json b/spec/ig-oncocore-config.json index e77be9ac..e7d63915 100644 --- a/spec/ig-oncocore-config.json +++ b/spec/ig-oncocore-config.json @@ -23,7 +23,7 @@ { "filter": true, "strategy": "hybrid", - "target": ["oncocore"] + "target": ["oncocore", "shr.base.Entry"] }, "publisher": "The HL7 Cancer Interoperability Group sponsored by Clinical Interoperability Council Work Group (CIC)", "contact": [ diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 347580d8..b174f97e 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -9,31 +9,38 @@ CodeSystem: SCT = http://snomed.info/sct CodeSystem: NCI = https://evs.nci.nih.gov/ftp1/CDISC/SDTM/ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category +// NOTE: Entry will eventually be deprecated, as its fields are really a part +// of the implementation, NOT a part of the model. Once the CIMPL tooling +// makes these implicit, Entry and its field elements can go away. Element: Entry Concept: MTH#C1705654 Description: "Obsolete. Use InformationItem" +0..1 ShrId +0..1 EntryId +0..1 EntryType -/*0..1 ShrId - - Element: ShrId - Concept: TBD + Element: ShrId + Concept: TBD Description: "A unique, persistent, permanent identifier for the overall health record belonging to the Patient." - Value: id */ + Value: id + Element: EntryId + Concept: MTH#C0600091 + Description: "A persistent, permanent identifier for an entry in a health record, unique within the scope of the health record." + Value: id + + Element: EntryType // Would EntryClass be clearer? + Concept: TBD + Description: "The class of the item, as a URI." + Value: uri Abstract Element: InformationItem Concept: MTH#C1705654 Description: "Parent class for any item in clinical or administrative health-related system. Contains metadata attributes that apply to any item represented in the standard health record. An InformationItem can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." -0..1 EntryId 0..1 Narrative 0..1 Language 0..1 Metadata - Element: EntryId - Concept: MTH#C0600091 - Description: "A persistent, permanent identifier for an entry in a health record, unique within the scope of the health record." - Value: id - Element: Narrative Concept: TBD Description: "A human-readable narrative, potentially including images, that contains a summary of the resource, and may be used to represent the content of the resource to a human." @@ -56,7 +63,6 @@ Concept: TBD Description: "Elements that belong to all information items." 0..1 VersionId 0..1 LastUpdated -0..* EntryType // would EntryConformance be clearer? 0..* SecurityLabel 0..* Tag //0..1 RecordStatus @@ -64,11 +70,6 @@ Description: "Elements that belong to all information items." 0..1 InformationRecorder 0..1 AuthoredDateTime - Element: EntryType // Would EntryClass be clearer? - Concept: TBD - Description: "The class of the item, as a URI." - Value: uri - Element: RecordStatus Description: "Concept indicating the state of this record, e.g., entered in error." Value: CodeableConcept @@ -150,11 +151,6 @@ Description: "A composition represents a set of Entries sharing common provenanc /* - Element: ShrId - Concept: TBD - Description: "A unique, persistent, permanent identifier for the overall health record belonging to the Patient." - Value: id - Element: HealthRecordId Concept: MTH#C1549718 Description: "A unique, persistent, permanent identifier for a health record." diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 5d63a26d..eafb9321 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -5,11 +5,11 @@ Target: FHIR_DSTU_2 //Entry maps to DomainResource: InformationItem maps to DomainResource: - EntryId maps to id + _Entry.EntryId maps to id Language maps to language Narrative maps to text Metadata.VersionId maps to meta.versionId - Metadata.EntryType maps to meta.profile + // _Entry.EntryType maps to meta.profile // (this will force a profile -- don't do it) Metadata.LastUpdated maps to meta.lastUpdated Metadata.SecurityLabel maps to meta.security Metadata.Tag maps to meta.tag diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 4a5b688b..249965a5 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -5,11 +5,11 @@ Target: FHIR_STU_3 //Entry maps to DomainResource: InformationItem maps to DomainResource: - EntryId maps to id + _Entry.EntryId maps to id Language maps to language Narrative maps to text Metadata.VersionId maps to meta.versionId - Metadata.EntryType maps to meta.profile + // _Entry.EntryType maps to meta.profile // (this will force a profile -- don't do it) Metadata.LastUpdated maps to meta.lastUpdated Metadata.SecurityLabel maps to meta.security Metadata.Tag maps to meta.tag From 38b16f1072caeb41be4dcd0f35ce532e56487516 Mon Sep 17 00:00:00 2001 From: mlterryMitre <40579130+mlterryMitre@users.noreply.github.com> Date: Thu, 24 Jan 2019 13:55:04 -0500 Subject: [PATCH 165/289] Fix for incorrect assignment of TumorMarkerVS to FindingResult. (#208) * Fixed incorrect assign of TumorMarkerVS Fix for shr_spec #207 https://github.com/standardhealth/shr_spec/issues/207 * Update shr_genetics.txt --- .DS_Store | Bin 8196 -> 8196 bytes spec/shr_genetics.txt | 14 ++------------ 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/.DS_Store b/.DS_Store index e07f5f87b22e8ed63c347cd420339faf1d90929b..55e08f13cba0471fcaa1a220e7b73deed07cf018 100644 GIT binary patch delta 39 vcmZp1XmOa}&&aniU^hP_-)0_xB1V?9l;Y&gxq_{1o7pA4v21=J!p;l;`N0f$ delta 44 zcmZp1XmOa}&&azmU^hP_?`9r>BF4>=1xwf_7Km Date: Fri, 25 Jan 2019 15:44:03 -0500 Subject: [PATCH 166/289] Renamed InformationItem to DomainResource to more closely resemble FHIR --- spec/LandingPageBreastCancer.html | 4 ++-- spec/shr_adverse.txt | 4 ++-- spec/shr_adverse_map_dstu2.txt | 2 +- spec/shr_adverse_map_stu3.txt | 2 +- spec/shr_allergy.txt | 13 ++++++------ spec/shr_allergy_map_stu3.txt | 2 +- spec/shr_base.txt | 22 ++++++++++++-------- spec/shr_base_action.txt | 2 +- spec/shr_base_finding.txt | 25 +++++++++-------------- spec/shr_base_map_dstu2.txt | 11 +++++----- spec/shr_base_map_stu3.txt | 10 ++++----- spec/shr_brca.txt | 34 +++++++++++++++---------------- spec/shr_brca_map_dstu2.txt | 1 - spec/shr_brca_map_stu3.txt | 1 - spec/shr_encounter.txt | 2 +- spec/shr_entity.txt | 4 ++-- spec/shr_familyhistory.txt | 2 +- spec/shr_financial.txt | 2 +- spec/shr_genetics.txt | 10 ++++----- spec/shr_medication.txt | 4 ++-- spec/shr_occupation.txt | 34 +++++++++++++++---------------- spec/shr_occupation_map_dstu2.txt | 4 ++-- spec/shr_occupation_map_stu3.txt | 4 ++-- spec/shr_oncocore.txt | 9 ++++---- spec/shr_oncocore_stage.txt | 20 +++++++++--------- spec/shr_oncocore_vs.txt | 1 - spec/shr_tumor.txt | 14 ++++++------- spec/shr_wound.txt | 20 +++++++++--------- 28 files changed, 130 insertions(+), 133 deletions(-) diff --git a/spec/LandingPageBreastCancer.html b/spec/LandingPageBreastCancer.html index ad002944..a530765d 100644 --- a/spec/LandingPageBreastCancer.html +++ b/spec/LandingPageBreastCancer.html @@ -84,7 +84,7 @@

Class Hierarchy

  • -
    Locatable* > Independent > Content > InformationItem > Finding > FindingStatement > Observation > LaboratoryObservation > CodedLaboratoryObservation > BreastCancerHistologicGrade
    +
    Locatable* > Independent > Content > DomainResource > Finding > FindingStatement > Observation > LaboratoryObservation > CodedLaboratoryObservation > BreastCancerHistologicGrade
@@ -97,7 +97,7 @@

The CIMI Topic-Context Pattern

CIMI develops several class hierarchies. The first is the Finding hierarchy, exemplified by the BreastCancerHistologicGrade hierarchy, above. A clinical statement represents a fact, opinion, or observation that relates to a patient, for example, "the patient has a diagnosis of congestive heart failure" or "patient has an order for physical therapy" [CIMI Modeling and Quality Guide]. 

However, Finding is not the only class needed to construct a clinical statement. The clinical statement itself has no clinical content; to gain content, the Finding class must reference a topic and a context. The topic is the clinical entity being described by the Clinical Finding, for example, a laboratory test. The context describes the circumstance applied to the topic. For example, we can speak of "blood pressure of 120/80" as an observation or a goal; similarly, we can speak of a procedure as recommended, ordered, planned, performed, or not performed. Both the topic and context are defined in class hierarchies of their own. For example, for the BreastCancerHistologicGrade, the topic hierarchy is as follows:

    -
  • Locatable* > NonIndependent > StatementTopic > FindingTopicCode > ObservationTopic > LaboratoryObservationTopic
  • +
  • Locatable* > NonIndependent > StatementTopic > TopicCode > ObservationTopic > LaboratoryObservationTopic
The context hierarchy for the same observation is as follows:
    diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt index 968e799c..abfe0366 100644 --- a/spec/shr_adverse.txt +++ b/spec/shr_adverse.txt @@ -10,11 +10,10 @@ CodeSystem: MTH = http://ncimeta.nci.nih.gov Element: AdverseEvent -Based on: InformationItem +Based on: DomainResource Description: "A record of an untoward or unexpected event in a patient under treatment, and which does not necessarily have to have a causal relationship with that treatment. Adverse events may capture either a workflow breach that may or may not result in harm, but must be documented for quality improvement purposes, or an adverse finding whether or not it can be traceable to an actual workflow breach." Metadata.InformationRecorder value is type PatientOrPractitionerOrRelatedPerson 1..1 Patient -0..1 Type from MedDRAVS 1..1 OccurrenceTime 1..1 Seriousness from SeriousnessVS // to be replaced with http://hl7.org/fhir/ValueSet/adverse-event-seriousness in FHIR 4 //0..1 TBD "PatternOfEvent" // from STDM @@ -24,6 +23,7 @@ Description: "A record of an untoward or unexpected event in a patient under tre 0..* CausalAttribution 0..* ActionTaken 0..1 AssociatedStudy + TopicCode from MedDRAVS Element: Seriousness Concept: MTH#C2985911 diff --git a/spec/shr_adverse_map_dstu2.txt b/spec/shr_adverse_map_dstu2.txt index 814cd03d..f1d99078 100644 --- a/spec/shr_adverse_map_dstu2.txt +++ b/spec/shr_adverse_map_dstu2.txt @@ -4,7 +4,7 @@ Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: Metadata.InformationRecorder maps to recorder - Type maps to type +// Type maps to type // TOPIC CODE??? Type doesn't exist in AdverseEvent CommentOrDescription maps to description Patient maps to subject AssociatedStudy maps to study diff --git a/spec/shr_adverse_map_stu3.txt b/spec/shr_adverse_map_stu3.txt index b0bb1b83..9d766ef3 100644 --- a/spec/shr_adverse_map_stu3.txt +++ b/spec/shr_adverse_map_stu3.txt @@ -4,7 +4,7 @@ Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: Metadata.InformationRecorder maps to recorder - Type maps to type +// Type maps to type // TOPIC CODE??? CommentOrDescription maps to description Patient maps to subject AssociatedStudy maps to study diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index 114d0e53..f0098963 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -14,11 +14,10 @@ Concept: SCT#473010000 "Hypersensitivity condition (disorder)" Description: "A finding related to the presence of an individual's risk or sensitivity to a substance or class of substances. An AllergyIntolerancePresent finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time. Per US Core specification, the result includes SNOMED codes representing 'No known allergy'. In AllergyIntolerance, the reactions are included in-line, rather than referencing to conditions (in notable contrast to AdverseEvent)." Metadata.InformationSource value is type PatientOrPractitionerOrRelatedPerson Metadata.InformationRecorder value is type PatientOrPractitioner // FHIR only allows Patient or Practitioner as recorder - 1..1 Patient 1..1 FindingStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status 0..0 SpecificFocusOfFinding // always the patient -1..1 FindingTopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" +1..1 TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" 1..1 FindingResult // from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered // DSTU 2 change different required value sets) 0..1 SubstanceCategory // DSTU 2 change (restrict upper cardinality to 1) 0..1 Onset @@ -86,7 +85,7 @@ Description: "A finding related to the presence of an individual's risk or sensi EntryElement: AllergyIntoleranceAbsent Based on: AbsenceAssertion Description: "Used to record that a particular substance or class of substances does not pose a known elevated risk to the subject. The certainly of absence is always 'no known' because definitively ruling out an allergy intolerance is not possible." - FindingTopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" // We don't use a code that represents the absence of the condition and whose FindingResult would therefore be true or false (rather than present/absent) + TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" // We don't use a code that represents the absence of the condition and whose FindingResult would therefore be true or false (rather than present/absent) 1..1 AllergenIrritant 0..* SubstanceCategory 1..1 Certainty is SCT#443508001 "No history of clinical finding in subject (situation)" // no known @@ -121,8 +120,8 @@ Description: "Statement expressings no known allergies or hypersensitivity to an // TopicCode from NoKnownAllergyVS -// FindingTopicCode is SCT#716186003 "No known allergy (situation)" -// FindingTopicCode is SCT#428607008 "No known environmental allergy (situation)" -// FindingTopicCode is SCT#429625007 "No known food allergy (situation)" -// FindingTopicCode is SCT#409137002 "No known drug allergy (situation)" +// TopicCode is SCT#716186003 "No known allergy (situation)" +// TopicCode is SCT#428607008 "No known environmental allergy (situation)" +// TopicCode is SCT#429625007 "No known food allergy (situation)" +// TopicCode is SCT#409137002 "No known drug allergy (situation)" */ \ No newline at end of file diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index 27223a67..0220d5bb 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -9,7 +9,7 @@ AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Metadata.InformationRecorder maps to recorder Metadata.AuthoredDateTime maps to assertedDate FindingResult maps to code - AllergyIntoleranceType maps to type + TopicCode maps to type SubstanceCategory maps to category FindingStatus maps to verificationStatus ClinicalStatus maps to clinicalStatus diff --git a/spec/shr_base.txt b/spec/shr_base.txt index b174f97e..a992d624 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -14,7 +14,7 @@ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category // makes these implicit, Entry and its field elements can go away. Element: Entry Concept: MTH#C1705654 -Description: "Obsolete. Use InformationItem" +Description: "Obsolete. Use DomainResource" 0..1 ShrId 0..1 EntryId 0..1 EntryType @@ -34,12 +34,18 @@ Description: "Obsolete. Use InformationItem" Description: "The class of the item, as a URI." Value: uri -Abstract Element: InformationItem +Abstract Element: DomainResource Concept: MTH#C1705654 -Description: "Parent class for any item in clinical or administrative health-related system. Contains metadata attributes that apply to any item represented in the standard health record. An InformationItem can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." +Description: "Parent class for any item in clinical or administrative health-related system. Contains metadata attributes that apply to any item represented in the standard health record. An DomainResource can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." +1..1 TopicCode // Question, test name, encounter type, condition, etc. 0..1 Narrative 0..1 Language -0..1 Metadata +0..1 Metadata + + Element: TopicCode + Description: "A code describing what the domain resource concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist (present) or not exist (absent). The result of the evaluation is found in the FindingResult. " + Value: CodeableConcept + Element: Narrative Concept: TBD @@ -136,7 +142,7 @@ Description: "Elements that belong to all information items." EntryElement: Composition -Based on: InformationItem +Based on: DomainResource Description: "A composition represents a set of Entries sharing common provenance, adocument such as an extract from a patient record, a knowledge artifact, or a catalog definition." //1..1 Status from http://hl7.org/fhir/ValueSet/composition-status //1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes @@ -144,10 +150,10 @@ Description: "A composition represents a set of Entries sharing common provenanc 0..* Section Element: Section - Based on: InformationItem + Based on: DomainResource Description: "Represents a section containing entries in a composition." //0..1 Title - 0..* InformationItem + 0..* DomainResource /* @@ -159,7 +165,7 @@ Description: "A composition represents a set of Entries sharing common provenanc Element: DerivedFrom Concept: TBD Description: "Indicates the source of information in the case the Entry has been created by logical extension or modification of one or more source entries." - Value: ref(InformationItem) + Value: ref(DomainResource) Element: SignedBy Description: "Provenance information specific to the signing of the clinical statement." diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index b28b093c..daea5385 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -6,7 +6,7 @@ Uses: shr.core, shr.entity, shr.encounter //---------- Actions -------------- Abstract Element: ActionStatement -Based on: InformationItem +Based on: DomainResource Description: "Abstract class representing any type of action." 0..1 Category // Might not need this 1..1 Patient // Change to 0..1? Not all actions involve a patient diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index e6c9d1b7..b7fcbe14 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -5,13 +5,12 @@ Uses: shr.core, shr.entity, shr.encounter Abstract Element: NonIndependentFinding -Based on: InformationItem +Based on: DomainResource Description: "A finding that does not or cannot stand alone, or a component of another finding." // should we have finding protocol, finding precondition, finding question, finding data, finding interpretation? // how do we handle normal? (physical exam normal) // exclusions? (diabetes excluded) 0..1 FindingResult -1..1 FindingTopicCode // Question, test name, or condition 0..1 ExceptionValue 0..1 ReferenceRange // included here only because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. // TODO: 0..1 Interpretation @@ -21,10 +20,6 @@ Description: "A finding that does not or cannot stand alone, or a component of Value: CodeableConcept or Quantity or string or Range or Ratio or time or dateTime or TimePeriod // exclude boolean because FHIR STU3 component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 - Element: FindingTopicCode - Description: "A code describing what the finding concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist or not exist. The topic code is not the result of the evaluation, which is found in the FindingResult. " - Value: CodeableConcept - Element: ExceptionValue Concept: TBD Description: "Reason that a value associated with a test or other finding is missing." @@ -69,7 +64,7 @@ Description: "An assertion, determination, opinion, evaluation, result, observat Element: SpecificFocusOfFinding Description: "The specific observed item finding relates to, for example, a related person or condition. The SpecificFocusOfFinding is only required if the thing observed is different than the patient. It should not be an anatomical location. The focus for cancer progression would be the cancer condition. If the property is wound length, the focus would be an instance of a wound. In the case of an assertion of existence, the focus is the larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." - Value: ref(InformationItem) // or CodeableConcept or string or CodeableConcept or Identifier + Value: ref(DomainResource) // or CodeableConcept or string or CodeableConcept or Identifier Element: RelevantTime Concept: TBD @@ -92,7 +87,7 @@ Based on: Finding Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments. -For an Observation, the FindingTopicCode describes the aspect or property of the subject being observed or measured. The FindingTopicCode is the 'question code' that pairs to the 'answer' contained in the Value." +For an Observation, the TopicCode describes the aspect or property of the subject being observed or measured. The TopicCode is the 'question code' that pairs to the 'answer' contained in the Value." 0..1 FindingMethod 0..1 RelevantTime 0..* NonIndependentFinding @@ -177,7 +172,7 @@ Description: "An observation with components, but without a result value or pane EntryElement: LaboratoryObservation Based on: Observation Description: "A coded finding based on a specimen collected from a patient." - FindingTopicCode from LaboratoryCodeVS if covered + TopicCode from LaboratoryCodeVS if covered 1..1 Category // MK changed from 1..* to 1..1 to be compatible with DSTU 2 1..1 Patient 0..1 Specimen @@ -228,8 +223,8 @@ Description: "A panel that does not have an overall value that summarizes the en Abstract Element: ExistenceAssertion Based on: Finding Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place. -For assertions, the FindingTopicCode represents the thing asserted to be present or absent; i.e., the type of condition, event, relationship or phenomenon that is being asserted to exist or not exist." - FindingTopicCode is type ConditionOrDiagnosisCode +For assertions, the TopicCode represents the thing asserted to be present or absent; i.e., the type of condition, event, relationship or phenomenon that is being asserted to exist or not exist." + TopicCode is type ConditionOrDiagnosisCode FindingResult is type PresentOrAbsent // Leave ExceptionValue in, to represent the case where the presence or absence of something was not evaluated 0..0 ReferenceRange @@ -238,7 +233,7 @@ For assertions, the FindingTopicCode represents the thing asserted to be present FindingStatus value is type CodeableConcept Element: ConditionOrDiagnosisCode - Based on: FindingTopicCode + Based on: TopicCode Description: "A specific code for the condition being determined to be present or absent." Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make the binding weaker because US Core requires an extensible binding @@ -372,7 +367,7 @@ EntryElement: ClinicalNote Based on: SimpleNonLaboratoryObservation Concept: MTH#C0747978 "Progress Note" Description: "An entry concerning a patient where the result is a narrative text. While all findings have a CommentOrDescription field, the clinical note should put the narrative in the FindingResult field, since this is the first place to look for a result that is a narrative." - FindingTopicCode is MTH#C0747978 "Progress Note" + TopicCode is MTH#C0747978 "Progress Note" FindingResult value is type string 0..0 ReferenceRange 1..1 Patient @@ -381,7 +376,7 @@ Description: "An entry concerning a patient where the result is a narrative text EntryElement: QuestionAnswer Based on: SimpleNonLaboratoryObservation Concept: TBD -Description: "A simple question-answer pair. FindingTopicCode should contain the identifying code for the question, and the FindingResult the answer. FindingResult is not constrained because the answer could be a string, concept code, number, etc." +Description: "A simple question-answer pair. TopicCode should contain the identifying code for the question, and the FindingResult the answer. FindingResult is not constrained because the answer could be a string, concept code, number, etc." 0..0 ReferenceRange 1..1 Patient 0..1 QuestionText @@ -395,7 +390,7 @@ Description: "A simple question-answer pair. FindingTopicCode should contain the Abstract Element: RelationshipExistenceAssertion Based on: ExistenceAssertion Description: "An assertion of a realtionship between two things being either present or absent. The subject of the relationship is is the Patient (or SpecificFocusOfFinding, if given) and the object of the relationship is . -For relationships, FindingTopicCode describes the relationship, e.g., Father or Mother." +For relationships, TopicCode describes the relationship, e.g., Father or Mother." Value: CodeableConcept from PresentAbsentVS diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index eafb9321..315ca48a 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -2,9 +2,8 @@ Grammar: Map 5.1 Namespace: shr.base Target: FHIR_DSTU_2 -//Entry maps to DomainResource: -InformationItem maps to DomainResource: +DomainResource maps to DomainResource: _Entry.EntryId maps to id Language maps to language Narrative maps to text @@ -16,7 +15,7 @@ InformationItem maps to DomainResource: Composition maps to Composition: Section maps to section - Section.InformationItem maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) + Section.DomainResource maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) Narrative maps to Narrative: NarrativeText maps to div @@ -25,7 +24,7 @@ Narrative maps to Narrative: Observation maps to Observation: Patient maps to subject // Metadata.InformationSource maps to performer - FindingTopicCode maps to code + TopicCode maps to code FindingMethod maps to method // dstu 2 change (name change) CommentOrDescription maps to comments @@ -44,7 +43,7 @@ Observation maps to Observation: // dstu 2 change (no such attribute) // ReferenceRange.ApplicableAgeRange maps to referenceRange.age NonIndependentFinding maps to component (slice on = code.coding.code; slice strategy = includes) - NonIndependentFinding.FindingTopicCode maps to component.code + NonIndependentFinding.TopicCode maps to component.code NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason // dstu 2 change (no such attribute) @@ -76,7 +75,7 @@ ConditionPresentAssertion maps to http://fhir.org/guides/argonaut/StructureDefin Patient maps to patient Category maps to category ObjectIdentifier maps to identifier - FindingTopicCode maps to code + TopicCode maps to code AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Encounter maps to encounter diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 249965a5..d10d4a2e 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -4,7 +4,7 @@ Target: FHIR_STU_3 //Entry maps to DomainResource: -InformationItem maps to DomainResource: +DomainResource maps to DomainResource: _Entry.EntryId maps to id Language maps to language Narrative maps to text @@ -16,7 +16,7 @@ InformationItem maps to DomainResource: Composition maps to Composition: Section maps to section - Section.InformationItem maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) + Section.DomainResource maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) Narrative maps to Narrative: NarrativeText maps to div @@ -25,7 +25,7 @@ Narrative maps to Narrative: // do not map Observation to US Core Results -- Brett says that's only for labs Observation maps to Observation: // TODO: observationresults is only for labs Patient maps to subject - FindingTopicCode maps to code + TopicCode maps to code FindingMethod maps to method CommentOrDescription maps to comment Category maps to category @@ -39,7 +39,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age NonIndependentFinding maps to component (slice on = code.coding.code; slice strategy = includes) - NonIndependentFinding.FindingTopicCode maps to component.code + NonIndependentFinding.TopicCode maps to component.code NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation @@ -67,7 +67,7 @@ ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinitio Patient maps to subject Category maps to category ObjectIdentifier maps to identifier - FindingTopicCode maps to code + TopicCode maps to code AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Encounter maps to context diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 60752b7b..765d0ab5 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -39,7 +39,7 @@ EntryElement: BreastCancerDisorderPresent Based on: CancerDisorderPresent Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." - FindingTopicCode from BreastCancerTypeVS + TopicCode from BreastCancerTypeVS StageInformation.StageDetail value is type BreastCancerStagePanel 0..1 FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding AnatomicalLocation.AnatomicalLocationStructured is type BreastSite @@ -55,7 +55,7 @@ EntryElement: BreastCancerStagePanel Based on: CancerStagePanel Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. Description: "The stage of a breast cancer. The panel should not include both a DCISNuclearGrade and a BreastCancerHistologicGrade, since the latter implies an invasive cancer." - FindingTopicCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" + TopicCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" PanelMembers.Observation includes 0..1 HER2ReceptorStatus includes 0..1 EstrogenReceptorStatus @@ -70,7 +70,7 @@ Based on: CodedLaboratoryObservation Concept: LNC#48676-1 "HER2 [Interpretation] in Tissue" Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." FindingResult from PositiveNegativeEquivocalVS - FindingTopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" + TopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" Specimen is type BreastSpecimen 0..0 FindingMethod 0..0 NonIndependentFinding @@ -86,8 +86,8 @@ Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (I FindingResult from HER2byIHCScoreVS ExceptionValue from HER2byIHCScoreNullVS Interpretation from PositiveNegativeEquivocalVS - FindingTopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" -0..0 FindingMethod // pre-coordinated in the FindingTopicCode + TopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" +0..0 FindingMethod // pre-coordinated in the TopicCode Specimen is type BreastSpecimen NonIndependentFinding includes 0..1 CompleteMembraneStainingPercent @@ -108,7 +108,7 @@ Concept: LNC#85318-4 // Corrected 5/12/2018 by MK Description: "HER2 receptor status as determined by single-probe or dual-probe Fluorescence In Situ Hybridization (FISH)." 0..0 FindingResult 0..0 ExceptionValue - FindingTopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" + TopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" FindingMethod from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS Specimen is type BreastSpecimen @@ -141,7 +141,7 @@ Based on: CodedLaboratoryObservation Concept: LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" Description: "Estrogen receptor alpha is the predominant estrogen receptor expressed in breast tissue and is overexpressed in around 50% of breast carcinomas. ER status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options. The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." - FindingTopicCode is LNC#16112-5 + TopicCode is LNC#16112-5 FindingResult from PositiveNegativeVS Specimen is type BreastSpecimen NonIndependentFinding @@ -154,7 +154,7 @@ Based on: CodedLaboratoryObservation Concept: LNC#16113-3 Description: "Progesterone receptor status is a factor in determining prognosis and treatment options. The value is the percentage of cells that test (stain) positive for the presence of a receptor. The interpretation of positive or negative (found in the interpretation property) is based on the staining percentage, and may take into account the staining intensity. Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." - FindingTopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" + TopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" FindingResult from PositiveNegativeVS Specimen is type BreastSpecimen NonIndependentFinding @@ -181,14 +181,14 @@ Based on: SimpleCodedLaboratoryObservation Description: "An evaluation of the size and shape of the nucleus in tumor cells and the percentage of tumor cells that are in the process of dividing or growing. Cancers with low nuclear grade grow and spread less quickly than cancers with high nuclear grade." FindingResult from NuclearGradeVS Specimen is type BreastSpecimen - FindingTopicCode is MTH#C18513 + TopicCode is MTH#C18513 EntryElement: BreastCancerHistologicGrade Concept: LNC#44648-4 Based on: CancerHistologicGrade Description: "The Elston Grade/Nottingham Score, representative of the aggressive potential of the tumor. Well differentiated cells (Grade 1) look similar to normal cells and are usually slow growing, while poorly differentiated cells (Grade 3) look very different than normal and are fast-growing." - FindingTopicCode is LNC#44648-4 + TopicCode is LNC#44648-4 FindingResult from NottinghamCombinedGradeVS ExceptionValue from NottinghamNullVS Specimen is type BreastSpecimen @@ -227,7 +227,7 @@ Concept: MTH#C1709318 Description: "The Oncotype DX test for invasive breast cancer examines the activity of 21 genes in a patient’s breast tumor tissue to provide personalized information for tailoring treatment based on the biology of their individual disease. The value from 0 to 100 indicates the estimated risk of recurrence, with the highest risk indicated by a score greater than 31. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" FindingResult value is type IntegerQuantity - FindingTopicCode is MTH#C1709318 + TopicCode is MTH#C1709318 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type ref(BreastSpecimen) @@ -238,7 +238,7 @@ Concept: MTH#C3898101 Description: "The Oncotype DX test for DCIS (Ductal Carcinoma in Situ) breast cancer. Risk scores range from 0 to 100 with the following interpretations: 0-38: Low-Risk, 39-54: Intermediate-Risk, 55+: High-Risk. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" FindingResult value is type IntegerQuantity - FindingTopicCode is MTH#C3898101 + TopicCode is MTH#C3898101 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type BreastSpecimen @@ -248,7 +248,7 @@ Concept: LNC#76544-6 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Prosigna. The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Risk of Recurrence Score in the literature), which is correlated with the probability of distant recurrence at ten years for post-menopausal women with hormone receptor positive, early stage breast cancer." FindingResult value is type IntegerQuantity - FindingTopicCode is LNC#76544-6 + TopicCode is LNC#76544-6 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type BreastSpecimen @@ -259,7 +259,7 @@ Description: "Breast cancer genomic signature assay for 10-year risk of distant In the United States, MammaPrint can only be used on cancers that are stage I or stage II, invasive, smaller than 5 centimeters, and estrogen-receptor-positive or -negative. Scores range from -1.0 to +1.0, with scores less than 0 indicating high risk, and scores greater than 0 indicating low risk. The is currently no LOINC code for Mammaprint test." FindingResult value is type Quantity - FindingTopicCode is MTH#C2827401 + TopicCode is MTH#C2827401 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type BreastSpecimen @@ -365,7 +365,7 @@ includes 0..1 OtherReceptorScoringSystem Concept: MTH#C4049944 Description: "Ki-67 is a protein phosphatase whose expression is strongly associated with cell proliferation and encoded by the MKI67 gene. The Ki67 labeling index is the fraction of Ki-67-positive cells to total cells in a tumor specimen and may be useful for determining prognosis with respect to survival and disease recurrence. The more positive cells there are, the more quickly they are dividing and forming new cells. ReferenceRange: Low <10, Intermediate 10-20, >20 High" Value: Quantity with units UCUM#% - FindingTopicCode is LNC#29593-1 + TopicCode is LNC#29593-1 NonIndependentFinding includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered @@ -374,7 +374,7 @@ includes 0..1 OtherReceptorScoringSystem Concept: MTH#C0812425 Description: "An expression of the number of mitoses found in a stated number of cells. The S-phase fraction number tells you what percentage of cells in the tissue sample are in the process of copying their genetic information (DNA). This S-phase, short for synthesis phase, happens just before a cell divides into two new cells. ReferenceRange: Low <6, Intermediate 6-10, >10 High." Value: Quantity with units UCUM#% - FindingTopicCode is LNC#29593-1 + TopicCode is LNC#29593-1 EntryElement: GeneticVariant Based on: Observation @@ -398,7 +398,7 @@ EntryElement: BreastCancerGeneticAnalysisObservation Concept: TBD Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." - Observation.FindingTopicCode is TBD#TBD + Observation.TopicCode is TBD#TBD 0..0 NonIndependentFinding PanelMembers.EvaluationresultRecorded includes 1..1 BRCA1Variant diff --git a/spec/shr_brca_map_dstu2.txt b/spec/shr_brca_map_dstu2.txt index 18f23fa5..5ec6da9e 100644 --- a/spec/shr_brca_map_dstu2.txt +++ b/spec/shr_brca_map_dstu2.txt @@ -6,7 +6,6 @@ Target: FHIR_STU_3 BreastSpecimen maps to Specimen: ColdIschemiaTime maps to processing (slice on = procedure) ColdIschemiaTime.TimePeriod maps to processing.time[x] - ColdIschemiaTime._Concept maps to processing.procedure constrain processing.additive to 0..0 */ // fix processing.description to "ColdIschemiaTime" diff --git a/spec/shr_brca_map_stu3.txt b/spec/shr_brca_map_stu3.txt index 18f23fa5..5ec6da9e 100644 --- a/spec/shr_brca_map_stu3.txt +++ b/spec/shr_brca_map_stu3.txt @@ -6,7 +6,6 @@ Target: FHIR_STU_3 BreastSpecimen maps to Specimen: ColdIschemiaTime maps to processing (slice on = procedure) ColdIschemiaTime.TimePeriod maps to processing.time[x] - ColdIschemiaTime._Concept maps to processing.procedure constrain processing.additive to 0..0 */ // fix processing.description to "ColdIschemiaTime" diff --git a/spec/shr_encounter.txt b/spec/shr_encounter.txt index 081ac555..04e278a5 100644 --- a/spec/shr_encounter.txt +++ b/spec/shr_encounter.txt @@ -4,7 +4,7 @@ Description: "The Encounter domain contains definitions that capture interaction Uses: shr.core, shr.base, shr.entity EntryElement: Encounter -Based on: InformationItem +Based on: DomainResource Concept: TBD Description: "A description of an interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient." 0..1 Patient diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 67ea4b11..65c80dc1 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -4,7 +4,7 @@ Description: "The namespace containing definitions for basic classes." Uses: shr.core, shr.base, shr.medication, shr.procedure Abstract Element: EntityOrRole -Based on: InformationItem +Based on: DomainResource Description: "Parent class for both Entity and Role." //Identifier @@ -20,7 +20,7 @@ Description: "Root class for entities such as people, organizations, and devices Element: PartOf Description: "The larger entity that the asserted item is a portion of. For example, an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." - Value: ref(InformationItem) + Value: ref(DomainResource) EntryElement: Patient Based on: Role diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index eaade601..1b4cecd8 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -25,7 +25,7 @@ Based on: PresenceAssertion Concept: LNC#8670-2 "History of family member diseases" 0..1 Onset 0..1 ConditionOutcome - FindingTopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered + TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered SpecificFocusOfFinding value is type ref(FamilyMember) Element: ConditionOutcome Concept: TBD#TBD diff --git a/spec/shr_financial.txt b/spec/shr_financial.txt index 5db0bd16..d85d4461 100644 --- a/spec/shr_financial.txt +++ b/spec/shr_financial.txt @@ -8,7 +8,7 @@ Path: FHIR = http://hl7.org/fhir/ValueSet // ------------ TODO: move to Payment domain ------------ EntryElement: Coverage -Based on: InformationItem +Based on: DomainResource Concept: MTH#C0021682 "HealthInsurance" Description: "Health insurance coverage available (even if not used for payment for a given encounter)." 0..1 Status from http://hl7.org/fhir/ValueSet/fm-status diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index ca293ebc..1c72cb51 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -10,11 +10,11 @@ Element: GeneticMarkerAnalysisResult Based on: LaboratoryObservation Concept: SCT#20889005 "Genetic marker function (observable entity)" Description: "The process of isolating and testing the DNA of an embryo or a person to detect the presence of genetic alterations or defects that may predispose to the future development of a disease or disorder. (source: NCI Thesaurus)" - FindingTopicCode from https://www.ncbi.nlm.nih.gov/gtr if covered // the identifier from the Genetic Test Registry + TopicCode from https://www.ncbi.nlm.nih.gov/gtr if covered // the identifier from the Genetic Test Registry FindingMethod from GeneticTestMethodVS if covered 0..0 FindingResult // panel, no numerical or coded result 0..0 SpecificFocusOfFinding -// MK: What gene are we looking at? mlt: identified in two places: 1) FindingTopicCode through the GTR ID, 2) in the GeneName element below. +// MK: What gene are we looking at? mlt: identified in two places: 1) TopicCode through the GTR ID, 2) in the GeneName element below. 0..0 ReferenceRange 0..1 GenomicSourceClass 0..1 GeneName @@ -67,7 +67,7 @@ Based on: CodedLaboratoryObservation Concept: LNC#21924-6 "Tumor marker Cancer" Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Dictionary of Cancer Terms). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." SpecificFocusOfFinding value is type ref(CancerDisorderPresent) - FindingTopicCode is LNC#21924-6 "Tumor marker Cancer" + TopicCode is LNC#21924-6 "Tumor marker Cancer" FindingResult from TumorMarkerVS if covered 0..0 NonIndependentFinding 0..0 AnatomicalLocation @@ -81,7 +81,7 @@ Element: TumorMarkerName Concept: LNC#TBD "TBD" Based on: CodedNonIndependentFinding Description: "TBD (source: LOINC)" - FindingTopicCode is LNC#TBD + TopicCode is LNC#TBD FindingResult from TBD */ @@ -90,5 +90,5 @@ EntryElement: CancerGeneticMarkerAnalysisResult Based on: GeneticMarkerAnalysisResult Concept: TBD#TBD "Cancer Genetic Test Result" Description: "A panel that analyses different components of a genetic test specific to cancer-related genetic markers." - FindingTopicCode from CancerGeneticTestRegistryVS if covered // the identifier from the Genetic Test Registry value set (filtered for cancer-relevant genetic tests.) + TopicCode from CancerGeneticTestRegistryVS if covered // the identifier from the Genetic Test Registry value set (filtered for cancer-relevant genetic tests.) GeneName.CodeableConcept from CancerGeneVS if covered diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index b780df11..cc8899d4 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -99,7 +99,7 @@ Concept: MTH#C2364172 Description: "Information on the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency. The SpecificFocusOfFinding must reference the medication via a code, MedicationRequest, or MedicationStatement. Modeling note: MedicationAdherence could be attached to MedicationStatement directly as an extension, but modeling as an observation avoids creating an extension and allows this observation to be made at any time." FindingResult from QualitativeFrequencyVS - FindingTopicCode is MTH#C2364172 + TopicCode is MTH#C2364172 1..1 SpecificFocusOfFinding value is type ref(Medication) NonIndependentFinding includes 0..* MedicationNonAdherenceReason @@ -108,7 +108,7 @@ includes 0..* MedicationNonAdherenceReason Based on: CodedNonIndependentFinding Description: "Reason that patient did not adhere to a medication regimen." FindingResult from MedicationNonAdherenceReasonVS - FindingTopicCode is TBD#TBD + TopicCode is TBD#TBD EntryElement: MedicationNotAdministered Based on: ActionNotPerformed diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 6e7aa300..88cbc356 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -19,7 +19,7 @@ Element: OccupationalDataSection Concept: TBD Based on: Section Description: "Single section in the current OccupationalDataSummary, containing the person's history of employment and occupation, past and present." - InformationItem + DomainResource includes 0..* PersonEmploymentStatus includes 0..* RetirementDate includes 0..* CombatZonePeriod @@ -33,7 +33,7 @@ Description: "The self-reported current and historical data about a person's eco A person's Employment Status could change over time, for example, a person could be employed following a period of choosing to not be in the labor force. Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 - FindingTopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" + TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" 0..0 NonIndependentFinding 0..0 FocalSubjectModifier @@ -44,7 +44,7 @@ Description: "A self-reported date that a person considers themselves to have A person can be both retired and employed (an Employment Status); most often, a person would be retired from one job and employed in another job. A person also can have more than one retirement date; for example, a person could retire from military service, then later retire from a civilian job. Multiple retirement dates should be recorded using multiple FHIR resources. Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." FindingResult value is type dateTime - FindingTopicCode is LNC#87510-4 "Date of Retirement" + TopicCode is LNC#87510-4 "Date of Retirement" 0..0 NonIndependentFinding 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. 0..0 FocalSubjectModifier @@ -55,7 +55,7 @@ Concept: LNC#87511-2 Description: "Self-reported date range(s) when a person worked in what is considered a combat zone; sometimes called a hazardous duty work. Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones. Multiple periods in combat zone should be recorded using multiple FHIR resources." Value: TimePeriod - FindingTopicCode is LNC#87511-2 + TopicCode is LNC#87511-2 0..0 NonIndependentFinding 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. 0..0 FocalSubjectModifier // only patient @@ -68,7 +68,7 @@ Knowledge of person's Usual Work can potentially assist in diagnosis, treatment Example: a person has worked for a total of 30 years as a 'secretary' (Occupation), but in various industries, mostly hotel construction. Her Usual Occupation is 'secretary' and her Usual Industry is 'hotel construction.' Usual Work does not include work that was unpaid or voluntary." FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 - FindingTopicCode is LNC#21843-8 + TopicCode is LNC#21843-8 NonIndependentFinding includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration @@ -83,14 +83,14 @@ includes 0..1 UsualOccupationDuration //Value: CodeableConcept from IndustryVS FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - FindingTopicCode is LNC#21844-6 "History of Usual industry" + TopicCode is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration Based on: QuantitativeNonIndependentFinding Concept: LNC#74163-7 "Usual occupation duration" Description: "The total time spent on an activity, inclusive of all time intervals, whether continuous or interrupted." // FindingResult.Quantity.Units is UCUM#a - FindingTopicCode is LNC#74163-7 "Usual occupation duration" + TopicCode is LNC#74163-7 "Usual occupation duration" EntryElement: PastOrPresentJob Based on: CodedSocialHistoryObservation @@ -101,7 +101,7 @@ A person's job can be a social determinant of their health and information about At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." 0..0 FindingResult 0..0 ExceptionValue - FindingTopicCode is LNC#11341-5 "History of Occupation" + TopicCode is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization NonIndependentFinding includes 0..1 Occupation @@ -141,7 +141,7 @@ includes 0..1 IsCurrentJob Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." // Value: CodeableConcept from IndustryVS FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - FindingTopicCode is LNC#86188-0 + TopicCode is LNC#86188-0 Element: WorkClassification Based on: CodedSocialHistoryObservation @@ -149,7 +149,7 @@ includes 0..1 IsCurrentJob Description: "Type of compensation and sector for a person's job, such as 'paid work, self-employed' or 'voluntary work', as reported by the person." //Value: CodeableConcept from WorkClassificationVS FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 - FindingTopicCode is LNC#85104-8 "Compensation and sector employment type" + TopicCode is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel Based on: CodedNonIndependentFinding @@ -157,21 +157,21 @@ includes 0..1 IsCurrentJob Description: "A coded indicator of responsibilities for directing work and personnel management responsibilities for a person's job, as reported by the person. For US military jobs, this is pay grade." //Value: CodeableConcept from SupervisoryLevelVS FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 - FindingTopicCode is LNC#87707-6 + TopicCode is LNC#87707-6 Element: JobDuty Based on: NonIndependentFinding Concept: LNC#63761-1 Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " FindingResult value is type string - FindingTopicCode is LNC#63761-1 + TopicCode is LNC#63761-1 Element: OccupationalHazard Based on: NonIndependentFinding Concept: LNC#87729-0 Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." FindingResult value is type string - FindingTopicCode is LNC#87729-0 + TopicCode is LNC#87729-0 Element: WorkSchedule Based on: CodedNonIndependentFinding @@ -179,7 +179,7 @@ includes 0..1 IsCurrentJob Description: "Typical arrangement of working hours for a person's job, as reported by the person." //Value: CodeableConcept from WorkScheduleVS FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 - FindingTopicCode is LNC#74159-5 + TopicCode is LNC#74159-5 Element: WeeklyWorkDays Based on: QuantitativeNonIndependentFinding @@ -187,7 +187,7 @@ includes 0..1 IsCurrentJob Description: "The average number of days per week that a person spends performing their duties for work." // TODO: bug preventing this // FindingResult.Quantity.Units is UCUM#d - FindingTopicCode is LNC#74160-3 + TopicCode is LNC#74160-3 0..0 ReferenceRange Element: DailyWorkHours @@ -195,7 +195,7 @@ includes 0..1 IsCurrentJob Concept: LNC#87512-0 Description: "The average number of hours in a day that a person spends performing their duties for work." // FindingResult.Quantity.Units is UCUM#h - FindingTopicCode is LNC#87512-0 + TopicCode is LNC#87512-0 0..0 ReferenceRange // Last minute addition 8/17 based on Genny's comment @@ -242,7 +242,7 @@ EntryElement: MilitaryServiceHistory Based on: CodedSocialHistoryObservation Description: "History of service in the US military." Category is OBSCAT#social-history - FindingTopicCode is MTH#C3714797 + TopicCode is MTH#C3714797 NonIndependentFinding includes 1..1 MilitaryStatus includes 0..1 MilitaryServiceDischargeStatus diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt index 38a23bdb..3a2adf9c 100644 --- a/spec/shr_occupation_map_dstu2.txt +++ b/spec/shr_occupation_map_dstu2.txt @@ -4,10 +4,10 @@ Target: FHIR_DSTU_2 SocialHistoryObservation maps to Observation: Patient maps to subject - FindingTopicCode maps to code + TopicCode maps to code Category maps to category NonIndependentFinding maps to component (slice on = code.coding.code; slice strategy = includes) - NonIndependentFinding.FindingTopicCode maps to component.code + NonIndependentFinding.TopicCode maps to component.code NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation diff --git a/spec/shr_occupation_map_stu3.txt b/spec/shr_occupation_map_stu3.txt index 0e4458fe..5c88330b 100644 --- a/spec/shr_occupation_map_stu3.txt +++ b/spec/shr_occupation_map_stu3.txt @@ -5,10 +5,10 @@ Target: FHIR_STU_3 // do not map to US Core Results -- Brett says that's only for labs SocialHistoryObservation maps to Observation: Patient maps to subject - FindingTopicCode maps to code + TopicCode maps to code Category maps to category NonIndependentFinding maps to component (slice on = code.coding.code; slice strategy = includes) - NonIndependentFinding.FindingTopicCode maps to component.code + NonIndependentFinding.TopicCode maps to component.code NonIndependentFinding.FindingResult maps to component.value[x] NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason //NonIndependentFinding.Interpretation maps to component.interpretation diff --git a/spec/shr_oncocore.txt b/spec/shr_oncocore.txt index 0cdbdc2c..7d645094 100644 --- a/spec/shr_oncocore.txt +++ b/spec/shr_oncocore.txt @@ -13,7 +13,7 @@ EntryElement: CancerDisorderPresent Based on: ConditionPresentAssertion Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" Description: "The presence of malignant neoplastic disease, in which abnormal cells divide without control and can invade nearby tissues." - FindingTopicCode from CancerDisorderVS + TopicCode from CancerDisorderVS // StageInformation.StageSummary from http://loinc.org/vs/LL240-3 // Commented out because LL240-3 only applies to TNM stage group - is this correct? StageInformation.StageDetail value is type CancerStagePanel // 0..1 MorphologyBehavior from MorphologyBehaviorVS //Not carried over from BrCa because it was intended to break out behavior codes from ICD-O-3, and we are no longer using it. @@ -25,7 +25,7 @@ Based on: SimpleCodedNonLaboratoryObservation // MK: Would this use a spec Description: "Classification of the cancer by the type of tissue in which the cancer originates. (Source: NCI)" Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." FindingResult from CancerHistologicTypeVS - FindingTopicCode is SCT#371441004 "Histologic type (observable entity)" + TopicCode is SCT#371441004 "Histologic type (observable entity)" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 AnatomicalLocation 0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated @@ -39,7 +39,7 @@ Based on: CodedLaboratoryObservation Description: "A description of a tumor based on how abnormal the cancer cells and tissue look under a microscope and how quickly the cancer cells are likely to grow and spread. Low-grade cancer cells look more like normal cells and tend to grow and spread more slowly than high-grade cancer cells. (Source: NCI Dictionary of Cancer Terms)" Concept: LNC#21858-6 "Grade Cancer" FindingResult from http://loinc.org/vs/LL213-0 - FindingTopicCode is LNC#21858-6 "Grade Cancer" + TopicCode is LNC#21858-6 "Grade Cancer" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) 0..0 AnatomicalLocation 0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated @@ -47,12 +47,13 @@ Concept: LNC#21858-6 "Grade Cancer" 0..0 Device 0..0 PanelMembers +// Progression needs Lesion evaluated {primary tumor, metastatic tumor} EntryElement: CancerProgression // aka DiseaseStatus Based on: CodedNonLaboratoryObservation Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" Concept: SCT#246453008 "Course of illness (attribute)" FindingResult from CancerProgressionVS - FindingTopicCode is SCT#246453008 "Course of illness (attribute)" + TopicCode is SCT#246453008 "Course of illness (attribute)" SpecificFocusOfFinding value is type ref(CancerDisorderPresent) // CancerProgressionEvidence is not yet part of M-CODE, but I don't see a better way to include it for FluxNotes 0..* CancerProgressionEvidence diff --git a/spec/shr_oncocore_stage.txt b/spec/shr_oncocore_stage.txt index f05444c8..d8aa2e19 100644 --- a/spec/shr_oncocore_stage.txt +++ b/spec/shr_oncocore_stage.txt @@ -54,7 +54,7 @@ EntryElement: TNMClinicalPrognosticStagePanel Based on: CancerStagePanel Concept: LNC#75620-5 "TNM clinical staging before treatment panel Cancer" Description: "A panel of staging information that is performed prior to surgery, based on evidence such as physical examination, imaging, and/or biopsy." - FindingTopicCode is LNC#75620-5 "TNM clinical staging before treatment panel Cancer" + TopicCode is LNC#75620-5 "TNM clinical staging before treatment panel Cancer" CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" // timing is implicit in LOINC code, so this attribute could potentially could be eliminated FindingMethod from TNMTumorStagingSystemVS if covered PanelMembers.Observation @@ -67,7 +67,7 @@ Description: "A panel of staging information that is performed prior to surge Based on: TNMStagePanelMember Concept: LNC#21908-9 "Stage group.clinical Cancer" Description: "The overall stage of the cancer, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies. (adapted from NCI Dictionary of Cancer Terms)." - FindingTopicCode is LNC#21908-9 "Stage group.clinical Cancer" + TopicCode is LNC#21908-9 "Stage group.clinical Cancer" FindingResult from http://loinc.org/vs/LL240-3 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" 0..0 CancerStageSuffix @@ -76,7 +76,7 @@ Description: "A panel of staging information that is performed prior to surge Based on: TNMStagePanelMember Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" Description: "Classification based on the size and extent of the primary tumor." - FindingTopicCode is LNC#21905-5 "Primary tumor.clinical [Class] Cancer" + TopicCode is LNC#21905-5 "Primary tumor.clinical [Class] Cancer" FindingResult from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" @@ -84,7 +84,7 @@ Description: "A panel of staging information that is performed prior to surge Based on: TNMStagePanelMember Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" Description: "The presence of metastases in regional lymph nodes, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies. (adapted from NCI Dictionary of Cancer Terms)" - FindingTopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" + TopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" FindingResult from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" @@ -92,7 +92,7 @@ Description: "A panel of staging information that is performed prior to surge Based on: TNMStagePanelMember Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" Description: "The presence of metastases in remote anatomical locations, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies." - FindingTopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" + TopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" FindingResult from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" @@ -101,7 +101,7 @@ EntryElement: TNMPathologicPrognosticStagePanel Based on: CancerStagePanel Concept: LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" Description: "A panel of staging information that is based on examination of tissue samples removed during surgery, in addition to physical examination and imaging and potentially, other prognostic factors." - FindingTopicCode is LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" + TopicCode is LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" 0..1 FindingMethod from TNMTumorStagingSystemVS if covered CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" PanelMembers.Observation @@ -115,7 +115,7 @@ Description: "A panel of staging information that is based on examination of Based on: TNMStagePanelMember Concept: LNC#21902-2 "Stage group.pathology Cancer" Description: "The overall stage of the cancer, determined through pathologic analysis of a tumor specimen, and classified based on criteria defined by the staging system." - FindingTopicCode is LNC#21902-2 "Stage group.pathology Cancer" + TopicCode is LNC#21902-2 "Stage group.pathology Cancer" FindingResult from http://loinc.org/vs/LL234-6 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" 0..0 CancerStageSuffix @@ -125,7 +125,7 @@ Description: "A panel of staging information that is based on examination of Based on: TNMStagePanelMember Concept: LNC#21899-0 "Primary tumor.pathology Cancer" Description: "TODO: pull from LOINC" //TODO: pull from LOINC - FindingTopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" + TopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" FindingResult from http://loinc.org/vs/LL232-0 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" @@ -133,7 +133,7 @@ Description: "A panel of staging information that is based on examination of Based on: TNMStagePanelMember Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" Description: "The presence of metastases in regional lymph nodes, obtained through pathologic analysis of a tumor specimen, and classified based on criteria defined by the staging system."" - FindingTopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" + TopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" FindingResult from http://loinc.org/vs/LL3136-0 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" @@ -141,7 +141,7 @@ Description: "A panel of staging information that is based on examination of Based on: TNMStagePanelMember Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" Description: "TODO: pull from LOINC" //TODO: pull from LOINC - FindingTopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative + TopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative FindingResult from http://loinc.org/vs/LL3137-8 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" */ diff --git a/spec/shr_oncocore_vs.txt b/spec/shr_oncocore_vs.txt index c00b1879..2b6d1b4f 100644 --- a/spec/shr_oncocore_vs.txt +++ b/spec/shr_oncocore_vs.txt @@ -32,7 +32,6 @@ MTH#C1457887 "Cancer progression determined based on physical signs or symptom MTH#C0031809 "Cancer progression determined based on physical examination" MTH#C0005516 "Cancer progression determined based on biomarkers" - ValueSet: CancerStageTimingVS //TODO: the value set is missing codes for recurrence and anatomical staging. //TODO: need new terms for post-therapeutic clinical and pathological staging. diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt index dac69682..3bf3b9b2 100644 --- a/spec/shr_tumor.txt +++ b/spec/shr_tumor.txt @@ -9,7 +9,7 @@ EntryElement: TumorPresent Based on: BodyStructurePresent Concept: SCT#395557000 "Tumor finding (finding)" Description: "The presence of an abnormal mass of tissue (neoplasm) that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). (source: NCI Dictionary)." - FindingTopicCode from TumorMorphologyVS + TopicCode from TumorMorphologyVS // note - like other existential findings, the topic code is WHAT is present or absent, and the result code is present or absent (in this case, present) 0..1 IsPrimaryTumor @@ -24,7 +24,7 @@ Based on: CodedLaboratoryObservation Concept: SCT#263605001 "Tumor size (observable entity)" 0..0 FindingResult SpecificFocusOfFinding value is type ref(TumorPresent) - FindingTopicCode is SCT#263605001 "Tumor size (observable entity)" + TopicCode is SCT#263605001 "Tumor size (observable entity)" 0..0 PanelMembers NonIndependentFinding includes 0..1 TumorDimension1 @@ -36,28 +36,28 @@ includes 0..1 SizeOfGrossTumorBed Description: "The longest dimension of the tumor." Based on: QuantitativeNonIndependentFinding Concept: SCT#372299002 "Tumor size, dimension 1 (observable entity)" - FindingTopicCode is SCT#372299002 "Tumor size, dimension 1 (observable entity)" + TopicCode is SCT#372299002 "Tumor size, dimension 1 (observable entity)" // FindingResult.Quantity.Units is UCUM#mm Element: TumorDimension2 Description: "The second longest dimension of the tumor, perpendicular to the longest dimension." Based on: QuantitativeNonIndependentFinding Concept: SCT#372300005 "Tumor size, dimension 2 (observable entity)" - FindingTopicCode is SCT#372300005 "Tumor size, dimension 2 (observable entity)" + TopicCode is SCT#372300005 "Tumor size, dimension 2 (observable entity)" // FindingResult.Quantity.Units is UCUM#mm Element: TumorDimension3 Description: "The third longest dimension of the tumor, perpendicular to the two longest dimensions." Based on: QuantitativeNonIndependentFinding Concept: SCT#372301009 "Tumor size, dimension 3 (observable entity)" - FindingTopicCode is SCT#372301009 "Tumor size, dimension 3 (observable entity)" + TopicCode is SCT#372301009 "Tumor size, dimension 3 (observable entity)" // FindingResult.Quantity.Units is UCUM#mm Element: SizeOfGrossTumorBed Based on: QuantitativeNonIndependentFinding Concept: TBD Description: "The largest dimension of the gross tumor bed/fibrotic area." - FindingTopicCode is TBD#TBD + TopicCode is TBD#TBD // FindingResult.Quantity.Units is UCUM#mm @@ -66,7 +66,7 @@ Based on: CodedLaboratoryObservation Concept: MTH#C4086369 Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." FindingResult from PositiveNegativeVS - FindingTopicCode is MTH#C4086369 + TopicCode is MTH#C4086369 0..0 PanelMembers NonIndependentFinding includes 0..1 TumorMarginDescription diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 8b98c189..fdeead09 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -72,7 +72,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t Onset value is type dateTime // nowhere to put code LOINC 85585-8 Date of Onset {mm/dd/yyyy} Abatement value is type dateTime // nowhere to put code 88878-4 Date of abatement {mm/dd/yyyy} 1..1 Category is OBSCAT#exam -1..1 FindingTopicCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered +1..1 TopicCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered 0..1 ObjectIdentifier is type WoundIdentifier 0..1 ConditionCause is type WoundTypeEtiology 1..1 AnatomicalLocationStructured is type WoundAnatomicalLocation @@ -104,7 +104,7 @@ EntryElement: WoundAbsenceAssertion Based on: ConditionAbsentAssertion Description: "Documents the absence of a wound at a given body site. No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicalLocation." -1..1 FindingTopicCode is SCT#416462003 "Wound (disorder)" +1..1 TopicCode is SCT#416462003 "Wound (disorder)" 1..1 Category is OBSCAT#exam 1..1 AnatomicalLocationStructured is type WoundAnatomicalLocation @@ -120,7 +120,7 @@ Description: "Group of observations regarding the properties and severity of a w Interpretation is type WoundAssessmentInterpretation 0..0 AnatomicalLocation // carried by wound assertion 0..0 Device - FindingTopicCode is LNC#39135-9 + TopicCode is LNC#39135-9 0..0 ReferenceRange 0..* Media is type PhotographicImage // 72170-4 Photographic image [Media] NonIndependentFinding @@ -205,7 +205,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89254-7 Description: "The appearance of the base (bed) of the wound, together with the percentage of the bed with each type of appearance." 1..1 WoundIdentifier - FindingTopicCode is LNC#89254-7 + TopicCode is LNC#89254-7 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device NonIndependentFinding @@ -230,7 +230,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: TBD Description: "Color of part or all of the wound base (bed), and the percentage of the area with that color." 1..1 WoundIdentifier - FindingTopicCode is TBD#TBD + TopicCode is TBD#TBD 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device NonIndependentFinding @@ -258,7 +258,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89256-2 Description: "The state of the tissue at the edge of the wound." 1..1 WoundIdentifier - FindingTopicCode is LNC#89256-2 + TopicCode is LNC#89256-2 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device NonIndependentFinding @@ -284,7 +284,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89257-0 Description: "A discharging blind-ended track that extends from the surface of an organ to an underlying area or abscess cavity. The track is invariably lined with granulation tissue. In chronic cases this may be augmented with epithelial tissue." 1..1 WoundIdentifier - FindingTopicCode is LNC#89257-0 + TopicCode is LNC#89257-0 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device NonIndependentFinding @@ -313,7 +313,7 @@ EntryElement: WoundUnderminingObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89258-8 Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage around the wound margin. Undermining are narrow sinus tracts away from the wound margins and go downward into the wound." - FindingTopicCode is LNC#89258-8 + TopicCode is LNC#89258-8 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device @@ -339,7 +339,7 @@ EntryElement: WoundExudateObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72292-6 Description: "Description of the fluid produced by a wound." - FindingTopicCode is LNC#72292-6 + TopicCode is LNC#72292-6 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device @@ -389,7 +389,7 @@ EntryElement: WoundSizeObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72287-6 Description: "The estimated or measured dimensions of a wound." - FindingTopicCode is LNC#72287-6 + TopicCode is LNC#72287-6 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device From 6c721759e3794736b0a337465738405563b7700c Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sat, 26 Jan 2019 12:15:14 -0500 Subject: [PATCH 167/289] Renaming to align with FHIR ObservationComponent removed from main class hierarchy --- spec/LandingPageBreastCancer.html | 6 +-- spec/shr_allergy.txt | 2 +- spec/shr_base.txt | 16 +++---- spec/shr_base_action.txt | 2 +- spec/shr_base_finding.txt | 70 ++++++++++++++-------------- spec/shr_base_map_dstu2.txt | 20 ++++---- spec/shr_base_map_stu3.txt | 16 ++++--- spec/shr_base_vs.txt | 2 +- spec/shr_brca.txt | 76 +++++++++++++++---------------- spec/shr_brca_vs.txt | 2 +- spec/shr_core_map_dstu2.txt | 1 + spec/shr_core_map_stu3.txt | 1 + spec/shr_familyhistory.txt | 2 +- spec/shr_genetics.txt | 10 ++-- spec/shr_medication.txt | 4 +- spec/shr_occupation.txt | 52 ++++++++++----------- spec/shr_occupation_map_dstu2.txt | 14 +++--- spec/shr_occupation_map_stu3.txt | 14 +++--- spec/shr_oncocore.txt | 2 +- spec/shr_oncocore_stage.txt | 2 +- spec/shr_procedure.txt | 2 +- spec/shr_tumor.txt | 18 ++++---- spec/shr_wound.txt | 72 ++++++++++++++--------------- 23 files changed, 209 insertions(+), 197 deletions(-) diff --git a/spec/LandingPageBreastCancer.html b/spec/LandingPageBreastCancer.html index a530765d..848e5f64 100644 --- a/spec/LandingPageBreastCancer.html +++ b/spec/LandingPageBreastCancer.html @@ -84,7 +84,7 @@

    Class Hierarchy

    • -
      Locatable* > Independent > Content > DomainResource > Finding > FindingStatement > Observation > LaboratoryObservation > CodedLaboratoryObservation > BreastCancerHistologicGrade
      +
      Locatable* > Independent > Content > DomainResource > ConditionOrObservation > FindingStatement > Observation > LaboratoryObservation > CodedLaboratoryObservation > BreastCancerHistologicGrade
    @@ -94,8 +94,8 @@

    Class Hierarchy

    This class hierarchy is a central feature of CIMI. To fully describe the CIMI modeling approach is beyond the scope of this IG, and the reader is referred to CIMI Modeling Architecture, Methodology & Style Guide. However, it is important to understand a central CIMI tenet, the Topic-Context pattern. 

    The CIMI Topic-Context Pattern

    -

    CIMI develops several class hierarchies. The first is the Finding hierarchy, exemplified by the BreastCancerHistologicGrade hierarchy, above. A clinical statement represents a fact, opinion, or observation that relates to a patient, for example, "the patient has a diagnosis of congestive heart failure" or "patient has an order for physical therapy" [CIMI Modeling and Quality Guide]. 

    -

    However, Finding is not the only class needed to construct a clinical statement. The clinical statement itself has no clinical content; to gain content, the Finding class must reference a topic and a context. The topic is the clinical entity being described by the Clinical Finding, for example, a laboratory test. The context describes the circumstance applied to the topic. For example, we can speak of "blood pressure of 120/80" as an observation or a goal; similarly, we can speak of a procedure as recommended, ordered, planned, performed, or not performed. Both the topic and context are defined in class hierarchies of their own. For example, for the BreastCancerHistologicGrade, the topic hierarchy is as follows:

    +

    CIMI develops several class hierarchies. The first is the ConditionOrObservation hierarchy, exemplified by the BreastCancerHistologicGrade hierarchy, above. A clinical statement represents a fact, opinion, or observation that relates to a patient, for example, "the patient has a diagnosis of congestive heart failure" or "patient has an order for physical therapy" [CIMI Modeling and Quality Guide]. 

    +

    However, ConditionOrObservation is not the only class needed to construct a clinical statement. The clinical statement itself has no clinical content; to gain content, the ConditionOrObservation class must reference a topic and a context. The topic is the clinical entity being described by the Clinical ConditionOrObservation, for example, a laboratory test. The context describes the circumstance applied to the topic. For example, we can speak of "blood pressure of 120/80" as an observation or a goal; similarly, we can speak of a procedure as recommended, ordered, planned, performed, or not performed. Both the topic and context are defined in class hierarchies of their own. For example, for the BreastCancerHistologicGrade, the topic hierarchy is as follows:

    • Locatable* > NonIndependent > StatementTopic > TopicCode > ObservationTopic > LaboratoryObservationTopic
    diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index f0098963..6c3b422f 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -8,7 +8,7 @@ CodeSystem: CAT = http://hl7.org/fhir/allergy-intolerance-category EntryElement: AllergyIntolerance -Based on: Finding +Based on: ConditionOrObservation Concept: SCT#473010000 "Hypersensitivity condition (disorder)" // or SCT#420134006 "Propensity to adverse reactions (disorder)"? Description: "A finding related to the presence of an individual's risk or sensitivity to a substance or class of substances. An AllergyIntolerancePresent finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time. Per US Core specification, the result includes SNOMED codes representing 'No known allergy'. In AllergyIntolerance, the reactions are included in-line, rather than referencing to conditions (in notable contrast to AdverseEvent)." diff --git a/spec/shr_base.txt b/spec/shr_base.txt index a992d624..d4b89e19 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -10,8 +10,8 @@ CodeSystem: NCI = https://evs.nci.nih.gov/ftp1/CDISC/SDTM/ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category // NOTE: Entry will eventually be deprecated, as its fields are really a part -// of the implementation, NOT a part of the model. Once the CIMPL tooling -// makes these implicit, Entry and its field elements can go away. +// of the implementation, not part of the model. Once the CIMPL tooling +// makes these implicit, Entry and its field elements will go away. Element: Entry Concept: MTH#C1705654 Description: "Obsolete. Use DomainResource" @@ -37,13 +37,13 @@ Description: "Obsolete. Use DomainResource" Abstract Element: DomainResource Concept: MTH#C1705654 Description: "Parent class for any item in clinical or administrative health-related system. Contains metadata attributes that apply to any item represented in the standard health record. An DomainResource can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." -1..1 TopicCode // Question, test name, encounter type, condition, etc. +1..1 TopicCode // TopicCode makes sense at the DomainResource Level 0..1 Narrative 0..1 Language 0..1 Metadata Element: TopicCode - Description: "A code describing what the domain resource concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist (present) or not exist (absent). The result of the evaluation is found in the FindingResult. " + Description: "A code describing what the domain resource concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist (present) or not exist (absent). The result of the evaluation is found in the FindingResult." Value: CodeableConcept @@ -81,12 +81,12 @@ Description: "Elements that belong to all information items." Value: CodeableConcept Element: SecurityLabel - Concept: TBD + Concept: MTH#C3858779 "security classification" Description: "A code that connects the entry to a security policy. Security labels can be updated when the resource changes, or whenever the security sub-system chooses to." Value: CodeableConcept Element: Tag - Concept: TBD + Concept: MTH#C4280044 "Metatags" Description: "A code used to relate entries to categories or workflows. Applications are not required to consider the tags when interpreting the meaning of an entry." Value: CodeableConcept @@ -143,17 +143,17 @@ Description: "Elements that belong to all information items." EntryElement: Composition Based on: DomainResource -Description: "A composition represents a set of Entries sharing common provenance, adocument such as an extract from a patient record, a knowledge artifact, or a catalog definition." +Description: "A composition represents a set of Entries sharing common provenance, a document such as an extract from a patient record, a knowledge artifact, or a catalog definition." //1..1 Status from http://hl7.org/fhir/ValueSet/composition-status //1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes //1..1 CreationTime -- from Entry -- maps to date 0..* Section Element: Section - Based on: DomainResource Description: "Represents a section containing entries in a composition." //0..1 Title 0..* DomainResource + 0..* Section /* diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index daea5385..1412e72e 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -16,7 +16,7 @@ Description: "Abstract class representing any type of action." Element: Reason Concept: MTH#C0566251 Description: "The justification for an action or non-action, etc." - Value: string or CodeableConcept or ref(Finding) + Value: string or CodeableConcept or ref(ConditionOrObservation) Abstract Element: ActionPerformed Based on: ActionStatement diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index b7fcbe14..9e097783 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -4,23 +4,23 @@ Description: "Contains the SHR Entry definition -- the metadata added to any ind Uses: shr.core, shr.entity, shr.encounter -Abstract Element: NonIndependentFinding -Based on: DomainResource +Abstract Element: ObservationComponent Description: "A finding that does not or cannot stand alone, or a component of another finding." -// should we have finding protocol, finding precondition, finding question, finding data, finding interpretation? -// how do we handle normal? (physical exam normal) +// should an observation component have additional properties, such as protocol, circumstance, or interpretation? +// how do we handle a normal? (physical exam normal) // exclusions? (diabetes excluded) +1..1 TopicCode 0..1 FindingResult -0..1 ExceptionValue +0..1 DataAbsentReason 0..1 ReferenceRange // included here only because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. -// TODO: 0..1 Interpretation +0..1 Interpretation Element: FindingResult Description: "The value or result of a test, evaluation, or judgment, for example, a systolic blood pressure, or if a condition or body structure is present or absent." Value: CodeableConcept or Quantity or string or Range or Ratio or time or dateTime or TimePeriod // exclude boolean because FHIR STU3 component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 - Element: ExceptionValue + Element: DataAbsentReason Concept: TBD Description: "Reason that a value associated with a test or other finding is missing." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/data-absent-reason if covered @@ -43,22 +43,25 @@ Description: "A finding that does not or cannot stand alone, or a component of Description: "The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says so." // FHIR: how exactly does one indicate a neonatal or prenatal age? Value: Range -Abstract Element: CodedNonIndependentFinding -Based on: NonIndependentFinding +Abstract Element: CodedObservationComponent +Based on: ObservationComponent Description: "A non-independent finding whose result is a concept code." FindingResult value is type CodeableConcept 0..0 ReferenceRange -Abstract Element: QuantitativeNonIndependentFinding -Based on: NonIndependentFinding +Abstract Element: QuantitativeObservationComponent +Based on: ObservationComponent Description: "A non-independent finding whose result is a quantity." FindingResult value is type Quantity -Abstract Element: Finding -Based on: NonIndependentFinding // A Finding has elements that allow it to be independently observed. It's a modeling compromise that allows better mapping. +Abstract Element: ConditionOrObservation +Based on: DomainResource Description: "An assertion, determination, opinion, evaluation, result, observation, or measurement made by a person or device." +1..1 TopicCode +0..1 FindingResult +0..1 DataAbsentReason 0..1 Patient -0..1 Encounter // findings are often associated with specific encounters +0..1 Encounter 1..1 FindingStatus 0..1 SpecificFocusOfFinding @@ -83,14 +86,14 @@ Description: "An assertion, determination, opinion, evaluation, result, observat Value: CodeableConcept EntryElement: Observation -Based on: Finding +Based on: ConditionOrObservation Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. -Observation has a value representing the result (answer), or an ExceptionValue indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments. +Observation has a value representing the result (answer), or an DataAbsentReason indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments. For an Observation, the TopicCode describes the aspect or property of the subject being observed or measured. The TopicCode is the 'question code' that pairs to the 'answer' contained in the Value." 0..1 FindingMethod 0..1 RelevantTime -0..* NonIndependentFinding +0..* ObservationComponent FindingStatus from http://hl7.org/fhir/ValueSet/observation-status //0..1 DeltaFlag 0..1 Category from http://hl7.org/fhir/ValueSet/observation-category if covered // MK Category cardinality from 0..* to 0..1 to be compatible with DSTU 2 @@ -99,6 +102,7 @@ For an Observation, the TopicCode describes the aspect or property of the subjec 0..1 Interpretation 0..1 Device 0..1 PanelMembers +0..1 ReferenceRange Element: Observer Concept: MTH#C0449416 @@ -143,7 +147,7 @@ Description: "An observation not based on a specimen." EntryElement: SimpleNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation having no components or panel members" -0..0 NonIndependentFinding +0..0 ObservationComponent 0..0 PanelMembers EntryElement: CodedNonLaboratoryObservation @@ -156,14 +160,14 @@ Description: "The result of evaluations (measurements, tests, or questions) whos EntryElement: SimpleCodedNonLaboratoryObservation Based on: CodedNonLaboratoryObservation Description: "An observation whose result is a code, and also having no components or panel members" -0..0 NonIndependentFinding +0..0 ObservationComponent 0..0 PanelMembers EntryElement: ComponentOnlyNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation with components, but without a result value or panel members." 0..0 FindingResult -0..0 ExceptionValue +0..0 DataAbsentReason 0..0 PanelMembers 0..0 ReferenceRange @@ -188,13 +192,13 @@ Description: "A coded finding from a laboratory test." EntryElement: SimpleLaboratoryObservation Based on: LaboratoryObservation Description: "A coded finding from a laboratory test without further panel members or components." -0..0 NonIndependentFinding +0..0 ObservationComponent 0..0 PanelMembers EntryElement: SimpleCodedLaboratoryObservation Based on: CodedLaboratoryObservation Description: "A coded finding from a laboratory test without further panel members or components." -0..0 NonIndependentFinding +0..0 ObservationComponent 0..0 PanelMembers @@ -202,7 +206,7 @@ Abstract Element: Panel Based on: Observation Description: "A set of independent but related observations that are often presented together to facilitate interpretation, such as a lipid panel." 0..0 FindingResult // true panel composed of observations only -0..0 NonIndependentFinding // true panel composed of observations only +0..0 ObservationComponent // true panel composed of observations only 0..0 AnatomicalLocation 0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated 0..0 AnatomicalLocation.AnatomicalLocationStructured @@ -214,19 +218,19 @@ Abstract Element: HeadlessPanel Based on: Panel Description: "A panel that does not have an overall value that summarizes the entire panel." 0..0 FindingResult -0..0 ExceptionValue +0..0 DataAbsentReason 0..0 ReferenceRange //---------- Assertions ------------- Abstract Element: ExistenceAssertion -Based on: Finding +Based on: ConditionOrObservation Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place. For assertions, the TopicCode represents the thing asserted to be present or absent; i.e., the type of condition, event, relationship or phenomenon that is being asserted to exist or not exist." TopicCode is type ConditionOrDiagnosisCode FindingResult is type PresentOrAbsent -// Leave ExceptionValue in, to represent the case where the presence or absence of something was not evaluated +// Leave DataAbsentReason in, to represent the case where the presence or absence of something was not evaluated 0..0 ReferenceRange 0..1 ObjectIdentifier // TODO: 0..* business identifier? //0..1 Certainty @@ -246,25 +250,25 @@ For assertions, the TopicCode represents the thing asserted to be present or abs Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." Value: Identifier - Element: Certainty // TODO: why not move to Finding? + Element: Certainty // TODO: why not move to ConditionOrObservation? Concept: TBD Description: "The degree of confidence in a conclusion or assertion." Value: CodeableConcept Abstract Element: PresenceAssertion Based on: ExistenceAssertion -Description: "Finding that a phenomena is present." +Description: "ConditionOrObservation that a phenomena is present." // TODO: Not sure we should have to say .CodeableConcept for the constraint below to work (currently causes error) 1..1 PresentOrAbsent is SCT#52101004 "Present (qualifier value)" -0..0 ExceptionValue +0..0 DataAbsentReason //0..1 Certainty from PresenceCertaintyVS Abstract Element: AbsenceAssertion Based on: ExistenceAssertion -Description: "Finding that an entity, person, role, condition, or phenomenon is absent." +Description: "ConditionOrObservation that an entity, person, role, condition, or phenomenon is absent." 1..1 PresentOrAbsent is SCT#2667000 "Absent (qualifier value)" -0..0 ExceptionValue +0..0 DataAbsentReason //0..1 Certainty from AbsenceCertaintyVS @@ -291,7 +295,7 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Element: ConditionCause Description: "The cause of the condition. This includes such causes as disease vectors and endogenous states (e.g., macular degeneration due to diabetes), substances, medications, micro-organisms, and forces associated with the occurrence of a Condition from temporal or causative perspectives" - Value: CodeableConcept or ref(Entity) or ref(Finding) + Value: CodeableConcept or ref(Entity) or ref(ConditionOrObservation) // probably other attributes needed, such as likelihood or type of cause Element: ClinicalStatus @@ -403,4 +407,4 @@ Description: "A body structure such as wound or tumor, observed to be present in 0..1 RelevantTime 0..0 SpecificFocusOfFinding 0..0 ReferenceRange -0..0 ExceptionValue +0..0 DataAbsentReason diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 315ca48a..5ac26613 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -14,8 +14,10 @@ DomainResource maps to DomainResource: Metadata.Tag maps to meta.tag Composition maps to Composition: + TopicCode maps to type Section maps to section Section.DomainResource maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) + Section.Section maps to section.section Narrative maps to Narrative: NarrativeText maps to div @@ -42,18 +44,18 @@ Observation maps to Observation: // ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo // dstu 2 change (no such attribute) // ReferenceRange.ApplicableAgeRange maps to referenceRange.age - NonIndependentFinding maps to component (slice on = code.coding.code; slice strategy = includes) - NonIndependentFinding.TopicCode maps to component.code - NonIndependentFinding.FindingResult maps to component.value[x] - NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason + ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) + ObservationComponent.TopicCode maps to component.code + ObservationComponent.FindingResult maps to component.value[x] + ObservationComponent.DataAbsentReason maps to component.dataAbsentReason // dstu 2 change (no such attribute) - //NonIndependentFinding.Interpretation maps to component.interpretation - NonIndependentFinding.ReferenceRange maps to component.referenceRange + //ObservationComponent.Interpretation maps to component.interpretation + ObservationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) FindingResult maps to value[x] - ExceptionValue maps to dataAbsentReason + DataAbsentReason maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued FindingStatus maps to status @@ -99,4 +101,6 @@ BodyStructurePresent maps to BodySite: AnatomicalLocationStructured.Laterality maps to modifier (slice on = coding.code) AnatomicalLocationStructured.AnatomicalDirection maps to modifier AnatomicalLocationStructured.CommentOrDescription maps to description - AnatomicalLocationStructured.Media maps to image \ No newline at end of file + AnatomicalLocationStructured.Media maps to image + AnatomicalLocationStructured.DistanceFromLandmark maps to extension + \ No newline at end of file diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index d10d4a2e..21201779 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -15,8 +15,10 @@ DomainResource maps to DomainResource: Metadata.Tag maps to meta.tag Composition maps to Composition: + TopicCode maps to type Section maps to section Section.DomainResource maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) + Section.Section maps to section.section Narrative maps to Narrative: NarrativeText maps to div @@ -38,16 +40,16 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.Type maps to referenceRange.type ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age - NonIndependentFinding maps to component (slice on = code.coding.code; slice strategy = includes) - NonIndependentFinding.TopicCode maps to component.code - NonIndependentFinding.FindingResult maps to component.value[x] - NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason - //NonIndependentFinding.Interpretation maps to component.interpretation - NonIndependentFinding.ReferenceRange maps to component.referenceRange + ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) + ObservationComponent.TopicCode maps to component.code + ObservationComponent.FindingResult maps to component.value[x] + ObservationComponent.DataAbsentReason maps to component.dataAbsentReason + //ObservationComponent.Interpretation maps to component.interpretation + ObservationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) FindingResult maps to value[x] - ExceptionValue maps to dataAbsentReason + DataAbsentReason maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued FindingStatus maps to status diff --git a/spec/shr_base_vs.txt b/spec/shr_base_vs.txt index 82f323c7..e32b409e 100644 --- a/spec/shr_base_vs.txt +++ b/spec/shr_base_vs.txt @@ -21,7 +21,7 @@ SCT#310048009 "Genetics service (procedure) - note: should be in the Snomed (q SCT#708178001 "Cytogenetics service (qualifier) -- Laboratory that uses blood and other cells to get a karyotype. This can be helpful in prenatal diagnosis (e.g. Down's syndrome) as well as in cancer (some cancers have abnormal chromosomes)." */ -ValueSet: ExceptionValueVS +ValueSet: DataAbsentReasonVS Description: "Reasons that a value associated with a test or other finding is missing. Includes all codes from http://hl7.org/fhir/ValueSet/data-absent-reason version 3.3.0 and additional codes covering other missing value circumstances." #unknown "Unknown: The value is not known." #asked-unknown "Asked But Unknown: The source human does not know the value." diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 765d0ab5..d4e2e5d3 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -73,7 +73,7 @@ Description: "HER2 receptor status. HER2 is a member of the human epidermal grow TopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" Specimen is type BreastSpecimen 0..0 FindingMethod -0..0 NonIndependentFinding +0..0 ObservationComponent PanelMembers.Observation includes 0..* HER2byIHC includes 0..* HER2byFISH @@ -84,17 +84,17 @@ Based on: CodedLaboratoryObservation Concept: LNC#85319-2 Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (IHC). " FindingResult from HER2byIHCScoreVS - ExceptionValue from HER2byIHCScoreNullVS + DataAbsentReason from HER2byIHCScoreNullVS Interpretation from PositiveNegativeEquivocalVS TopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" 0..0 FindingMethod // pre-coordinated in the TopicCode Specimen is type BreastSpecimen - NonIndependentFinding + ObservationComponent includes 0..1 CompleteMembraneStainingPercent 0..0 PanelMembers Element: CompleteMembraneStainingPercent - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#85328-3 "Cells.HER2 uniform intense membrane staining/100 cells" Description: "Percentage of cells with uniform intense complete membrane staining." // Awaiting bug fix @@ -107,31 +107,31 @@ Based on: LaboratoryObservation Concept: LNC#85318-4 // Corrected 5/12/2018 by MK Description: "HER2 receptor status as determined by single-probe or dual-probe Fluorescence In Situ Hybridization (FISH)." 0..0 FindingResult -0..0 ExceptionValue +0..0 DataAbsentReason TopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" FindingMethod from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS Specimen is type BreastSpecimen - NonIndependentFinding + ObservationComponent includes 0..1 AverageHER2SignalsPerCell includes 0..1 AverageCEP17SignalsPerCell includes 0..1 HER2toCEP17Ratio 0..0 PanelMembers Element: AverageHER2SignalsPerCell - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#74860-8 Description: "Average number of HER2 signals per cell" 0..0 ReferenceRange Element: AverageCEP17SignalsPerCell - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#74861-6 Description: "Average number CEP17 signals per cell (dual probe only)" 0..0 ReferenceRange Element: HER2toCEP17Ratio - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#49683-6 Description: "HER2 to CEP17 Ratio (dual probe only)" 0..0 ReferenceRange @@ -144,7 +144,7 @@ The current approach is that positive/negative designation is a value, even thou TopicCode is LNC#16112-5 FindingResult from PositiveNegativeVS Specimen is type BreastSpecimen - NonIndependentFinding + ObservationComponent includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers @@ -157,13 +157,13 @@ Based on discussion with Cancer Interoperability Group subject matter experts, t TopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" FindingResult from PositiveNegativeVS Specimen is type BreastSpecimen - NonIndependentFinding + ObservationComponent includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers Element: NuclearPositivity - Based on: NonIndependentFinding + Based on: ObservationComponent Concept: TBD // apparently no LOINC code Description: "The percentage of cells that test (stain) positive for the presence of a receptor. We are seeking feedback on whether nuclear positivity should be an exact percentage or a range of percentages. As currently defined, an exact nuclear positivity could be represented by a zero-width range, where the lower and upper bounds would be the same number." @@ -171,7 +171,7 @@ includes 0..1 AverageStainingIntensity Element: AverageStainingIntensity Concept: SCT#444775005 "Average intensity of positive staining neoplastic cells (observable entity)" - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Description: "The degree or magnitude of staining (nuclear positivity) across cells in the specimen." FindingResult from StainingIntensityVS @@ -190,9 +190,9 @@ Based on: CancerHistologicGrade Description: "The Elston Grade/Nottingham Score, representative of the aggressive potential of the tumor. Well differentiated cells (Grade 1) look similar to normal cells and are usually slow growing, while poorly differentiated cells (Grade 3) look very different than normal and are fast-growing." TopicCode is LNC#44648-4 FindingResult from NottinghamCombinedGradeVS - ExceptionValue from NottinghamNullVS + DataAbsentReason from NottinghamNullVS Specimen is type BreastSpecimen - NonIndependentFinding + ObservationComponent includes 0..1 TubuleFormationScore includes 0..1 NuclearPleomorphismScore includes 0..1 MitoticCountScore @@ -202,24 +202,24 @@ includes 0..1 MitoticCountScore //RMB: the CAP form has two additional options for each of these subcomponents: "only microinvasion present" and "no residual invasive carcinoma", both of which are situations where a histologic grade wouldn't be assigned. Because the our exceptions value set doesn't handle these options (and possibly others related to other data elements, should we allow for a string option to contain reasons for missing data? Otherwise the expection value set might become unruly. Element: TubuleFormationScore Concept: LNC#85321-8 "Granular differentiation" // SHOULD BE LOINC - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Description: "Glandular differentiation [Score] in Breast cancer specimen Qualitative by Nottingham." FindingResult from TubuleFormationScoreVS //TODO: Determine if it is better to use codes as opposed to a number 1, 2 or 3. Observations don't support integer or posInteger - ExceptionValue from NottinghamComponentNullVS + DataAbsentReason from NottinghamComponentNullVS Element: NuclearPleomorphismScore Concept: LNC#44645-0 - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Description: "Nuclear pleomorphism in Breast tumor Qualitative by Nottingham." FindingResult from NuclearPleomorphismScoreVS - ExceptionValue from NottinghamComponentNullVS + DataAbsentReason from NottinghamComponentNullVS Element: MitoticCountScore Concept: LNC#85300-2 - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Description: "Mitotic rate [Score] in Breast cancer specimen Qualitative by Nottingham." FindingResult from MitoticCountScoreVS // 1 to 3 //RMB: this shouldn't be different from TubuleFormationScore and NuclearPleomorphismScore. They have the same scoring mechanism. Suggest using local codes. - ExceptionValue from MitoticCountScoreNullVS + DataAbsentReason from MitoticCountScoreNullVS EntryElement: OncotypeDxInvasiveRecurrenceScore Based on: SimpleLaboratoryObservation @@ -269,21 +269,21 @@ The is currently no LOINC code for Mammaprint test." Element: BreastCancerPrimaryTumorClassification Concept: SCT#78873005 "T category" - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Description: "The size and extent of the primary tumor, based on criteria defined by the staging system being used." Value: CodeableConcept 0..1 StageSuffix Element: BreastCancerRegionalNodesClassification Concept: SCT#277206009 "N category" //RMB: was LNC#59525-6, which is specific to AJCC 7th edition - Based on: NonIndependentFinding + Based on: ObservationComponent Description: "The presence of metastases in regional lymph nodes, based on criteria defined by the staging system being used." Value: CodeableConcept 0..1 StageSuffix Element: BreastCancerDistantMetastasesClassification Concept: SCT#277208005 "M category (observable entity)" //RMB: was LNC#59522-3, which is specific to AJCC 7th edition - Based on: NonIndependentFinding + Based on: ObservationComponent Description: "The presence of distant metastases, based on criteria defined by the staging system being used." Value: CodeableConcept @@ -302,62 +302,62 @@ includes 0..1 OtherReceptorScoringSystem Element: Aneusomy - Based on: NonIndependentFinding + Based on: ObservationComponent Concept: CAP#30478 Description: "Aneusomy (as defined by vendor kit used)" Value: CodeableConcept from YesNoVS Element: HeterogeneousSignals - Based on: NonIndependentFinding + Based on: ObservationComponent Concept: CAP#30482 Description: "Whether In Situ Hybridization signals were heterogeneous." Value: CodeableConcept from YesNoVS Element: PercentageAmplified - Based on: NonIndependentFinding + Based on: ObservationComponent Concept: CAP#31073 Description: "Percentage of cells with amplified HER2 signals" Value: Quantity with units UCUM#% Element: NuclearPositivity - Based on: NonIndependentFinding + Based on: ObservationComponent Concept: TBD Description: "The percentage of cells that test (stain) positive for the presence of a receptor." Value: Range Element: PrimaryAntibody - Based on: NonIndependentFinding + Based on: ObservationComponent Concept: CAP#31092 Description: "" Value: CodeableConcept Element: StainingControl - Based on: NonIndependentFinding + Based on: ObservationComponent Concept: CAP#25895 Description: "Whether control cells were present." Value: CodeableConcept from StainingControlVS if covered Element: AllredProportionScore Concept: CAP#31054 - Based on: NonIndependentFinding + Based on: ObservationComponent Description: "Part of Allred scoring, based on the percentage of cells that stain for a receptor, on a scale of 0 to 5." Value: IntegerQuantity Element: AllredIntensityScore Concept: CAP#29749 - Based on: NonIndependentFinding + Based on: ObservationComponent Description: "Part of the Allred scoring, based on the intensity of that staining, on a scale of 0 to 3." Value: IntegerQuantity Element: AllredTotalScore Concept: CAP#31056 - Based on: NonIndependentFinding + Based on: ObservationComponent Description: "The total Allred score, the total of proportion and intensity scores, from 0 to 8." Value: IntegerQuantity // unsignedInt - limit to max of 8 Element: OtherReceptorScoringSystem Concept: CAP#31062 - Based on: NonIndependentFinding + Based on: ObservationComponent Description: "A scoring system other than Allred." Element: Ki-67LabelingIndex @@ -366,7 +366,7 @@ includes 0..1 OtherReceptorScoringSystem Description: "Ki-67 is a protein phosphatase whose expression is strongly associated with cell proliferation and encoded by the MKI67 gene. The Ki67 labeling index is the fraction of Ki-67-positive cells to total cells in a tumor specimen and may be useful for determining prognosis with respect to survival and disease recurrence. The more positive cells there are, the more quickly they are dividing and forming new cells. ReferenceRange: Low <10, Intermediate 10-20, >20 High" Value: Quantity with units UCUM#% TopicCode is LNC#29593-1 - NonIndependentFinding + ObservationComponent includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered Element: S-PhaseFraction @@ -385,11 +385,11 @@ Value: CodeableConcept from PositiveNegativeVS 0..0 ReferenceRange //0..0 DeltaFlag 0..0 AnatomicalLocationd - NonIndependentFinding + ObservationComponent includes 0..1 Refseq Element: Refseq - Based on: NonIndependentFinding + Based on: ObservationComponent Concept: TBD Description: "The Reference Sequence (RefSeq) collection provides a comprehensive, integrated, non-redundant, well-annotated set of sequences, including genomic DNA, transcripts, and proteins. RefSeq sequences form a foundation for medical, functional, and diversity studies. They provide a stable reference for genome annotation, gene identification and characterization, mutation and polymorphism analysis (especially RefSeqGene records), expression studies, and comparative analyses." Value: CodeableConcept from RefseqVS @@ -399,7 +399,7 @@ Concept: TBD Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." Observation.TopicCode is TBD#TBD -0..0 NonIndependentFinding +0..0 ObservationComponent PanelMembers.EvaluationresultRecorded includes 1..1 BRCA1Variant includes 1..1 BRCA2Variant diff --git a/spec/shr_brca_vs.txt b/spec/shr_brca_vs.txt index 35c0be5d..78968222 100644 --- a/spec/shr_brca_vs.txt +++ b/spec/shr_brca_vs.txt @@ -116,7 +116,7 @@ SCT#369792005 "Nottingham Combined Grade III: 8-9 points (finding)" ValueSet: NottinghamNullVS //MK 7/14/2018 Added one missing code for the normative list. -Description: "Data absent reasons (null values) for Nottingham Combined Grade scores. Removes non-applicable values from the ExceptionValueVS, and adds values that align with LOINC normative answer list LL4561-8" +Description: "Data absent reasons (null values) for Nottingham Combined Grade scores. Removes non-applicable values from the DataAbsentReasonVS, and adds values that align with LOINC normative answer list LL4561-8" LNC#LA27219-7 "Only microinvasion present (not graded)" LNC#LA27220-5 "No residual invasive carcinoma after presurgical (neoadjuvant) therapy" LNC#LA11884-6 "Indeterminate" diff --git a/spec/shr_core_map_dstu2.txt b/spec/shr_core_map_dstu2.txt index 39fbfe7c..8dfb3e86 100644 --- a/spec/shr_core_map_dstu2.txt +++ b/spec/shr_core_map_dstu2.txt @@ -129,6 +129,7 @@ AnatomicalLocationStructured maps to BodySite: AnatomicalDirection maps to modifier CommentOrDescription maps to description Media maps to image + DistanceFromLandmark maps to extension Annotation maps to Annotation: Text maps to text diff --git a/spec/shr_core_map_stu3.txt b/spec/shr_core_map_stu3.txt index 7a3e1ea4..8caefb00 100644 --- a/spec/shr_core_map_stu3.txt +++ b/spec/shr_core_map_stu3.txt @@ -123,6 +123,7 @@ AnatomicalLocationStructured maps to BodySite: AnatomicalDirection maps to qualifier CommentOrDescription maps to description Media maps to image + DistanceFromLandmark maps to extension Annotation maps to Annotation: Text maps to text diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index 1b4cecd8..cce04b45 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -11,7 +11,7 @@ Description: "A related person that is a family member of the patient. This incl EntryElement: FamilyMemberHealthHistory -Based on: Finding +Based on: ConditionOrObservation Concept: LNC#54114-4 "Family member health history [USSG-FHT] Family member" //This is part of a US General Surgeon general family health LOINC panel Description: "The health history of a patient's family member." 1..1 Patient diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index 1c72cb51..8a480ffa 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -44,19 +44,19 @@ Description: "A human readable name for the region of interest. Typically Exon # Value: string Element: DNASequenceVariantName -Based on: NonIndependentFinding +Based on: ObservationComponent Concept: LNC#48004-6 "DNA change (c.HGVS)" Description: "Human Genome Variation Society (HGVS) nomenclature for a single DNA marker. The use of the nomenclature must be extended to describe non-variations (aka. wild types) see samples for wild type examples. (source: LOINC)" Value: string Element: DNASequenceVariantId -Based on: NonIndependentFinding +Based on: ObservationComponent Concept: LNC#48003-8 "DNA sequence variation identifier [Identifier]" Description: "A DNA Marker identifier conveys a universal or standard repository identifier for definitive characterstics of a DNA Marker. (recommend using NCBI dbSNP ids - rs#) (source: LOINC)" Value: string Element: DNASequenceVariantType -Based on: CodedNonIndependentFinding +Based on: CodedObservationComponent Concept: LNC#48005-3 "DNA change type" Description: "Codified type for associated DNA Marker. DNA Marker's use the HGVS notation which implies the DNA Marker Type, but the concurrent use of this code will allow a standard and explicit type for technical and display convenience." Value: CodeableConcept from DNAChangeTypeVS @@ -69,7 +69,7 @@ Description: "A substance found in tissue or blood or other body fluids that may SpecificFocusOfFinding value is type ref(CancerDisorderPresent) TopicCode is LNC#21924-6 "Tumor marker Cancer" FindingResult from TumorMarkerVS if covered -0..0 NonIndependentFinding +0..0 ObservationComponent 0..0 AnatomicalLocation 0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated 0..0 AnatomicalLocation.AnatomicalLocationStructured @@ -79,7 +79,7 @@ Description: "A substance found in tissue or blood or other body fluids that may /* Element: TumorMarkerName Concept: LNC#TBD "TBD" -Based on: CodedNonIndependentFinding +Based on: CodedObservationComponent Description: "TBD (source: LOINC)" TopicCode is LNC#TBD FindingResult from TBD diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index cc8899d4..10977c4c 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -101,11 +101,11 @@ Modeling note: MedicationAdherence could be attached to MedicationStatement dire FindingResult from QualitativeFrequencyVS TopicCode is MTH#C2364172 1..1 SpecificFocusOfFinding value is type ref(Medication) - NonIndependentFinding + ObservationComponent includes 0..* MedicationNonAdherenceReason Element: MedicationNonAdherenceReason - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Description: "Reason that patient did not adhere to a medication regimen." FindingResult from MedicationNonAdherenceReasonVS TopicCode is TBD#TBD diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 88cbc356..39574be7 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -34,7 +34,7 @@ A person's Employment Status could change over time, for example, a person could Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" -0..0 NonIndependentFinding +0..0 ObservationComponent 0..0 FocalSubjectModifier EntryElement: RetirementDate @@ -45,7 +45,7 @@ A person can be both retired and employed (an Employment Status); most often, a Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." FindingResult value is type dateTime TopicCode is LNC#87510-4 "Date of Retirement" -0..0 NonIndependentFinding +0..0 ObservationComponent 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. 0..0 FocalSubjectModifier @@ -56,7 +56,7 @@ Description: "Self-reported date range(s) when a person worked in what is consid Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones. Multiple periods in combat zone should be recorded using multiple FHIR resources." Value: TimePeriod TopicCode is LNC#87511-2 -0..0 NonIndependentFinding +0..0 ObservationComponent 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. 0..0 FocalSubjectModifier // only patient @@ -69,14 +69,14 @@ Example: a person has worked for a total of 30 years as a 'secretary' (Occupatio Usual Work does not include work that was unpaid or voluntary." FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 TopicCode is LNC#21843-8 - NonIndependentFinding + ObservationComponent includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration 1..1 RelevantTime RelevantTime value is type TimePeriod Element: UsualIndustry - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#21844-6 "History of Usual industry" Description: "The industry (type of business) which the subject has worked in for the longest duration while in the usual occupation. For example, a person who has spent 30 years as a secretary in various industries, but mostly in construction, would record a usual occupation of secretary and a usual industry of construction." // "A history of this observation is not retained. Actually past versions of the observation could be retained, but the panel should refer to the latest one only. @@ -86,7 +86,7 @@ includes 0..1 UsualOccupationDuration TopicCode is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#74163-7 "Usual occupation duration" Description: "The total time spent on an activity, inclusive of all time intervals, whether continuous or interrupted." // FindingResult.Quantity.Units is UCUM#a @@ -100,10 +100,10 @@ A person can have more than one job at the same time and multiple jobs over time A person's job can be a social determinant of their health and information about a person's job can support patient care, population health, and public health. In patient care, knowledge of a person's past or present job(s) can impact recognition, diagnosis, management, and treatment of injuries and illnesses. These data also can be used for clinical decision support and to prompt discussion of preventive care measures. For example, a record of jobs that require prolonged time in the sun might prompt a health care provider to inquire if the person wears protective clothing or sunscreen while working. At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." 0..0 FindingResult -0..0 ExceptionValue +0..0 DataAbsentReason TopicCode is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization - NonIndependentFinding + ObservationComponent includes 0..1 Occupation includes 0..1 PastOrPresentIndustry includes 0..1 WorkClassification @@ -118,7 +118,7 @@ includes 0..1 IsCurrentJob RelevantTime value is type TimePeriod Element: Occupation - Based on: CodedSocialHistoryObservation + Based on: CodedObservationComponent Concept: LNC#85659-1 "Occupation CDC Census code" FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 @@ -136,7 +136,7 @@ includes 0..1 IsCurrentJob Description: "An Organization as defined in FHIR" Element: PastOrPresentIndustry - Based on: CodedSocialHistoryObservation + Based on: CodedObservationComponent Concept: LNC#86188-0 Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." // Value: CodeableConcept from IndustryVS @@ -144,7 +144,7 @@ includes 0..1 IsCurrentJob TopicCode is LNC#86188-0 Element: WorkClassification - Based on: CodedSocialHistoryObservation + Based on: CodedObservationComponent Concept: LNC#85104-8 "Compensation and sector employment type" Description: "Type of compensation and sector for a person's job, such as 'paid work, self-employed' or 'voluntary work', as reported by the person." //Value: CodeableConcept from WorkClassificationVS @@ -152,7 +152,7 @@ includes 0..1 IsCurrentJob TopicCode is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#87707-6 Description: "A coded indicator of responsibilities for directing work and personnel management responsibilities for a person's job, as reported by the person. For US military jobs, this is pay grade." //Value: CodeableConcept from SupervisoryLevelVS @@ -160,21 +160,21 @@ includes 0..1 IsCurrentJob TopicCode is LNC#87707-6 Element: JobDuty - Based on: NonIndependentFinding + Based on: ObservationComponent Concept: LNC#63761-1 Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " FindingResult value is type string TopicCode is LNC#63761-1 Element: OccupationalHazard - Based on: NonIndependentFinding + Based on: ObservationComponent Concept: LNC#87729-0 Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." FindingResult value is type string TopicCode is LNC#87729-0 Element: WorkSchedule - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#74159-5 Description: "Typical arrangement of working hours for a person's job, as reported by the person." //Value: CodeableConcept from WorkScheduleVS @@ -182,7 +182,7 @@ includes 0..1 IsCurrentJob TopicCode is LNC#74159-5 Element: WeeklyWorkDays - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#74160-3 Description: "The average number of days per week that a person spends performing their duties for work." // TODO: bug preventing this @@ -191,7 +191,7 @@ includes 0..1 IsCurrentJob 0..0 ReferenceRange Element: DailyWorkHours - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#87512-0 Description: "The average number of hours in a day that a person spends performing their duties for work." // FindingResult.Quantity.Units is UCUM#h @@ -200,7 +200,7 @@ includes 0..1 IsCurrentJob // Last minute addition 8/17 based on Genny's comment Element: IsCurrentJob - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Description: "A flag indicating if this is the person's current job (at the time the resource was last updated)." FindingResult from YesNoVS @@ -215,7 +215,7 @@ Description: "A simplified observation for social histories." 0..0 PanelMembers 0..0 Device 0..0 Specimen -0..0 ExceptionValue +0..0 DataAbsentReason 0..0 Interpretation 0..0 Encounter //0..0 DeltaFlag @@ -233,7 +233,7 @@ Description: "The result of social history questions, whose answer is expressed /* UsualWork is in the value element Element: UsualWork - Based on: NonIndependentFinding + Based on: ObservationComponent Concept: LNC#21843-8 "History of Usual Occupation" // Occupation is LNC#74287-4 Description: "A person's work or business" Value: CodeableConcept from http://hl7.org/fhir/ValueSet/occupation-cdc-census-2010 // VS defined in FHIR 3.2 and not found in 3.0.1 @@ -243,7 +243,7 @@ Based on: CodedSocialHistoryObservation Description: "History of service in the US military." Category is OBSCAT#social-history TopicCode is MTH#C3714797 - NonIndependentFinding + ObservationComponent includes 1..1 MilitaryStatus includes 0..1 MilitaryServiceDischargeStatus includes 0..1 MilitaryBranch @@ -254,30 +254,30 @@ includes 0..1 ServiceConnectedDisability Element: MilitaryStatus Concept: MTH#C1550416 - Based on: NonIndependentFinding + Based on: ObservationComponent Description: "The current connection to the US military." Value: CodeableConcept from MilitaryStatusVS Element: MilitaryServiceDischargeStatus Concept: TBD - Based on: NonIndependentFinding + Based on: ObservationComponent Description: "How the subject was formally discharged from the US Military." Value: CodeableConcept from MilitaryServiceDischargeStatusVS Element: MilitaryBranch Concept: MTH#C2129058 - Based on: NonIndependentFinding + Based on: ObservationComponent Description: "The branch of the US military that the subject has served." Value: CodeableConcept from USMilitaryBranchVS Element: MilitaryServiceEra Concept: TBD - Based on: NonIndependentFinding + Based on: ObservationComponent Description: "The time period of US military service." Value: CodeableConcept from MilitaryServiceEraVS Element: ServiceConnectedDisability - Based on: NonIndependentFinding + Based on: ObservationComponent Concept: TBD Description: "Percentage disability resulting from US Military Service." Value: Quantity with units UCUM#% diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt index 3a2adf9c..2afed3e9 100644 --- a/spec/shr_occupation_map_dstu2.txt +++ b/spec/shr_occupation_map_dstu2.txt @@ -6,14 +6,14 @@ SocialHistoryObservation maps to Observation: Patient maps to subject TopicCode maps to code Category maps to category - NonIndependentFinding maps to component (slice on = code.coding.code; slice strategy = includes) - NonIndependentFinding.TopicCode maps to component.code - NonIndependentFinding.FindingResult maps to component.value[x] - NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason - //NonIndependentFinding.Interpretation maps to component.interpretation - NonIndependentFinding.ReferenceRange maps to component.referenceRange + ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) + ObservationComponent.TopicCode maps to component.code + ObservationComponent.FindingResult maps to component.value[x] + ObservationComponent.DataAbsentReason maps to component.dataAbsentReason + //ObservationComponent.Interpretation maps to component.interpretation + ObservationComponent.ReferenceRange maps to component.referenceRange FindingResult maps to value[x] - ExceptionValue maps to dataAbsentReason + DataAbsentReason maps to dataAbsentReason RelevantTime maps to effective[x] Encounter maps to context constrain implicitRules to 0..0 diff --git a/spec/shr_occupation_map_stu3.txt b/spec/shr_occupation_map_stu3.txt index 5c88330b..6afe238c 100644 --- a/spec/shr_occupation_map_stu3.txt +++ b/spec/shr_occupation_map_stu3.txt @@ -7,15 +7,15 @@ SocialHistoryObservation maps to Observation: Patient maps to subject TopicCode maps to code Category maps to category - NonIndependentFinding maps to component (slice on = code.coding.code; slice strategy = includes) - NonIndependentFinding.TopicCode maps to component.code - NonIndependentFinding.FindingResult maps to component.value[x] - NonIndependentFinding.ExceptionValue maps to component.dataAbsentReason - //NonIndependentFinding.Interpretation maps to component.interpretation - NonIndependentFinding.ReferenceRange maps to component.referenceRange + ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) + ObservationComponent.TopicCode maps to component.code + ObservationComponent.FindingResult maps to component.value[x] + ObservationComponent.DataAbsentReason maps to component.dataAbsentReason + //ObservationComponent.Interpretation maps to component.interpretation + ObservationComponent.ReferenceRange maps to component.referenceRange // constrain related to 0..0 FindingResult maps to value[x] -// ExceptionValue maps to dataAbsentReason +// DataAbsentReason maps to dataAbsentReason RelevantTime maps to effective[x] // Encounter maps to context // constrain implicitRules to 0..0 diff --git a/spec/shr_oncocore.txt b/spec/shr_oncocore.txt index 7d645094..9d9bbf96 100644 --- a/spec/shr_oncocore.txt +++ b/spec/shr_oncocore.txt @@ -62,7 +62,7 @@ Concept: SCT#246453008 "Course of illness (attribute)" 0..0 AnatomicalLocation.AnatomicalLocationStructured 0..0 Device 0..0 PanelMembers -0..0 NonIndependentFinding +0..0 ObservationComponent Element: CancerProgressionEvidence Description: "The type of evidence considered in determining disease progression." diff --git a/spec/shr_oncocore_stage.txt b/spec/shr_oncocore_stage.txt index d8aa2e19..5f355495 100644 --- a/spec/shr_oncocore_stage.txt +++ b/spec/shr_oncocore_stage.txt @@ -39,7 +39,7 @@ Description: "Abstract parent class for members of cancer staging panels. Can 0..1 FindingMethod is type CancerStagingSystem 0..0 AnatomicalLocation 0..0 ReferenceRange -0..0 NonIndependentFinding +0..0 ObservationComponent 0..0 PanelMembers 0..0 Device diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 7e7b93e5..2a043d83 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -46,7 +46,7 @@ Description: "A procedure that has been performed." Element: OutputFinding Description: "Patient findings documented during the performance of the procedure." - Value: ref(Finding) + Value: ref(ConditionOrObservation) EntryElement: ProcedureNotPerformed diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt index 3bf3b9b2..92567b8c 100644 --- a/spec/shr_tumor.txt +++ b/spec/shr_tumor.txt @@ -26,7 +26,7 @@ Concept: SCT#263605001 "Tumor size (observable entity)" SpecificFocusOfFinding value is type ref(TumorPresent) TopicCode is SCT#263605001 "Tumor size (observable entity)" 0..0 PanelMembers - NonIndependentFinding + ObservationComponent includes 0..1 TumorDimension1 includes 0..1 TumorDimension2 includes 0..1 TumorDimension3 @@ -34,27 +34,27 @@ includes 0..1 SizeOfGrossTumorBed Element: TumorDimension1 Description: "The longest dimension of the tumor." - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: SCT#372299002 "Tumor size, dimension 1 (observable entity)" TopicCode is SCT#372299002 "Tumor size, dimension 1 (observable entity)" // FindingResult.Quantity.Units is UCUM#mm Element: TumorDimension2 Description: "The second longest dimension of the tumor, perpendicular to the longest dimension." - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: SCT#372300005 "Tumor size, dimension 2 (observable entity)" TopicCode is SCT#372300005 "Tumor size, dimension 2 (observable entity)" // FindingResult.Quantity.Units is UCUM#mm Element: TumorDimension3 Description: "The third longest dimension of the tumor, perpendicular to the two longest dimensions." - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: SCT#372301009 "Tumor size, dimension 3 (observable entity)" TopicCode is SCT#372301009 "Tumor size, dimension 3 (observable entity)" // FindingResult.Quantity.Units is UCUM#mm Element: SizeOfGrossTumorBed - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: TBD Description: "The largest dimension of the gross tumor bed/fibrotic area." TopicCode is TBD#TBD @@ -68,7 +68,7 @@ Description: "The edge or border of the tissue removed in cancer surgery. The ma FindingResult from PositiveNegativeVS TopicCode is MTH#C4086369 0..0 PanelMembers - NonIndependentFinding + ObservationComponent includes 0..1 TumorMarginDescription includes 0..1 Cellularity // not sure this belongs here includes 0..1 PercentageInSituCarcinoma // not sure this belongs here @@ -76,18 +76,18 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Element: TumorMarginDescription Concept: TBD - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Description: "Description of the edge or border of tumor in situ by radiologist or of removed tumor by pathologist." FindingResult from TumorMarginDescriptionVS Element: Cellularity Concept: MTH#C4055283 - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Description: "Percentage of cells in a sample that are cancerous" // FindingResult.Quantity.Units is UCUM#% Element: PercentageInSituCarcinoma - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: TBD Description: "The percentage of the cancer that is in situ, as opposed to invading other tissues." // FindingResult.Quantity.Units is UCUM#% diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index fdeead09..f24b2971 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -115,7 +115,7 @@ Based on: NonLaboratoryObservation Concept: LNC#39135-9 Description: "Group of observations regarding the properties and severity of a wound." 0..0 FindingResult -0..0 ExceptionValue +0..0 DataAbsentReason 1..1 WoundIdentifier Interpretation is type WoundAssessmentInterpretation 0..0 AnatomicalLocation // carried by wound assertion @@ -123,7 +123,7 @@ Description: "Group of observations regarding the properties and severity of a w TopicCode is LNC#39135-9 0..0 ReferenceRange 0..* Media is type PhotographicImage // 72170-4 Photographic image [Media] - NonIndependentFinding + ObservationComponent includes 0..1 WoundEpisode // very similar to Episodicity or ClinicalStatus, but value set is different. includes 0..1 WoundTrend includes 0..1 WoundPeriwoundDescription // 72301-5 Description of Periwound @@ -142,46 +142,46 @@ includes 0..1 WoundExudateObservation // 72292-6 Wound exudate observation includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Element: WoundEpisode - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#89252-1 "Episode of Wound" Description: "Wound episode refers to a period of the wound, an incident in the course of a wound" FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.4/expansion Element: WoundPeriwoundDescription - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#72301-5 Description: "A description of the skin around the wound (periwound). Color, induration, warmth and edema should be assessed. Redness of the surrounding skin can be indicative of unrelieved pressure. Irritation of the surrounding skin can result from exposure to feces or urine, a reaction to the dressing or tape, or inappropriate removal of dressing or tape. Redness, tenderness, warmth and swelling are classical clinical signs of infection. [Reference: Brown, P., 2009]" FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.2/expansion //could be from http://loinc.org/vs/LL2216-1 Element: WoundVisibleInternalStructure - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#89250-5 Description: "Exposed body structures, devices, and/or foreign bodies visible by the naked eye in a wound." FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.1/expansion // should be from http://loinc.org/vs/LL4935-4 Element: WoundPressureUlcerAssociation - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: TBD Description: "Is the wound associated with a device or pressure point?" FindingResult from YesNoUnknownVS Element: WoundTunnelingPresentOrAbsent - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#72298-3 Description: "The presence or absence of wound tunneling." FindingResult from PresentAbsentVS // LOINC: should re-use the same Snomed codes for Present-Absent Element: WoundUnderminingPresentOrAbsent - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#72295-9 Description: "The presence or absence of wound undermining." FindingResult from PresentAbsentVS Element: WoundExudatePresentOrAbsent - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#89259-6 Description: "The presence or absence of wound exudate." FindingResult from PresentAbsentVS @@ -193,7 +193,7 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Value: CodeableConcept from http://loinc.org/vs/LL3816-7 if covered // underpowered? 'normal' and 'other' Element: WoundTrend - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#89253-9 Description: "Whether a condition is improving, worsening, stable, or resolved." FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.5/expansion // should be from http://loinc.org/vs/LL4938-8 with values improved, deteriorated, stablized or resolved. Resolved is missing from the VS in VSAC @@ -208,18 +208,18 @@ Description: "The appearance of the base (bed) of the wound, together with the p TopicCode is LNC#89254-7 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - NonIndependentFinding + ObservationComponent includes 1..1 WoundBedAppearance includes 1..1 WoundBedAppearancePercentage Element: WoundBedAppearance - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#72371-8 Description: "Appearance of wound base (bed)." FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.6/expansion //could be from http://loinc.org/vs/LL2237-7 Element: WoundBedAppearancePercentage - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#72370-0 Description: "Area of wound bed appearance/Entire ​Area of wound bed." // FindingResult.Quantity.Units is UCUM#% @@ -233,20 +233,20 @@ Description: "Color of part or all of the wound base (bed), and the percentage o TopicCode is TBD#TBD 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - NonIndependentFinding + ObservationComponent includes 1..1 WoundBedColor includes 1..1 WoundBedColorAreaPercentage // LOINC: Why precoordinate a general concept such as 'color' with the concept of wound bed? Element: WoundBedColor - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#39132-6 Description: "Color of Wound base (bed)." FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.7/expansion //could be from http://loinc.org/vs/LL2338-3 // LOINC: Why precoordinate a general concept such as 'percentage of area' with the concept of wound bed? Element: WoundBedColorAreaPercentage - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#89255-4 Description: "Wound bed area identified by color/​Area of wound bed." // TODO: waiting on bug fix @@ -261,20 +261,20 @@ Description: "The state of the tissue at the edge of the wound." TopicCode is LNC#89256-2 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - NonIndependentFinding + ObservationComponent includes 1..1 WoundEdgeDescription includes 0..1 WoundEdgeColor // LOINC:Is the entire edge of the wound described by one color? Or should it be by percentage, similar to the wound bed? // LOINC: Why precoordinate a general concept such as 'color' with the concept of wound edge? Element: WoundEdgeDescription - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#72304-9 Description: "Edge of wound description." FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.8/expansion // could be from http://loinc.org/vs/LL2230-2 Element: WoundEdgeColor - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#39133-4 Description: "Color of Wound edge." FindingResult could be from http://loinc.org/vs/LL2338-3 @@ -287,7 +287,7 @@ Description: "A discharging blind-ended track that extends from the surface of a TopicCode is LNC#89257-0 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - NonIndependentFinding + ObservationComponent includes 0..1 WoundTunnelLength includes 0..1 WoundTunnelClockDirection @@ -295,7 +295,7 @@ includes 0..1 WoundTunnelClockDirection // LOINC: why precoordinate clock position + tunneling? Element: WoundTunnelLength - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#72296-7 Description: "Length of wound tunneling." // FindingResult.Quantity.Units is UCUM#cm @@ -303,7 +303,7 @@ includes 0..1 WoundTunnelClockDirection // LOINC: should require use the full clock position value set Element: WoundTunnelClockDirection - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#72297-5 Description: "Clock position of wound tunnel" FindingResult from ClockDirectionVS @@ -317,12 +317,12 @@ Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage aro 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - NonIndependentFinding + ObservationComponent includes 0..1 WoundUnderminingLength includes 0..1 WoundUnderminingClockDirection Element: WoundUnderminingLength - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#72293-4 Description: "Length of wound undermining." // FindingResult.Quantity.Units is UCUM#cm @@ -330,7 +330,7 @@ includes 0..1 WoundUnderminingClockDirection // LOINC: should require use the full clock position value set Element: WoundUnderminingClockDirection - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#72294-2 Description: "Clock position of wound undermining" FindingResult from ClockDirectionVS @@ -343,7 +343,7 @@ Description: "Description of the fluid produced by a wound." 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - NonIndependentFinding + ObservationComponent includes 0..1 WoundExudateAmount includes 0..1 WoundExudateVolume includes 1..1 WoundExudateAppearance @@ -353,33 +353,33 @@ includes 0..1 WoundExudateOdor // LOINC: Wound area should be in wound size panel, not wound exudate panel Element: WoundExudateAmount - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#39116-9 Description:"Drainage amount of wound" FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.10/expansion //could be from http://loinc.org/vs/LL2222-9 Element: WoundExudateVolume - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#39122-7 Description:"Appearance of exudate from wound" // FindingResult.Quantity.Units is UCUM#mL 0..0 ReferenceRange Element: WoundExudateAppearance - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#72290-0 Description:"Appearance of exudate from wound" FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.11/expansion //could be from http://loinc.org/vs/LL2220-3 Element: WoundExudateColor - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#72289-2 Description:"Color of exudate from wound" FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.12/expansion // could be from http://loinc.org/vs/LL2219-5 Element: WoundExudateOdor - Based on: CodedNonIndependentFinding + Based on: CodedObservationComponent Concept: LNC#72288-4 Description:"Odor of exudate from wound" FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.13/expansion @@ -393,35 +393,35 @@ Description: "The estimated or measured dimensions of a wound." 1..1 WoundIdentifier 0..0 AnatomicalLocation // location is given by the wound assertion 0..0 Device - NonIndependentFinding + ObservationComponent includes 1..1 WoundLength includes 1..1 WoundWidth includes 0..1 WoundDepth includes 0..1 WoundArea Element: WoundLength - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#39126-8 Description: "Length of the wound (longest dimension)." // FindingResult.Quantity.Units is UCUM#cm 0..0 ReferenceRange Element: WoundWidth - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#39125-0 Description: "Width of the wound (perpendicular to longest dimension)." // FindingResult.Quantity.Units is UCUM#cm 0..0 ReferenceRange Element: WoundDepth - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#39127-6 Description: "Depth of the wound." // FindingResult.Quantity.Units is UCUM#cm 0..0 ReferenceRange Element: WoundArea - Based on: QuantitativeNonIndependentFinding + Based on: QuantitativeObservationComponent Concept: LNC#89260-4 Description: "Area of the wound." // FindingResult.Quantity.Units with units UCUM#cm2 From 2c7c37488002f2d803743b86629667506d7c0c84 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sun, 27 Jan 2019 13:42:16 -0500 Subject: [PATCH 168/289] Further FHIR alignment FindingResult -> DataValue Status -> RequestStatus, PerformanceStatus, etc. Get rid of "Assertion" in names --- spec/LandingPageBreastCancer.html | 2 +- spec/shr_adverse.txt | 7 +- spec/shr_allergy.txt | 39 ++------ spec/shr_allergy_map_dstu2.txt | 6 +- spec/shr_allergy_map_stu3.txt | 4 +- spec/shr_allergy_vs.txt | 2 +- spec/shr_base.txt | 10 +- spec/shr_base_action.txt | 23 +++-- spec/shr_base_finding.txt | 160 +++++++++++------------------- spec/shr_base_map_dstu2.txt | 18 ++-- spec/shr_base_map_stu3.txt | 22 ++-- spec/shr_base_vs.txt | 70 +++++++------ spec/shr_brca.txt | 48 ++++----- spec/shr_core.txt | 6 -- spec/shr_encounter.txt | 18 ++-- spec/shr_encounter_map_dstu2.txt | 4 +- spec/shr_encounter_map_stu3.txt | 4 +- spec/shr_familyhistory.txt | 15 +-- spec/shr_financial.txt | 13 ++- spec/shr_financial_map_dstu2.txt | 4 +- spec/shr_financial_map_stu3.txt | 4 +- spec/shr_genetics.txt | 14 +-- spec/shr_medication.txt | 14 +-- spec/shr_medication_map_dstu2.txt | 6 +- spec/shr_medication_map_stu3.txt | 6 +- spec/shr_occupation.txt | 39 ++++---- spec/shr_occupation_map_dstu2.txt | 4 +- spec/shr_occupation_map_stu3.txt | 4 +- spec/shr_oncocore.txt | 26 ++--- spec/shr_oncocore_stage.txt | 32 +++--- spec/shr_procedure.txt | 8 +- spec/shr_procedure_map_dstu2.txt | 4 +- spec/shr_procedure_map_stu3.txt | 4 +- spec/shr_research.txt | 17 ++-- spec/shr_research_map_dstu2.txt | 4 +- spec/shr_research_map_stu3.txt | 4 +- spec/shr_tumor.txt | 20 ++-- spec/shr_wound.txt | 70 ++++++------- 38 files changed, 349 insertions(+), 406 deletions(-) diff --git a/spec/LandingPageBreastCancer.html b/spec/LandingPageBreastCancer.html index 848e5f64..84131f5b 100644 --- a/spec/LandingPageBreastCancer.html +++ b/spec/LandingPageBreastCancer.html @@ -14,7 +14,7 @@

    Table of Contents

Guidance for HL7 Voters

This section provides orientation to the ballot materials.

-

Where to SpecificFocusOfFinding

+

Where to Focus

There are several representations of the same content in the ballot materials. Different representations will be useful to different audiences:

  • Clinicians and cancer domain experts should primarily focus on the logical models. These models are the simplest representation of the content included in the ballot. Value sets will also be of interest.
  • diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt index abfe0366..084f78b7 100644 --- a/spec/shr_adverse.txt +++ b/spec/shr_adverse.txt @@ -33,7 +33,7 @@ Description: "A record of an untoward or unexpected event in a patient under tre Element: AdverseEventCondition Concept: MTH#C1280464 Description: "The condition, sign or symptom triggering the adverse event report." - 1..1 ref(ConditionPresentAssertion) + 1..1 ref(ConditionPresent) Element: CausalAttribution Concept: MTH#C1510821 "Adverse Event Attribution to Product or ProcedurePerformed" @@ -53,6 +53,11 @@ Description: "A record of an untoward or unexpected event in a patient under tre Description: "Whether the adverse event is attributed to a treatment, course of the disease, unrelated to either, or unknown. " Value: CodeableConcept from AttributionCategoryVS + Element: Certainty + Concept: TBD + Description: "The degree of confidence in a conclusion or assertion." + Value: CodeableConcept + Element: ActionTaken Concept: TBD Description: "The action taken as a result of the adverse reaction. May include changing or discontinuing medication, reducing dose, etc." diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index 6c3b422f..50f75ffc 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -15,15 +15,14 @@ Description: "A finding related to the presence of an individual's risk or sensi Metadata.InformationSource value is type PatientOrPractitionerOrRelatedPerson Metadata.InformationRecorder value is type PatientOrPractitioner // FHIR only allows Patient or Practitioner as recorder 1..1 Patient -1..1 FindingStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status -0..0 SpecificFocusOfFinding // always the patient +1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status +0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status +0..0 Focus // always the patient 1..1 TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" -1..1 FindingResult // from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered // DSTU 2 change different required value sets) +1..1 DataValue // from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered // DSTU 2 change different required value sets) 0..1 SubstanceCategory // DSTU 2 change (restrict upper cardinality to 1) 0..1 Onset 0..1 AllergyIntoleranceType -0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status -//1..1 AllergyVerificationStatus -- used FindingStatus 0..1 Criticality 0..1 MostRecentOccurrenceTime 0..* AllergyIntoleranceReaction @@ -34,31 +33,17 @@ Description: "A finding related to the presence of an individual's risk or sensi Value: CodeableConcept from http://hl7.org/fhir/ValueSet/allergy-intolerance-category // change to code? Element: AllergyIntoleranceType - Concept: TBD Description: "Whether the sensitivity is an allergy or intolerance, in other words, high level information on the mechanism of the adverse reaction." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/allergy-intolerance-type -/* - Element: ClinicalStatus - Concept: TBD - Description: "A flag indicating whether the condition is active or inactive, recurring, in remission, or resolved (as of the last update of the Condition)." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/allergy-clinical-status - - Element: AllergyVerificationStatus - Concept: TBD - Description: "Whether an assessment has been confirmed by testing or observation." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/allergy-verification-status -*/ Element: MostRecentOccurrenceTime - Concept: TBD Description: "The time of the last or latest of a series of events." Value: dateTime Element: AllergyIntoleranceReaction - Concept: TBD Description: "Observed reaction event associated with the allergy or intolerance, expressed as a condition." 0..1 SubstanceCode - 1..* Manifestation + 1..* Manifestation could be from http://hl7.org/fhir/ValueSet/clinical-findings 0..1 BeginDateTime // from core 0..1 Severity from http://hl7.org/fhir/ValueSet/reaction-event-severity 0..1 RouteIntoBody @@ -66,26 +51,18 @@ Description: "A finding related to the presence of an individual's risk or sensi Element: SubstanceCode Concept: TBD - Description: "The substance triggering a particular allergy or intolerance reaction event. The substance may be the same as the substance cited in the AllergyIntolerance, but should be a specific substance rather than a class of substances, if known. For example, if the allergy intolerance FindingResult substance is 'shellfish' the substance code for the reaction might be 'oyster'." + Description: "The substance triggering a particular allergy or intolerance reaction event. The substance may be the same as the substance cited in the AllergyIntolerance, but should be a specific substance rather than a class of substances, if known. For example, if the allergy intolerance DataValue substance is 'shellfish' the substance code for the reaction might be 'oyster'." Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered - Element: Manifestation - Concept: TBD - Description: "The clinical symptoms/signs associated with the reaction event." - Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/clinical-findings - - - - /* Probably the most consistent way to define the absence (no known) allergy is to use an absence assertion, but this is not the way US Core has decided to go. Comments here are for reference only. EntryElement: AllergyIntoleranceAbsent -Based on: AbsenceAssertion +Based on: ConditionAbsent Description: "Used to record that a particular substance or class of substances does not pose a known elevated risk to the subject. The certainly of absence is always 'no known' because definitively ruling out an allergy intolerance is not possible." - TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" // We don't use a code that represents the absence of the condition and whose FindingResult would therefore be true or false (rather than present/absent) + TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" // We don't use a code that represents the absence of the condition and whose DataValue would therefore be true or false (rather than present/absent) 1..1 AllergenIrritant 0..* SubstanceCategory 1..1 Certainty is SCT#443508001 "No history of clinical finding in subject (situation)" // no known diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index 3f1b3ac2..2e601362 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -8,11 +8,11 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a Metadata.InformationSource maps to asserter Metadata.InformationRecorder maps to recorder Metadata.AuthoredDateTime maps to assertedDate - FindingResult maps to substance + DataValue maps to substance AllergyIntoleranceType maps to type SubstanceCategory maps to category -/* DSTU 2: FindingStatus and ClinicalStatus map to one attribute, status. This is a problem. For now, eliminating mappings so native DSTU 2 status is supported. - FindingStatus maps to verificationStatus +/* DSTU 2: VerificationStatus and ClinicalStatus map to one attribute, status. This is a problem. For now, eliminating mappings so native DSTU 2 status is supported. + VerificationStatus maps to verificationStatus ClinicalStatus maps to status */ Criticality maps to criticality diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index 0220d5bb..32a492b7 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -8,10 +8,10 @@ AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Metadata.InformationSource maps to asserter Metadata.InformationRecorder maps to recorder Metadata.AuthoredDateTime maps to assertedDate - FindingResult maps to code + DataValue maps to code TopicCode maps to type SubstanceCategory maps to category - FindingStatus maps to verificationStatus + VerificationStatus maps to verificationStatus ClinicalStatus maps to clinicalStatus Criticality maps to criticality Onset maps to onset[x] diff --git a/spec/shr_allergy_vs.txt b/spec/shr_allergy_vs.txt index 57f1538d..0abf84ac 100644 --- a/spec/shr_allergy_vs.txt +++ b/spec/shr_allergy_vs.txt @@ -14,7 +14,7 @@ AVS#unconfirmed "Unconfirmed" /* MK - Do no use codes for "no known ____ allergy" -The correct way to express it is give the topic code as "Allegy or Intolerance" plus an AllergyIrritant and then give FindingResult as "Absent" +The correct way to express it is give the topic code as "Allegy or Intolerance" plus an AllergyIrritant and then give DataValue as "Absent" ValueSet: NoKnownAllergyVS Description: "Codes that express no known allergies to food, environmtal agents, drugs, etc." diff --git a/spec/shr_base.txt b/spec/shr_base.txt index d4b89e19..970505cd 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -40,13 +40,12 @@ Description: "Parent class for any item in clinical or administrative health-rel 1..1 TopicCode // TopicCode makes sense at the DomainResource Level 0..1 Narrative 0..1 Language -0..1 Metadata +0..1 Metadata Element: TopicCode - Description: "A code describing what the domain resource concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist (present) or not exist (absent). The result of the evaluation is found in the FindingResult." + Description: "A code describing what the domain resource concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist (present) or not exist (absent)." Value: CodeableConcept - Element: Narrative Concept: TBD Description: "A human-readable narrative, potentially including images, that contains a summary of the resource, and may be used to represent the content of the resource to a human." @@ -144,9 +143,8 @@ Description: "Elements that belong to all information items." EntryElement: Composition Based on: DomainResource Description: "A composition represents a set of Entries sharing common provenance, a document such as an extract from a patient record, a knowledge artifact, or a catalog definition." -//1..1 Status from http://hl7.org/fhir/ValueSet/composition-status -//1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes -//1..1 CreationTime -- from Entry -- maps to date +1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/composition-status +1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes 0..* Section Element: Section diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 1412e72e..783093a3 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -23,7 +23,7 @@ Based on: ActionStatement Description: "Abstract class representing performance of any type of action." 1..1 OccurrenceTimeOrPeriod // when the action took place 0..* Participation -1..1 Status // should be from http://hl7.org/fhir/ValueSet/event-status DSTU 2 change (conflict in required data sets) +1..1 PerformanceStatus // should be from http://hl7.org/fhir/ValueSet/event-status DSTU 2 change (conflict in required data sets) 0..1 Method 0..1 RelatedRequest //0..1 EnactsPlan @@ -48,6 +48,11 @@ Description: "Abstract class representing performance of any type of action." Description: "The point in time or span of time the participant is involved." Value: TimePeriod + Element: PerformanceStatus + Concept: TBD + Description: "Indicates whether the finding is preliminary, amended, final, etc." + Value: CodeableConcept + Element: Method Concept: TBD Description: "The technique used to carry out an action, for example, the specific imaging technical or assessment vehicle." @@ -73,10 +78,10 @@ Description: "Abstract class representing performance of any type of action." Abstract Element: ActionRequested Based on: ActionStatement -Description: "Abstract class representing a request for any type of action." -1..1 Status //should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) +Description: "Abstract class representing a request for any type of action to be performed." 0..1 Requester 1..1 RequestIntent +1..1 RequestStatus //should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) 0..1 ExpectedPerformanceTime 0..1 ExpectedPerformerType 0..1 ExpectedPerformer @@ -88,14 +93,16 @@ Description: "Abstract class representing a request for any type of action." Element: Requester Based on: Participant - Concept: TBD Description: "The actor making this request." - Element: RequestIntent - Concept: TBD + Element: RequestIntent Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/request-intent - + + Element: RequestStatus + Description: "A code identifying the lifecycle stage of a request." + Value: CodeableConcept + Element: ExpectedPerformanceTime Concept: TBD Description: "When an action should be done. If the action is a series or recurs (e.g. daily blood sugar testing in the morning) then a Timing can be used to describe the periodicity." @@ -114,7 +121,7 @@ Description: "Abstract class representing a request for any type of action." Element: ExpectedMethod Concept: TBD Description: "The method that should be used to carry out the action." - Value: ref(Method) + Value: CodeableConcept Element: PerformerInstructions Concept: TBD diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 9e097783..766b3fc0 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -10,12 +10,12 @@ Description: "A finding that does not or cannot stand alone, or a component of // how do we handle a normal? (physical exam normal) // exclusions? (diabetes excluded) 1..1 TopicCode -0..1 FindingResult +0..1 DataValue 0..1 DataAbsentReason 0..1 ReferenceRange // included here only because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. 0..1 Interpretation - Element: FindingResult + Element: DataValue Description: "The value or result of a test, evaluation, or judgment, for example, a systolic blood pressure, or if a condition or body structure is present or absent." Value: CodeableConcept or Quantity or string or Range or Ratio or time or dateTime or TimePeriod // exclude boolean because FHIR STU3 component doesn't include it, although Observation does; exclude Media because it is not present in FHIR v4 @@ -46,27 +46,26 @@ Description: "A finding that does not or cannot stand alone, or a component of Abstract Element: CodedObservationComponent Based on: ObservationComponent Description: "A non-independent finding whose result is a concept code." - FindingResult value is type CodeableConcept + DataValue value is type CodeableConcept 0..0 ReferenceRange Abstract Element: QuantitativeObservationComponent Based on: ObservationComponent Description: "A non-independent finding whose result is a quantity." - FindingResult value is type Quantity + DataValue value is type Quantity Abstract Element: ConditionOrObservation Based on: DomainResource Description: "An assertion, determination, opinion, evaluation, result, observation, or measurement made by a person or device." 1..1 TopicCode -0..1 FindingResult +0..1 DataValue 0..1 DataAbsentReason 0..1 Patient 0..1 Encounter -1..1 FindingStatus -0..1 SpecificFocusOfFinding +0..1 Focus - Element: SpecificFocusOfFinding - Description: "The specific observed item finding relates to, for example, a related person or condition. The SpecificFocusOfFinding is only required if the thing observed is different than the patient. It should not be an anatomical location. The focus for cancer progression would be the cancer condition. If the property is wound length, the focus would be an instance of a wound. In the case of an assertion of existence, the focus is the larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." + Element: Focus + Description: "The specific person or condition this resource relates to. The Focus is only required if the person or thing observed is different than the patient. Focus should not be an anatomical location. The focus for cancer progression would be the cancer condition. If the observed property is wound length, the focus would be an instance of a wound. In the case of an assertion of existence, the focus is the larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." Value: ref(DomainResource) // or CodeableConcept or string or CodeableConcept or Identifier Element: RelevantTime @@ -75,27 +74,17 @@ Description: "An assertion, determination, opinion, evaluation, result, observat The clinically relevant time is not necessarily when the information is gathered or when a test is carried out, but for example, when a specimen was collected, or the time period referred to by the question. Use a TimePeriod for a measurement or specimen collection continued over a significant period of time (e.g. 24 hour Urine Sodium)." Value: dateTime or TimePeriod - Element: FindingMethod - Concept: TBD - Description: "The technique used to create the finding, for example, the specific imaging technical, lab test code, or assessment vehicle." - Value: CodeableConcept - - Element: FindingStatus - Concept: TBD - Description: "Indicates whether the finding is preliminary, amended, final, etc." - Value: CodeableConcept EntryElement: Observation Based on: ConditionOrObservation Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. -Observation has a value representing the result (answer), or an DataAbsentReason indicating why the value is not present. The SpecificFocusOfFinding can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments. +Observation has a value representing the result (answer), or an DataAbsentReason indicating why the value is not present. The Focus can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments. For an Observation, the TopicCode describes the aspect or property of the subject being observed or measured. The TopicCode is the 'question code' that pairs to the 'answer' contained in the Value." -0..1 FindingMethod +0..1 Method 0..1 RelevantTime 0..* ObservationComponent - FindingStatus from http://hl7.org/fhir/ValueSet/observation-status -//0..1 DeltaFlag +1..1 PerformanceStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 Category from http://hl7.org/fhir/ValueSet/observation-category if covered // MK Category cardinality from 0..* to 0..1 to be compatible with DSTU 2 0..1 AnatomicalLocation 0..1 CommentOrDescription @@ -103,7 +92,9 @@ For an Observation, the TopicCode describes the aspect or property of the subjec 0..1 Device 0..1 PanelMembers 0..1 ReferenceRange +//0..1 DeltaFlag +// TODO --- this is redundant with InformationSource Element: Observer Concept: MTH#C0449416 Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." @@ -126,13 +117,13 @@ For an Observation, the TopicCode describes the aspect or property of the subjec Concept: TBD Description: "A description of the conditions or context of an observation, for example, under sedation, fasting or post-exercise. Body position and body site are also qualifiers, but handled separately. A qualifier cannot modify the measurement type; for example, a fasting blood sugar is still a blood sugar. " Value: CodeableConcept or ref(Observation) -*/ + Element: DeltaFlag Concept: MTH#C1705241 Description: "Indicator of significant change (delta) from the last or previous measurement." Value: CodeableConcept from DeltaFlagVS - +*/ // Element: Issued // Description: "The date and time this observation was made available to providers, typically after the results have been reviewed and verified." // Value: instant @@ -154,7 +145,7 @@ EntryElement: CodedNonLaboratoryObservation Based on: NonLaboratoryObservation Concept: TBD Description: "The result of evaluations (measurements, tests, or questions) whose answer is expressed as a code." - FindingResult value is type CodeableConcept + DataValue value is type CodeableConcept 0..0 ReferenceRange EntryElement: SimpleCodedNonLaboratoryObservation @@ -166,7 +157,7 @@ Description: "An observation whose result is a code, and also having no componen EntryElement: ComponentOnlyNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation with components, but without a result value or panel members." -0..0 FindingResult +0..0 DataValue 0..0 DataAbsentReason 0..0 PanelMembers 0..0 ReferenceRange @@ -186,7 +177,7 @@ Description: "A coded finding based on a specimen collected from a patient." EntryElement: CodedLaboratoryObservation Based on: LaboratoryObservation Description: "A coded finding from a laboratory test." - FindingResult value is type CodeableConcept + DataValue value is type CodeableConcept 0..0 ReferenceRange EntryElement: SimpleLaboratoryObservation @@ -205,8 +196,7 @@ Description: "A coded finding from a laboratory test without further panel membe Abstract Element: Panel Based on: Observation Description: "A set of independent but related observations that are often presented together to facilitate interpretation, such as a lipid panel." -0..0 FindingResult // true panel composed of observations only -0..0 ObservationComponent // true panel composed of observations only +0..0 ObservationComponent 0..0 AnatomicalLocation 0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated 0..0 AnatomicalLocation.AnatomicalLocationStructured @@ -217,77 +207,58 @@ Description: "A set of independent but related observations that are often pr Abstract Element: HeadlessPanel Based on: Panel Description: "A panel that does not have an overall value that summarizes the entire panel." -0..0 FindingResult +0..0 DataValue 0..0 DataAbsentReason 0..0 ReferenceRange -//---------- Assertions ------------- - -Abstract Element: ExistenceAssertion +Abstract Element: ConditionPresentOrAbsent Based on: ConditionOrObservation -Description: "An assertion of a relationship, situation, condition, or other phenomenon is present or absent, or an event has (or has not) taken place. -For assertions, the TopicCode represents the thing asserted to be present or absent; i.e., the type of condition, event, relationship or phenomenon that is being asserted to exist or not exist." - TopicCode is type ConditionOrDiagnosisCode - FindingResult is type PresentOrAbsent -// Leave DataAbsentReason in, to represent the case where the presence or absence of something was not evaluated -0..0 ReferenceRange -0..1 ObjectIdentifier // TODO: 0..* business identifier? -//0..1 Certainty - FindingStatus value is type CodeableConcept +Description: "An assertion of a condition being present or absent. +'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble. The TopicCode represents the condition asserted to exist or not exist. DataAbsentReason can represent the case where the presence or absence of something was not evaluated." + TopicCode is type ConditionOrDiagnosisCode + DataValue value is type CodeableConcept + DataValue from PresentAbsentVS +0..* Identifier +0..1 VerificationStatus +0..1 Evidence Element: ConditionOrDiagnosisCode Based on: TopicCode Description: "A specific code for the condition being determined to be present or absent." Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make the binding weaker because US Core requires an extensible binding - Element: PresentOrAbsent - Based on: FindingResult - Description: "A specific code for the condition being determined to be present or absent." - Value: CodeableConcept from PresentAbsentVS - - Element: ObjectIdentifier - Description: "For later reference, an identifier for the object implied by the assertion, which allows the object to be tracked over time. For example, a wound number is used to track a specific wound's condition over time." - Value: Identifier - - Element: Certainty // TODO: why not move to ConditionOrObservation? - Concept: TBD - Description: "The degree of confidence in a conclusion or assertion." + Element: VerificationStatus + Description: "The verification status to support the clinical status of the condition (ref: http://hl7.org/fhir/R4/condition-definitions.html#Condition.verificationStatus)" Value: CodeableConcept -Abstract Element: PresenceAssertion -Based on: ExistenceAssertion -Description: "ConditionOrObservation that a phenomena is present." -// TODO: Not sure we should have to say .CodeableConcept for the constraint below to work (currently causes error) -1..1 PresentOrAbsent is SCT#52101004 "Present (qualifier value)" -0..0 DataAbsentReason -//0..1 Certainty from PresenceCertaintyVS + Element: Evidence + Description: "Supporting evidence / manifestations that are the basis of the Condition's verification status, such as evidence that confirmed or refuted the condition." + 0..* Manifestation + 0..* DomainResource + Element: Manifestation + Description: "Clinical symptoms/signs." + Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/clinical-findings -Abstract Element: AbsenceAssertion -Based on: ExistenceAssertion -Description: "ConditionOrObservation that an entity, person, role, condition, or phenomenon is absent." -1..1 PresentOrAbsent is SCT#2667000 "Absent (qualifier value)" -0..0 DataAbsentReason -//0..1 Certainty from AbsenceCertaintyVS - -EntryElement: ConditionPresentAssertion -Based on: PresenceAssertion -Concept: TBD -Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." +EntryElement: ConditionPresent +Based on: ConditionPresentOrAbsent +Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." +//TODO: 0..1 DataValue is SCT#52101004 "Present (qualifier value)" +0..0 DataAbsentReason Metadata.InformationSource value is type ref(PatientOrPractitionerOrRelatedPerson) 1..1 Patient -0..0 SpecificFocusOfFinding // maybe a family member? +0..0 Focus // maybe a family member? 1..1 Category from ConditionCategoryVS // DSTU 2 change - category is 1..1 in Argonaut 0..* AnatomicalLocation +1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/condition-ver-status 1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical 0..1 Severity from http://hl7.org/fhir/ValueSet/condition-severity 0..1 StageInformation 0..1 Onset -0..1 Abatement // TODO: change abatement to an Observation +0..1 Abatement // Stuff from CIMI eliminated -//0..1 FindingMethod //0..1 WhenClinicallyRecognized //0..1 PresentOnAdmission //0..* ConditionCause @@ -359,52 +330,33 @@ Description: "A condition that is or may be present in a subject. 'Condition' is Description: "The end, remission or resolution." Value: dateTime or Age or boolean or TimePeriod or Range or string - -EntryElement: ConditionAbsentAssertion -Based on: AbsenceAssertion +EntryElement: ConditionAbsent +Based on: ConditionPresentOrAbsent Concept: MTH#C0277541 "no disease present" Description: "A finding that a condition is or was not present in the subject at a certain time or time period, not necessarily the time the information is gathered." +//TODO: 1..1 DataValue is SCT#2667000 "Absent (qualifier value)" +0..0 DataAbsentReason 1..* Category from ConditionCategoryVS + VerificationStatus is #refuted 0..* AnatomicalLocation EntryElement: ClinicalNote Based on: SimpleNonLaboratoryObservation Concept: MTH#C0747978 "Progress Note" -Description: "An entry concerning a patient where the result is a narrative text. While all findings have a CommentOrDescription field, the clinical note should put the narrative in the FindingResult field, since this is the first place to look for a result that is a narrative." +Description: "An entry concerning a patient where the result is a narrative text. While all findings have a CommentOrDescription field, the clinical note should put the narrative in the DataValue field, since this is the first place to look for a result that is a narrative." TopicCode is MTH#C0747978 "Progress Note" - FindingResult value is type string -0..0 ReferenceRange -1..1 Patient -//1..1 CommentOrDescription // put into FindingResult - -EntryElement: QuestionAnswer -Based on: SimpleNonLaboratoryObservation -Concept: TBD -Description: "A simple question-answer pair. TopicCode should contain the identifying code for the question, and the FindingResult the answer. FindingResult is not constrained because the answer could be a string, concept code, number, etc." + DataValue value is type string 0..0 ReferenceRange 1..1 Patient -0..1 QuestionText - - Element: QuestionText - Concept: TBD - Description: "The text of the question as it should be asked or is phrased in questionnaire." - Value: string - - -Abstract Element: RelationshipExistenceAssertion -Based on: ExistenceAssertion -Description: "An assertion of a realtionship between two things being either present or absent. The subject of the relationship is is the Patient (or SpecificFocusOfFinding, if given) and the object of the relationship is . -For relationships, TopicCode describes the relationship, e.g., Father or Mother." -Value: CodeableConcept from PresentAbsentVS - +//1..1 CommentOrDescription // put into DataValue EntryElement: BodyStructurePresent -Based on: PresenceAssertion +Based on: ConditionPresent Description: "A body structure such as wound or tumor, observed to be present in a patient." 1..1 Patient 0..1 AnatomicalLocationStructured 0..* Media 0..1 RelevantTime -0..0 SpecificFocusOfFinding +0..0 Focus 0..0 ReferenceRange 0..0 DataAbsentReason diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 5ac26613..760fd76f 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -27,7 +27,7 @@ Observation maps to Observation: Patient maps to subject // Metadata.InformationSource maps to performer TopicCode maps to code - FindingMethod maps to method + Method maps to method // dstu 2 change (name change) CommentOrDescription maps to comments Category maps to category @@ -46,7 +46,7 @@ Observation maps to Observation: // ReferenceRange.ApplicableAgeRange maps to referenceRange.age ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) ObservationComponent.TopicCode maps to component.code - ObservationComponent.FindingResult maps to component.value[x] + ObservationComponent.DataValue maps to component.value[x] ObservationComponent.DataAbsentReason maps to component.dataAbsentReason // dstu 2 change (no such attribute) //ObservationComponent.Interpretation maps to component.interpretation @@ -54,11 +54,11 @@ Observation maps to Observation: fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) - FindingResult maps to value[x] + DataValue maps to value[x] DataAbsentReason maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued - FindingStatus maps to status + PerformanceStatus maps to status RelevantTime maps to effective[x] // dstu 2 change (name change) Encounter maps to encounter @@ -70,19 +70,19 @@ NonLaboratoryObservation maps to Observation: LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-observationresults: Specimen maps to specimen -ConditionPresentAssertion maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-condition: +ConditionPresent maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-condition: // dstu 2 change (different mapping target) Metadata.AuthoredDateTime maps to dateRecorded Metadata.InformationSource maps to asserter Patient maps to patient Category maps to category - ObjectIdentifier maps to identifier + Identifier maps to identifier TopicCode maps to code AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Encounter maps to encounter ClinicalStatus maps to clinicalStatus - FindingStatus maps to verificationStatus + VerificationStatus maps to verificationStatus Onset maps to onset[x] Abatement maps to abatement[x] Severity maps to severity @@ -90,12 +90,12 @@ ConditionPresentAssertion maps to http://fhir.org/guides/argonaut/StructureDefin StageInformation.StageSummary maps to stage.summary StageInformation.StageDetail maps to stage.assessment -ConditionAbsentAssertion maps to Basic: +ConditionAbsent maps to Basic: // There is no mechanism in FHIR (not Condition, not Observation) to say "Patient does not have Condition X" BodyStructurePresent maps to BodySite: Patient maps to patient - ObjectIdentifier maps to identifier + Identifier maps to identifier AnatomicalLocationStructured.AnatomicalLocationOrLandmarkCode maps to code // dstu 2 change (naming) AnatomicalLocationStructured.Laterality maps to modifier (slice on = coding.code) diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 21201779..008c5a1c 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -28,7 +28,7 @@ Narrative maps to Narrative: Observation maps to Observation: // TODO: observationresults is only for labs Patient maps to subject TopicCode maps to code - FindingMethod maps to method + Method maps to method CommentOrDescription maps to comment Category maps to category AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite @@ -42,17 +42,17 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.ApplicableAgeRange maps to referenceRange.age ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) ObservationComponent.TopicCode maps to component.code - ObservationComponent.FindingResult maps to component.value[x] + ObservationComponent.DataValue maps to component.value[x] ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation ObservationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) - FindingResult maps to value[x] + DataValue maps to value[x] DataAbsentReason maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued - FindingStatus maps to status + PerformanceStatus maps to status RelevantTime maps to effective[x] Encounter maps to context // DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta @@ -63,18 +63,18 @@ NonLaboratoryObservation maps to Observation: LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: Specimen maps to specimen -ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: +ConditionPresent maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: Metadata.AuthoredDateTime maps to assertedDate Metadata.InformationSource maps to asserter Patient maps to subject Category maps to category - ObjectIdentifier maps to identifier + Identifier maps to identifier TopicCode maps to code AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite Encounter maps to context ClinicalStatus maps to clinicalStatus - FindingStatus maps to verificationStatus + VerificationStatus maps to verificationStatus Onset maps to onset[x] Abatement maps to abatement[x] Severity maps to severity @@ -82,12 +82,14 @@ ConditionPresentAssertion maps to http://hl7.org/fhir/us/core/StructureDefinitio StageInformation.StageSummary maps to stage.summary StageInformation.StageDetail maps to stage.assessment -ConditionAbsentAssertion maps to Basic: -// There is no mechanism in FHIR (not Condition, not Observation) to say "Patient does not have Condition X" +ConditionAbsent maps to Basic: +/* In FHIR, refuted (verification status) is the only way to deny a condition. This carries an implication that the condition was asserted before it was refuted. +"Normal lung sounds" and "No evidence of" is not the same as refuted, either. +Abnormal lung sounds absent? */ BodyStructurePresent maps to BodySite: Patient maps to patient - ObjectIdentifier maps to identifier + Identifier maps to identifier AnatomicalLocationStructured.AnatomicalLocationOrLandmarkCode maps to code AnatomicalLocationStructured.Laterality maps to qualifier (slice on = coding.code) AnatomicalLocationStructured.AnatomicalDirection maps to qualifier diff --git a/spec/shr_base_vs.txt b/spec/shr_base_vs.txt index e32b409e..df9853cf 100644 --- a/spec/shr_base_vs.txt +++ b/spec/shr_base_vs.txt @@ -5,21 +5,6 @@ CodeSystem: SCT = http://snomed.info/sct CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: LNC = http://loinc.org -/* -ValueSet: DiagnosticServiceVS -Description: "The type of laboratory service used in producing a laboratory result. Note -- we may want to include additional descendants of SCT#224891009 (Healthcare services)" -SCT#310078000 "Microbiology service (qualifier) -- Laboratory concerned with cultures, to look for suspected pathogens." -SCT#706900000 "Parasitology service (qualifier) -- Laboratory responsible for examining parasites, feces samples may be examined for evidence of intestinal parasites such as tapeworms or hookworms and others." -SCT#708185002 "Virology service (qualifier) -- Laboratory concerned with identification of viruses in specimens such as blood, urine, and cerebrospinal fluid." -SCT#708196005 "Hematology service (qualifier) -- Laboratory that works with whole blood to do full blood counts, and blood films as well as many other specialised tests." -SCT#310076001 "Biochemistry service (qualifier) -- Laboratory that usually receives serum or plasma and tests the serum for chemicals present in blood." -SCT#708191000 "Toxicology service (qualifier) -- Laboratory that mainly tests for pharmaceutical and recreational drugs. Urine and blood samples are submitted to this lab." -SCT#708190004 "Immunology service (qualifier) -- Immunology/Serology laboratory uses the concept of antigen-antibody interaction as a diagnostic tool. Compatibility of transplanted organs is also determined." -//#urinalysis "Laboratory tests urine for many analytes. Some health care providers have a urinalysis laboratory, while others don't." -SCT#310074003 "Pathology service (qualifier)-- Surgical, cytopathology, or histopathology laboratory. Surgical pathology examines organs, limbs, tumors, fetuses, and other tissues biopsied in surgery such as breast mastectomies." -SCT#310048009 "Genetics service (procedure) - note: should be in the Snomed (qualifier) hierarchy - Laboratory that mainly performs DNA analysis." -SCT#708178001 "Cytogenetics service (qualifier) -- Laboratory that uses blood and other cells to get a karyotype. This can be helpful in prenatal diagnosis (e.g. Down's syndrome) as well as in cancer (some cancers have abnormal chromosomes)." -*/ ValueSet: DataAbsentReasonVS Description: "Reasons that a value associated with a test or other finding is missing. Includes all codes from http://hl7.org/fhir/ValueSet/data-absent-reason version 3.3.0 and additional codes covering other missing value circumstances." @@ -46,12 +31,26 @@ Description: "Reasons that a value associated with a test or other finding is #specimen-inadequate "Missing due to a problem with the specimen, e.g. inadequate specimen, contamination, clotting, improper tube type, improper storage, too small, etc." #instrument-malfunction "Missing due to instrument malfunction." +ValueSet: LaboratoryCodeVS +Description: "Laboratory codes drawn from LOINC." + Includes codes from LNC ValueSet: PresentAbsentVS Description: "Indicator if the assertion is assertion of presence or absence" SCT#52101004 "Present (qualifier value)" SCT#2667000 "Absent (qualifier value)" +ValueSet: ConditionCategoryVS +Description: "A category assigned to the condition, for example, a disease, concern, symptom, adverse reaction, functional impairment, or structural abnormality." +#disease "A disorder of structure or function in a human, animal, or plant, especially one that produces specific signs or symptoms or that affects a specific location and is not simply a direct result of physical injury." +#functional_impairment "A disability experienced by the subject." +#structural_abnormality "An abnormality of physiologic structure." +#concern "Something the subject is worried about, which may or may not have yet been manifested. The object of the concern does not have to be a medical disorder." +#symptom "A sign or manifestation of a deeper cause, of known or unknown etiology, e.g. pain or ringing in the ears." +#adverse_reaction "An adverse reaction to an intervention." + + +/* ValueSet: PresenceCertaintyVS Description: "A code describing whether the finding in question is present, possible, suspected, etc." //SCT#36692007 "Known" @@ -88,20 +87,8 @@ Description: "A code describing the sense in which a finding is a goal or objec SCT#703039001 "Health objective" SCT#410518001 "Goal" - ValueSet: DeltaFlagVS Concept: MTH#C1705241 -Description: "Indicators for degree of change (delta) from the last or previous measurement." - Includes codes descending from SCT#263703002 "Changed status (qualifier value)" -// has values decreased, decreased relative to previous, improved, increased, increased relative to previous, maintained stablized, worse -// Also see LOINC #89253-9 Trend ... has values improved, deteriorated, stablized, resolved - -ValueSet: LaboratoryCodeVS -Description: "Laboratory codes drawn from LOINC." - Includes codes from LNC - -/* -ValueSet: DeltaFlagVS Description: "Change patterns and trends, including resolved." Includes codes descending from SCT#385634002 "Change patterns (qualifier value)" //SCT#58158008 "Stable (qualifier value)" @@ -110,13 +97,24 @@ Includes codes descending from SCT#385634002 "Change patterns (qualifier value)" //SCT#260369004 "Increasing (qualifier value)" //SCT#260371004 "Decreasing (qualifier value)" SCT#723506003 "Resolved (qualifier value)" -*/ -ValueSet: ConditionCategoryVS -Description: "A category assigned to the condition, for example, a disease, concern, symptom, adverse reaction, functional impairment, or structural abnormality." -#disease "A disorder of structure or function in a human, animal, or plant, especially one that produces specific signs or symptoms or that affects a specific location and is not simply a direct result of physical injury." -#functional_impairment "A disability experienced by the subject." -#structural_abnormality "An abnormality of physiologic structure." -#concern "Something the subject is worried about, which may or may not have yet been manifested. The object of the concern does not have to be a medical disorder." -#symptom "A sign or manifestation of a deeper cause, of known or unknown etiology, e.g. pain or ringing in the ears." -#adverse_reaction "An adverse reaction to an intervention." \ No newline at end of file +ValueSet: DeltaFlagVS +Description: "Indicators for degree of change (delta) from the last or previous measurement." + Includes codes descending from SCT#263703002 "Changed status (qualifier value)" +// has values decreased, decreased relative to previous, improved, increased, increased relative to previous, maintained stablized, worse +// Also see LOINC #89253-9 Trend ... has values improved, deteriorated, stablized, resolved + +ValueSet: DiagnosticServiceVS +Description: "The type of laboratory service used in producing a laboratory result. Note -- we may want to include additional descendants of SCT#224891009 (Healthcare services)" +SCT#310078000 "Microbiology service (qualifier) -- Laboratory concerned with cultures, to look for suspected pathogens." +SCT#706900000 "Parasitology service (qualifier) -- Laboratory responsible for examining parasites, feces samples may be examined for evidence of intestinal parasites such as tapeworms or hookworms and others." +SCT#708185002 "Virology service (qualifier) -- Laboratory concerned with identification of viruses in specimens such as blood, urine, and cerebrospinal fluid." +SCT#708196005 "Hematology service (qualifier) -- Laboratory that works with whole blood to do full blood counts, and blood films as well as many other specialised tests." +SCT#310076001 "Biochemistry service (qualifier) -- Laboratory that usually receives serum or plasma and tests the serum for chemicals present in blood." +SCT#708191000 "Toxicology service (qualifier) -- Laboratory that mainly tests for pharmaceutical and recreational drugs. Urine and blood samples are submitted to this lab." +SCT#708190004 "Immunology service (qualifier) -- Immunology/Serology laboratory uses the concept of antigen-antibody interaction as a diagnostic tool. Compatibility of transplanted organs is also determined." +//#urinalysis "Laboratory tests urine for many analytes. Some health care providers have a urinalysis laboratory, while others don't." +SCT#310074003 "Pathology service (qualifier)-- Surgical, cytopathology, or histopathology laboratory. Surgical pathology examines organs, limbs, tumors, fetuses, and other tissues biopsied in surgery such as breast mastectomies." +SCT#310048009 "Genetics service (procedure) - note: should be in the Snomed (qualifier) hierarchy - Laboratory that mainly performs DNA analysis." +SCT#708178001 "Cytogenetics service (qualifier) -- Laboratory that uses blood and other cells to get a karyotype. This can be helpful in prenatal diagnosis (e.g. Down's syndrome) as well as in cancer (some cancers have abnormal chromosomes)." +*/ \ No newline at end of file diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index d4e2e5d3..0f1d83a8 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -41,7 +41,7 @@ Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." TopicCode from BreastCancerTypeVS StageInformation.StageDetail value is type BreastCancerStagePanel -0..1 FindingMethod should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding +0..1 Evidence.Manifestation should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding AnatomicalLocation.AnatomicalLocationStructured is type BreastSite 0..1 MorphologyBehavior from MorphologyBehaviorVS @@ -69,10 +69,10 @@ EntryElement: HER2ReceptorStatus Based on: CodedLaboratoryObservation Concept: LNC#48676-1 "HER2 [Interpretation] in Tissue" Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." - FindingResult from PositiveNegativeEquivocalVS + DataValue from PositiveNegativeEquivocalVS TopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" Specimen is type BreastSpecimen -0..0 FindingMethod +0..0 Method // pre-coordinated in the TopicCode 0..0 ObservationComponent PanelMembers.Observation includes 0..* HER2byIHC @@ -83,11 +83,11 @@ EntryElement: HER2byIHC Based on: CodedLaboratoryObservation Concept: LNC#85319-2 Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (IHC). " - FindingResult from HER2byIHCScoreVS + DataValue from HER2byIHCScoreVS DataAbsentReason from HER2byIHCScoreNullVS Interpretation from PositiveNegativeEquivocalVS TopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" -0..0 FindingMethod // pre-coordinated in the TopicCode +0..0 Method // pre-coordinated in the TopicCode Specimen is type BreastSpecimen ObservationComponent includes 0..1 CompleteMembraneStainingPercent @@ -98,7 +98,7 @@ includes 0..1 CompleteMembraneStainingPercent Concept: LNC#85328-3 "Cells.HER2 uniform intense membrane staining/100 cells" Description: "Percentage of cells with uniform intense complete membrane staining." // Awaiting bug fix -// FindingResult.Quantity.Units is UCUM#% +// DataValue.Quantity.Units is UCUM#% 0..0 ReferenceRange // 0..0 Interpretation @@ -106,10 +106,10 @@ EntryElement: HER2byFISH Based on: LaboratoryObservation Concept: LNC#85318-4 // Corrected 5/12/2018 by MK Description: "HER2 receptor status as determined by single-probe or dual-probe Fluorescence In Situ Hybridization (FISH)." -0..0 FindingResult +0..0 DataValue 0..0 DataAbsentReason TopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" - FindingMethod from HER2FISHMethodVS // single or double probe + Method from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS Specimen is type BreastSpecimen ObservationComponent @@ -142,7 +142,7 @@ Concept: LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" Description: "Estrogen receptor alpha is the predominant estrogen receptor expressed in breast tissue and is overexpressed in around 50% of breast carcinomas. ER status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options. The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." TopicCode is LNC#16112-5 - FindingResult from PositiveNegativeVS + DataValue from PositiveNegativeVS Specimen is type BreastSpecimen ObservationComponent includes 0..1 NuclearPositivity @@ -155,7 +155,7 @@ Concept: LNC#16113-3 Description: "Progesterone receptor status is a factor in determining prognosis and treatment options. The value is the percentage of cells that test (stain) positive for the presence of a receptor. The interpretation of positive or negative (found in the interpretation property) is based on the staining percentage, and may take into account the staining intensity. Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." TopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" - FindingResult from PositiveNegativeVS + DataValue from PositiveNegativeVS Specimen is type BreastSpecimen ObservationComponent includes 0..1 NuclearPositivity @@ -167,19 +167,19 @@ includes 0..1 AverageStainingIntensity Concept: TBD // apparently no LOINC code Description: "The percentage of cells that test (stain) positive for the presence of a receptor. We are seeking feedback on whether nuclear positivity should be an exact percentage or a range of percentages. As currently defined, an exact nuclear positivity could be represented by a zero-width range, where the lower and upper bounds would be the same number." - FindingResult value is type Range + DataValue value is type Range Element: AverageStainingIntensity Concept: SCT#444775005 "Average intensity of positive staining neoplastic cells (observable entity)" Based on: CodedObservationComponent Description: "The degree or magnitude of staining (nuclear positivity) across cells in the specimen." - FindingResult from StainingIntensityVS + DataValue from StainingIntensityVS EntryElement: DCISNuclearGrade Concept: MTH#C18513 // What is the proper LOINC code? Based on: SimpleCodedLaboratoryObservation Description: "An evaluation of the size and shape of the nucleus in tumor cells and the percentage of tumor cells that are in the process of dividing or growing. Cancers with low nuclear grade grow and spread less quickly than cancers with high nuclear grade." - FindingResult from NuclearGradeVS + DataValue from NuclearGradeVS Specimen is type BreastSpecimen TopicCode is MTH#C18513 @@ -189,7 +189,7 @@ Concept: LNC#44648-4 Based on: CancerHistologicGrade Description: "The Elston Grade/Nottingham Score, representative of the aggressive potential of the tumor. Well differentiated cells (Grade 1) look similar to normal cells and are usually slow growing, while poorly differentiated cells (Grade 3) look very different than normal and are fast-growing." TopicCode is LNC#44648-4 - FindingResult from NottinghamCombinedGradeVS + DataValue from NottinghamCombinedGradeVS DataAbsentReason from NottinghamNullVS Specimen is type BreastSpecimen ObservationComponent @@ -204,21 +204,21 @@ includes 0..1 MitoticCountScore Concept: LNC#85321-8 "Granular differentiation" // SHOULD BE LOINC Based on: CodedObservationComponent Description: "Glandular differentiation [Score] in Breast cancer specimen Qualitative by Nottingham." - FindingResult from TubuleFormationScoreVS //TODO: Determine if it is better to use codes as opposed to a number 1, 2 or 3. Observations don't support integer or posInteger + DataValue from TubuleFormationScoreVS //TODO: Determine if it is better to use codes as opposed to a number 1, 2 or 3. Observations don't support integer or posInteger DataAbsentReason from NottinghamComponentNullVS Element: NuclearPleomorphismScore Concept: LNC#44645-0 Based on: CodedObservationComponent Description: "Nuclear pleomorphism in Breast tumor Qualitative by Nottingham." - FindingResult from NuclearPleomorphismScoreVS + DataValue from NuclearPleomorphismScoreVS DataAbsentReason from NottinghamComponentNullVS Element: MitoticCountScore Concept: LNC#85300-2 Based on: CodedObservationComponent Description: "Mitotic rate [Score] in Breast cancer specimen Qualitative by Nottingham." - FindingResult from MitoticCountScoreVS // 1 to 3 //RMB: this shouldn't be different from TubuleFormationScore and NuclearPleomorphismScore. They have the same scoring mechanism. Suggest using local codes. + DataValue from MitoticCountScoreVS // 1 to 3 //RMB: this shouldn't be different from TubuleFormationScore and NuclearPleomorphismScore. They have the same scoring mechanism. Suggest using local codes. DataAbsentReason from MitoticCountScoreNullVS EntryElement: OncotypeDxInvasiveRecurrenceScore @@ -226,7 +226,7 @@ Based on: SimpleLaboratoryObservation Concept: MTH#C1709318 Description: "The Oncotype DX test for invasive breast cancer examines the activity of 21 genes in a patient’s breast tumor tissue to provide personalized information for tailoring treatment based on the biology of their individual disease. The value from 0 to 100 indicates the estimated risk of recurrence, with the highest risk indicated by a score greater than 31. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" - FindingResult value is type IntegerQuantity + DataValue value is type IntegerQuantity TopicCode is MTH#C1709318 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type ref(BreastSpecimen) @@ -237,7 +237,7 @@ Based on: SimpleLaboratoryObservation Concept: MTH#C3898101 Description: "The Oncotype DX test for DCIS (Ductal Carcinoma in Situ) breast cancer. Risk scores range from 0 to 100 with the following interpretations: 0-38: Low-Risk, 39-54: Intermediate-Risk, 55+: High-Risk. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" - FindingResult value is type IntegerQuantity + DataValue value is type IntegerQuantity TopicCode is MTH#C3898101 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type BreastSpecimen @@ -247,7 +247,7 @@ Based on: SimpleLaboratoryObservation Concept: LNC#76544-6 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Prosigna. The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Risk of Recurrence Score in the literature), which is correlated with the probability of distant recurrence at ten years for post-menopausal women with hormone receptor positive, early stage breast cancer." - FindingResult value is type IntegerQuantity + DataValue value is type IntegerQuantity TopicCode is LNC#76544-6 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type BreastSpecimen @@ -258,7 +258,7 @@ Concept: MTH#C2827401 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Mammaprint. In the United States, MammaPrint can only be used on cancers that are stage I or stage II, invasive, smaller than 5 centimeters, and estrogen-receptor-positive or -negative. Scores range from -1.0 to +1.0, with scores less than 0 indicating high risk, and scores greater than 0 indicating low risk. The is currently no LOINC code for Mammaprint test." - FindingResult value is type Quantity + DataValue value is type Quantity TopicCode is MTH#C2827401 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type BreastSpecimen @@ -381,7 +381,7 @@ Based on: Observation Concept: MTH#C0678941 Description: "Whether a subject carries a mutation in a particular gene." Value: CodeableConcept from PositiveNegativeVS -// SpecificFocusOfFinding.CodeableConcept from GeneIdentifierVS +// Focus.CodeableConcept from GeneIdentifierVS 0..0 ReferenceRange //0..0 DeltaFlag 0..0 AnatomicalLocationd @@ -409,7 +409,7 @@ includes 1..1 BRCA2Variant Based on: GeneticVariant Description: "Whether the patient has a mutation in the BRCA1 gene." Value: CodeableConcept from PositiveNegativeVS -// SpecificFocusOfFinding.CodeableConcept is HGNC#BRCA1Gene +// Focus.CodeableConcept is HGNC#BRCA1Gene Element: BRCA2Variant @@ -417,7 +417,7 @@ includes 1..1 BRCA2Variant Based on: GeneticVariant Description: "Whether the patient has a mutation in the BRCA2 gene." Value: CodeableConcept from PositiveNegativeVS -// SpecificFocusOfFinding.CodeableConcept is HGNC#BRCA2Gene +// Focus.CodeableConcept is HGNC#BRCA2Gene FHIR Genomics: diff --git a/spec/shr_core.txt b/spec/shr_core.txt index f7f82050..8a43fb1a 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -796,12 +796,6 @@ Description: "A unique string that identifies a specific person or thing." Description: "An organization who issues a qualification, identifier, or license." Value: ref(Organization) - -Element: Status -Concept: MTH#C0449438 -Description: "The current standing or state." -Value: CodeableConcept - /* Element: TermMapping Description: "Represents an alternative (mapped) Concept associated with a source concept (i.e., CodedText.concept or the textual value of the CodedText when no equivalent concept has been defined), and the relative match of the mapped Concept with respect to the source Concept. Mappings may be used to add classification terms (e.g. adding ICD classifiers to SNOMED descriptive terms), for computational convenience, or to provide equivalents in other terminologies (e.g. across nursing vocabularies)." diff --git a/spec/shr_encounter.txt b/spec/shr_encounter.txt index 04e278a5..e51ded84 100644 --- a/spec/shr_encounter.txt +++ b/spec/shr_encounter.txt @@ -11,7 +11,7 @@ Description: "A description of an interaction between a patient and healthcare p 0..1 EncounterClass 0..* EncounterType 0..1 TimePeriod -1..1 Status //from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 +1..1 PerformanceStatus //from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 0..1 PartOf value is type ref(Encounter) 0..* Diagnosis // SHR Extension @@ -117,16 +117,16 @@ Description: "A detailed description of an interaction between a patient and hea /* -Element: EncounterRequestedCxntext -Based on: RequestedCxntext -Description: "Cxntext for encounter requests." - Status from http://hl7.org/fhir/ValueSet/request-status +Element: EncounterRequestedContext +Based on: RequestedContext +Description: "Context for encounter requests." + RequestStatus from http://hl7.org/fhir/ValueSet/request-status PriorityRank from http://hl7.org/fhir/ValueSet/request-priority -Element: EncounterPerformedCxntext -Based on: PerformedCxntext -Description: "Cxntext for encounters performed." - Status from http://hl7.org/fhir/ValueSet/encounter-status +Element: EncounterPerformedContext +Based on: PerformedContext +Description: "Context for encounters performed." + EncounterStatus from http://hl7.org/fhir/ValueSet/encounter-status OccurrenceTimeOrPeriod is type OccurrencePeriod Reason should be from http://hl7.org/fhir/ValueSet/encounter-reason // RelatedRequest value is type ref(EncounterRequested) diff --git a/spec/shr_encounter_map_dstu2.txt b/spec/shr_encounter_map_dstu2.txt index f6582c59..97b874f8 100644 --- a/spec/shr_encounter_map_dstu2.txt +++ b/spec/shr_encounter_map_dstu2.txt @@ -8,7 +8,7 @@ Encounter maps to Encounter: Patient maps to patient EncounterType maps to type // ServiceProvider maps to serviceProvider - Status maps to status + PerformanceStatus maps to status TimePeriod maps to period // Participation.Participant maps to participant // Participation.Participant[Entity] maps to participant.individual ??? @@ -30,7 +30,7 @@ EncounterRequested maps to ReferralRequest: EncounterTopic.??? maps to type //TreatmentCooperation //PaymentSource - EncounterStatus maps to status + PerformanceStatus maps to status //RequestIntent EncounterExpectedPerformanceTime maps to occurrence[x] EncounterExpectedPerformerType maps to specialty diff --git a/spec/shr_encounter_map_stu3.txt b/spec/shr_encounter_map_stu3.txt index 3349e910..5df83681 100644 --- a/spec/shr_encounter_map_stu3.txt +++ b/spec/shr_encounter_map_stu3.txt @@ -7,7 +7,7 @@ Encounter maps to Encounter: Patient maps to subject EncounterType maps to type // ServiceProvider maps to serviceProvider - Status maps to status + PerformanceStatus maps to status TimePeriod maps to period // Participation.Participant maps to participant // Participation.Participant[Entity] maps to participant.individual ??? @@ -29,7 +29,7 @@ EncounterRequested maps to ReferralRequest: EncounterTopic.??? maps to type //TreatmentCooperation //PaymentSource - EncounterStatus maps to status + PerformanceStatus maps to status //RequestIntent EncounterExpectedPerformanceTime maps to occurrence[x] EncounterExpectedPerformerType maps to specialty diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index cce04b45..ff29ba4b 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -11,22 +11,23 @@ Description: "A related person that is a family member of the patient. This incl EntryElement: FamilyMemberHealthHistory -Based on: ConditionOrObservation +Based on: DomainResource Concept: LNC#54114-4 "Family member health history [USSG-FHT] Family member" //This is part of a US General Surgeon general family health LOINC panel Description: "The health history of a patient's family member." 1..1 Patient - SpecificFocusOfFinding value is type ref(FamilyMember) - FindingStatus from http://hl7.org/fhir/ValueSet/history-status -0..* FamilyMemberConditionPresentAssertion +1..1 FamilyMember +1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/history-status +0..* FamilyMemberConditionPresent -EntryElement: FamilyMemberConditionPresentAssertion -Based on: PresenceAssertion +EntryElement: FamilyMemberConditionPresent +Based on: ConditionPresent Concept: LNC#8670-2 "History of family member diseases" 0..1 Onset 0..1 ConditionOutcome TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered - SpecificFocusOfFinding value is type ref(FamilyMember) + Focus value is type ref(FamilyMember) + Element: ConditionOutcome Concept: TBD#TBD Description: "The lasting effects of a disease, e.g. death, functional impairment." diff --git a/spec/shr_financial.txt b/spec/shr_financial.txt index d85d4461..8d9ee1d5 100644 --- a/spec/shr_financial.txt +++ b/spec/shr_financial.txt @@ -11,15 +11,22 @@ EntryElement: Coverage Based on: DomainResource Concept: MTH#C0021682 "HealthInsurance" Description: "Health insurance coverage available (even if not used for payment for a given encounter)." -0..1 Status from http://hl7.org/fhir/ValueSet/fm-status -1..1 Type should be from http://hl7.org/fhir/ValueSet/coverage-type +0..1 CoverageStatus from http://hl7.org/fhir/ValueSet/fm-status +1..1 CoverageType should be from http://hl7.org/fhir/ValueSet/coverage-type 0..1 InsuranceMemberId 0..1 PolicyHolder 0..1 EffectiveTimePeriod // TODO: complete this! + Element: CoverageStatus + Description: "The financial account status of the coverage." + Value: CodeableConcept + + Element: CoverageType + Description: "Coverage category such as medical or accident." + Value: CodeableConcept + Element: InsuranceMemberId - Concept: TBD Description: "Patient identifier at a healthcare provider, insurer, or other related organization." Value: string // should be id, but FHIR uses string diff --git a/spec/shr_financial_map_dstu2.txt b/spec/shr_financial_map_dstu2.txt index 1c901739..5ac5787d 100644 --- a/spec/shr_financial_map_dstu2.txt +++ b/spec/shr_financial_map_dstu2.txt @@ -5,8 +5,8 @@ Target: FHIR_DSTU_2 Coverage maps to Coverage: // dstu 2 change (no such attribute) -// Status maps to status - Type maps to type + CoverageStatus maps to status + CoverageType maps to type InsuranceMemberId maps to subscriberId EffectiveTimePeriod maps to period PolicyHolder[Patient] maps to policyHolder // dstu 2 change (more restricted type) \ No newline at end of file diff --git a/spec/shr_financial_map_stu3.txt b/spec/shr_financial_map_stu3.txt index 7ec6beed..5c25b95b 100644 --- a/spec/shr_financial_map_stu3.txt +++ b/spec/shr_financial_map_stu3.txt @@ -4,8 +4,8 @@ Target: FHIR_STU_3 Coverage maps to Coverage: - Status maps to status - Type maps to type + CoverageStatus maps to status + CoverageType maps to type InsuranceMemberId maps to subscriberId EffectiveTimePeriod maps to period PolicyHolder maps to policyHolder \ No newline at end of file diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index 8a480ffa..07fe2202 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -11,9 +11,9 @@ Based on: LaboratoryObservation Concept: SCT#20889005 "Genetic marker function (observable entity)" Description: "The process of isolating and testing the DNA of an embryo or a person to detect the presence of genetic alterations or defects that may predispose to the future development of a disease or disorder. (source: NCI Thesaurus)" TopicCode from https://www.ncbi.nlm.nih.gov/gtr if covered // the identifier from the Genetic Test Registry - FindingMethod from GeneticTestMethodVS if covered -0..0 FindingResult // panel, no numerical or coded result -0..0 SpecificFocusOfFinding + Method from GeneticTestMethodVS if covered +0..0 DataValue // panel, no numerical or coded result +0..0 Focus // MK: What gene are we looking at? mlt: identified in two places: 1) TopicCode through the GTR ID, 2) in the GeneName element below. 0..0 ReferenceRange 0..1 GenomicSourceClass @@ -66,9 +66,9 @@ EntryElement: TumorMarker Based on: CodedLaboratoryObservation Concept: LNC#21924-6 "Tumor marker Cancer" Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Dictionary of Cancer Terms). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) + Focus value is type ref(CancerDisorderPresent) TopicCode is LNC#21924-6 "Tumor marker Cancer" - FindingResult from TumorMarkerVS if covered + DataValue from TumorMarkerVS if covered 0..0 ObservationComponent 0..0 AnatomicalLocation 0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated @@ -82,13 +82,13 @@ Concept: LNC#TBD "TBD" Based on: CodedObservationComponent Description: "TBD (source: LOINC)" TopicCode is LNC#TBD - FindingResult from TBD + DataValue from TBD */ EntryElement: CancerGeneticMarkerAnalysisResult Based on: GeneticMarkerAnalysisResult -Concept: TBD#TBD "Cancer Genetic Test Result" +Concept: TBD#TBD "Cancer Genetic Test DataValue" Description: "A panel that analyses different components of a genetic test specific to cancer-related genetic markers." TopicCode from CancerGeneticTestRegistryVS if covered // the identifier from the Genetic Test Registry value set (filtered for cancer-relevant genetic tests.) GeneName.CodeableConcept from CancerGeneVS if covered diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 10977c4c..8081943b 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -74,7 +74,7 @@ Description: "A record of the use of a medication. If the medication is given as 1..1 Medication 0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category - Status from http://hl7.org/fhir/ValueSet/medication-statement-status + PerformanceStatus from http://hl7.org/fhir/ValueSet/medication-statement-status 0..0 Method // because of Dosage.Method 0..1 Reason // DSTU 2 change (upper card imposed by DSTU 2) @@ -85,7 +85,7 @@ Description: "A record of the use of a medication. If the medication is given as 1..1 Medication 0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category - Status from http://hl7.org/fhir/ValueSet/medication-admin-status + PerformanceStatus from http://hl7.org/fhir/ValueSet/medication-admin-status 0..0 Method // because of Dosage.Method 0..1 Participation Participation.Participant is type PatientOrPractitionerOrRelatedPerson // DSTU 2 change (max cardinality = 1), also, DSTU 2 participant excludes Device @@ -96,18 +96,18 @@ Description: "A record of the use of a medication. If the medication is given as EntryElement: MedicationAdherence Based on: CodedNonLaboratoryObservation Concept: MTH#C2364172 -Description: "Information on the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency. The SpecificFocusOfFinding must reference the medication via a code, MedicationRequest, or MedicationStatement. +Description: "Information on the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency. The Focus must reference the medication via a code, MedicationRequest, or MedicationStatement. Modeling note: MedicationAdherence could be attached to MedicationStatement directly as an extension, but modeling as an observation avoids creating an extension and allows this observation to be made at any time." - FindingResult from QualitativeFrequencyVS + DataValue from QualitativeFrequencyVS TopicCode is MTH#C2364172 -1..1 SpecificFocusOfFinding value is type ref(Medication) +1..1 Focus value is type ref(Medication) ObservationComponent includes 0..* MedicationNonAdherenceReason Element: MedicationNonAdherenceReason Based on: CodedObservationComponent Description: "Reason that patient did not adhere to a medication regimen." - FindingResult from MedicationNonAdherenceReasonVS + DataValue from MedicationNonAdherenceReasonVS TopicCode is TBD#TBD EntryElement: MedicationNotAdministered @@ -123,7 +123,7 @@ Based on: ActionRequested Concept: TBD Description: "An order for a medication to be dispensed and instructions for use." 1..1 Requester value is type ref(Practitioner) - Status //from http://hl7.org/fhir/ValueSet/medication-request-status DSTU 2 change (incompatible required value sets) + RequestStatus //from http://hl7.org/fhir/ValueSet/medication-request-status DSTU 2 change (incompatible required value sets) PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority 1..1 Medication 0..1 Dosage diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index b2b34fa1..2d25332c 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -31,7 +31,7 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ // fix taken to #y Reason maps to reasonForUse[x] OccurrenceTimeOrPeriod maps to effective[x] - Status maps to status + PerformanceStatus maps to status // DSTU 2 change (added Dosage as in-line element) Dosage.DoseAmount maps to dosage.quantity[x] Dosage.TimingOfDoses maps to dosage.timing @@ -60,7 +60,7 @@ MedicationAdministered maps to MedicationAdministration: // DSTU 2 change (name change) Reason maps to reasonGiven OccurrenceTimeOrPeriod maps to effectiveTime[x] - Status maps to status + PerformanceStatus maps to status // DSTU 2 change (more restrictive type) Participation.Participant maps to practitioner // DSTU 2 change (no such attribute) @@ -94,7 +94,7 @@ MedicationRequested maps to http://fhir.org/guides/argonaut/StructureDefinition/ constrain dosageInstruction to 0..1 // DSTU 2 change (name change) Reason maps to reason[x] - Status maps to status + RequestStatus maps to status ExpectedPerformanceTime maps to dispenseRequest.validityPeriod // DSTU 2 change (no such attribute) // PriorityRank maps to priority diff --git a/spec/shr_medication_map_stu3.txt b/spec/shr_medication_map_stu3.txt index 27c900d0..65fc699a 100644 --- a/spec/shr_medication_map_stu3.txt +++ b/spec/shr_medication_map_stu3.txt @@ -25,7 +25,7 @@ MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c fix taken to #y Reason maps to reasonCode OccurrenceTimeOrPeriod maps to effective[x] - Status maps to status + PerformanceStatus maps to status MedicationAdministered maps to MedicationAdministration: Patient maps to subject @@ -38,7 +38,7 @@ MedicationAdministered maps to MedicationAdministration: Category maps to category Reason maps to reasonCode OccurrenceTimeOrPeriod maps to effective[x] - Status maps to status + PerformanceStatus maps to status Participation maps to performer Participation.Participant maps to performer.actor // Participation.ParticipationType maps to performer.role (no role in med administration!) @@ -63,7 +63,7 @@ MedicationRequested maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c constrain dosageInstruction to 0..1 Dosage maps to dosageInstruction Reason maps to reasonCode - Status maps to status + RequestStatus maps to status ExpectedPerformanceTime maps to dispenseRequest.validityPeriod PriorityRank maps to priority PerformerInstructions maps to note.text diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 39574be7..bc0c5887 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -32,7 +32,7 @@ Concept: LNC#74165-2 "HistoryOfEmploymentStatus" Description: "The self-reported current and historical data about a person's economic relationship to work (e.g. having one or more jobs), including start and end dates. A person's Employment Status could change over time, for example, a person could be employed following a period of choosing to not be in the labor force. Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." - FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 + DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" 0..0 ObservationComponent 0..0 FocalSubjectModifier @@ -43,7 +43,7 @@ Concept: LNC#87510-4 "Date of Retirement" Description: "A self-reported date that a person considers themselves to have ‘retired’. A person can be both retired and employed (an Employment Status); most often, a person would be retired from one job and employed in another job. A person also can have more than one retirement date; for example, a person could retire from military service, then later retire from a civilian job. Multiple retirement dates should be recorded using multiple FHIR resources. Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." - FindingResult value is type dateTime + DataValue value is type dateTime TopicCode is LNC#87510-4 "Date of Retirement" 0..0 ObservationComponent 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. @@ -67,7 +67,7 @@ Description: "Related data elements about the work a person reports having perfo Knowledge of person's Usual Work can potentially assist in diagnosis, treatment and/or prevention of chronic condition(s) or conditions with a long latency. The potential for exposure to Occupational Hazard(s) related to an Occupation and/or an Industry can change over time, and a person could have been in and out of their Usual Work over time, so additional data are helpful to fully evaluate the possible impact of the person's Usual Work on their health and guide appropriate use of screening tests to detect early disease. Example: a person has worked for a total of 30 years as a 'secretary' (Occupation), but in various industries, mostly hotel construction. Her Usual Occupation is 'secretary' and her Usual Industry is 'hotel construction.' Usual Work does not include work that was unpaid or voluntary." - FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 + DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 TopicCode is LNC#21843-8 ObservationComponent includes 1..1 UsualIndustry @@ -81,7 +81,7 @@ includes 0..1 UsualOccupationDuration Description: "The industry (type of business) which the subject has worked in for the longest duration while in the usual occupation. For example, a person who has spent 30 years as a secretary in various industries, but mostly in construction, would record a usual occupation of secretary and a usual industry of construction." // "A history of this observation is not retained. Actually past versions of the observation could be retained, but the panel should refer to the latest one only. //Value: CodeableConcept from IndustryVS - FindingResult from + DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 TopicCode is LNC#21844-6 "History of Usual industry" @@ -89,7 +89,7 @@ includes 0..1 UsualOccupationDuration Based on: QuantitativeObservationComponent Concept: LNC#74163-7 "Usual occupation duration" Description: "The total time spent on an activity, inclusive of all time intervals, whether continuous or interrupted." - // FindingResult.Quantity.Units is UCUM#a + // DataValue.Quantity.Units is UCUM#a TopicCode is LNC#74163-7 "Usual occupation duration" EntryElement: PastOrPresentJob @@ -99,7 +99,7 @@ Description: "Related data elements for a current or previous job, as reported b A person can have more than one job at the same time and multiple jobs over time, so the data related to each job must remain in the record in perpetuity. Each job should be recorded in a separate instance of PastOrPresentJob. A person's job can be a social determinant of their health and information about a person's job can support patient care, population health, and public health. In patient care, knowledge of a person's past or present job(s) can impact recognition, diagnosis, management, and treatment of injuries and illnesses. These data also can be used for clinical decision support and to prompt discussion of preventive care measures. For example, a record of jobs that require prolonged time in the sun might prompt a health care provider to inquire if the person wears protective clothing or sunscreen while working. At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." -0..0 FindingResult +0..0 DataValue 0..0 DataAbsentReason TopicCode is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization @@ -120,7 +120,7 @@ includes 0..1 IsCurrentJob Element: Occupation Based on: CodedObservationComponent Concept: LNC#85659-1 "Occupation CDC Census code" - FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 + DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 Element: Employer Based on: Role @@ -140,7 +140,7 @@ includes 0..1 IsCurrentJob Concept: LNC#86188-0 Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." // Value: CodeableConcept from IndustryVS - FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 + DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 TopicCode is LNC#86188-0 Element: WorkClassification @@ -148,7 +148,7 @@ includes 0..1 IsCurrentJob Concept: LNC#85104-8 "Compensation and sector employment type" Description: "Type of compensation and sector for a person's job, such as 'paid work, self-employed' or 'voluntary work', as reported by the person." //Value: CodeableConcept from WorkClassificationVS - FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 + DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 TopicCode is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel @@ -156,21 +156,21 @@ includes 0..1 IsCurrentJob Concept: LNC#87707-6 Description: "A coded indicator of responsibilities for directing work and personnel management responsibilities for a person's job, as reported by the person. For US military jobs, this is pay grade." //Value: CodeableConcept from SupervisoryLevelVS - FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 + DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 TopicCode is LNC#87707-6 Element: JobDuty Based on: ObservationComponent Concept: LNC#63761-1 Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " - FindingResult value is type string + DataValue value is type string TopicCode is LNC#63761-1 Element: OccupationalHazard Based on: ObservationComponent Concept: LNC#87729-0 Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." - FindingResult value is type string + DataValue value is type string TopicCode is LNC#87729-0 Element: WorkSchedule @@ -178,7 +178,7 @@ includes 0..1 IsCurrentJob Concept: LNC#74159-5 Description: "Typical arrangement of working hours for a person's job, as reported by the person." //Value: CodeableConcept from WorkScheduleVS - FindingResult from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 + DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 TopicCode is LNC#74159-5 Element: WeeklyWorkDays @@ -186,7 +186,7 @@ includes 0..1 IsCurrentJob Concept: LNC#74160-3 Description: "The average number of days per week that a person spends performing their duties for work." // TODO: bug preventing this -// FindingResult.Quantity.Units is UCUM#d +// DataValue.Quantity.Units is UCUM#d TopicCode is LNC#74160-3 0..0 ReferenceRange @@ -194,7 +194,7 @@ includes 0..1 IsCurrentJob Based on: QuantitativeObservationComponent Concept: LNC#87512-0 Description: "The average number of hours in a day that a person spends performing their duties for work." - // FindingResult.Quantity.Units is UCUM#h + // DataValue.Quantity.Units is UCUM#h TopicCode is LNC#87512-0 0..0 ReferenceRange @@ -202,14 +202,14 @@ includes 0..1 IsCurrentJob Element: IsCurrentJob Based on: CodedObservationComponent Description: "A flag indicating if this is the person's current job (at the time the resource was last updated)." - FindingResult from YesNoVS + DataValue from YesNoVS Element: SocialHistoryObservation Based on: Observation Description: "A simplified observation for social histories." Category is OBSCAT#social-history 0..1 FocalSubjectModifier -0..0 FindingMethod +0..0 Method 0..0 AnatomicalLocation 0..0 ReferenceRange 0..0 PanelMembers @@ -220,8 +220,9 @@ Description: "A simplified observation for social histories." 0..0 Encounter //0..0 DeltaFlag 0..0 CommentOrDescription -//0..0 FindingStatus + +// TODO: Use Focus Element: FocalSubjectModifier Description: "The focus of the observation, if someone other than the person of record (subject), identified only by the relationship to the Patient." Value: RelationshipToPersonOfRecord @@ -229,7 +230,7 @@ Description: "A simplified observation for social histories." Element: CodedSocialHistoryObservation Based on: SocialHistoryObservation Description: "The result of social history questions, whose answer is expressed as a code." - FindingResult value is type CodeableConcept + DataValue value is type CodeableConcept /* UsualWork is in the value element Element: UsualWork diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt index 2afed3e9..dddb40dd 100644 --- a/spec/shr_occupation_map_dstu2.txt +++ b/spec/shr_occupation_map_dstu2.txt @@ -8,11 +8,11 @@ SocialHistoryObservation maps to Observation: Category maps to category ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) ObservationComponent.TopicCode maps to component.code - ObservationComponent.FindingResult maps to component.value[x] + ObservationComponent.DataValue maps to component.value[x] ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation ObservationComponent.ReferenceRange maps to component.referenceRange - FindingResult maps to value[x] + DataValue maps to value[x] DataAbsentReason maps to dataAbsentReason RelevantTime maps to effective[x] Encounter maps to context diff --git a/spec/shr_occupation_map_stu3.txt b/spec/shr_occupation_map_stu3.txt index 6afe238c..a24cfcad 100644 --- a/spec/shr_occupation_map_stu3.txt +++ b/spec/shr_occupation_map_stu3.txt @@ -9,12 +9,12 @@ SocialHistoryObservation maps to Observation: Category maps to category ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) ObservationComponent.TopicCode maps to component.code - ObservationComponent.FindingResult maps to component.value[x] + ObservationComponent.DataValue maps to component.value[x] ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation ObservationComponent.ReferenceRange maps to component.referenceRange // constrain related to 0..0 - FindingResult maps to value[x] + DataValue maps to value[x] // DataAbsentReason maps to dataAbsentReason RelevantTime maps to effective[x] // Encounter maps to context diff --git a/spec/shr_oncocore.txt b/spec/shr_oncocore.txt index 9d9bbf96..1d4438c8 100644 --- a/spec/shr_oncocore.txt +++ b/spec/shr_oncocore.txt @@ -10,7 +10,7 @@ CodeSystem: UCUM = http://unitsofmeasure.org EntryElement: CancerDisorderPresent -Based on: ConditionPresentAssertion +Based on: ConditionPresent Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" Description: "The presence of malignant neoplastic disease, in which abnormal cells divide without control and can invade nearby tissues." TopicCode from CancerDisorderVS @@ -24,9 +24,9 @@ EntryElement: CancerHistologicType Based on: SimpleCodedNonLaboratoryObservation // MK: Would this use a specimen? If so, it has to be a laboratory observation Description: "Classification of the cancer by the type of tissue in which the cancer originates. (Source: NCI)" Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." - FindingResult from CancerHistologicTypeVS + DataValue from CancerHistologicTypeVS TopicCode is SCT#371441004 "Histologic type (observable entity)" - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) + Focus value is type ref(CancerDisorderPresent) 0..0 AnatomicalLocation 0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated 0..0 AnatomicalLocation.AnatomicalLocationStructured @@ -38,9 +38,9 @@ EntryElement: CancerHistologicGrade Based on: CodedLaboratoryObservation Description: "A description of a tumor based on how abnormal the cancer cells and tissue look under a microscope and how quickly the cancer cells are likely to grow and spread. Low-grade cancer cells look more like normal cells and tend to grow and spread more slowly than high-grade cancer cells. (Source: NCI Dictionary of Cancer Terms)" Concept: LNC#21858-6 "Grade Cancer" - FindingResult from http://loinc.org/vs/LL213-0 + DataValue from http://loinc.org/vs/LL213-0 TopicCode is LNC#21858-6 "Grade Cancer" - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) + Focus value is type ref(CancerDisorderPresent) 0..0 AnatomicalLocation 0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated 0..0 AnatomicalLocation.AnatomicalLocationStructured @@ -52,9 +52,9 @@ EntryElement: CancerProgression // aka DiseaseStatus Based on: CodedNonLaboratoryObservation Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" Concept: SCT#246453008 "Course of illness (attribute)" - FindingResult from CancerProgressionVS + DataValue from CancerProgressionVS TopicCode is SCT#246453008 "Course of illness (attribute)" - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) + Focus value is type ref(CancerDisorderPresent) // CancerProgressionEvidence is not yet part of M-CODE, but I don't see a better way to include it for FluxNotes 0..* CancerProgressionEvidence 0..0 AnatomicalLocation @@ -71,14 +71,14 @@ Concept: SCT#246453008 "Course of illness (attribute)" /**** replaced by Onset of CancerDisorderPresent EntryElement: EarliestDateOfCancerDiagnosis -//TODO_discussion: added, but not convinced we need a separate element for this given the WhenClinicallyRecognized property of ConditionPresentAssertion. +//TODO_discussion: added, but not convinced we need a separate element for this given the WhenClinicallyRecognized property of ConditionPresent. Based on: SimpleNonLaboratoryObservation Concept: LNC#77975-1 "Earliest date of diagnosis" Description: "The earliest date of diagnosis (clinical or laboratory) of an illness or condition (Source: LOINC). This element is the same as the WhenClinicallyRecognized property in CancerDiagnosis." Value: dateTime // parent class only allows time, dateTime or TimePeriod as choices. 0..0 ReferenceRange 0..0 AnatomicalLocation - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) + Focus value is type ref(CancerDisorderPresent) */ /********** Assessments **************/ @@ -87,9 +87,9 @@ EntryElement: ECOGPerformanceStatus Based on: SimpleNonLaboratoryObservation Description: "The Eastern Cooperative Oncology Group (ECOG) performance status grade or score, which indicates a patient’s level of daily functioning and physical ability. Source: LOINC" Concept: LNC#89247-1 "ECOG Performance Status score" - FindingResult value is type IntegerQuantity + DataValue value is type IntegerQuantity //0..0 ReferenceRange // set to 0 to 5 -0..0 SpecificFocusOfFinding +0..0 Focus 0..0 AnatomicalLocation 0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated 0..0 AnatomicalLocation.AnatomicalLocationStructured @@ -100,8 +100,8 @@ EntryElement: KarnofskyPerformanceStatus Based on: SimpleNonLaboratoryObservation Description: "The Karnofsky Performance Status (KPS) is a tool used to measure a patient's functional status. It can be used to compare the effectiveness of different therapies and to help assess the prognosis of certain patients, such as those with certain cancers. The KPS score ranges from 0 to 100. Higher scores are associated with better functional status, with 100 representing no symptoms or evidence of disease, and 0 representing death [PMID: 23870327] . This panel contains LOINC terms to report the KPS score [LOINC: 89243-0] and its interpretation [LOINC: 89245-5]." Concept: LNC#89243-0 "Karnofsky Performance Status panel" - FindingResult value is type IntegerQuantity // THIS ISN'T WORKING! -0..0 SpecificFocusOfFinding + DataValue value is type IntegerQuantity // THIS ISN'T WORKING! +0..0 Focus 0..0 AnatomicalLocation 0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated 0..0 AnatomicalLocation.AnatomicalLocationStructured diff --git a/spec/shr_oncocore_stage.txt b/spec/shr_oncocore_stage.txt index 5f355495..b9003ea0 100644 --- a/spec/shr_oncocore_stage.txt +++ b/spec/shr_oncocore_stage.txt @@ -20,7 +20,7 @@ Description: "A suffix used in conjuction with certain cancer stage categories, Value: CodeableConcept //from CancerStageSuffixVS VS only includes terms applicable to BrCa. Element: CancerStagingSystem -Based on: FindingMethod +Based on: Method Concept: SCT#260713006 "Method of Staging (attribute)" Value: CodeableConcept from CancerStagingSystemVS if covered @@ -28,16 +28,16 @@ Abstract Element: CancerStagePanel Based on: HeadlessPanel Description: "A panel that contains cancer staging information. This abstract class is the parent of panels containing information related to clinical and pathologic staging." 0..1 CancerStageTiming -0..1 FindingMethod is type CancerStagingSystem - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) +0..1 Method is type CancerStagingSystem + Focus value is type ref(CancerDisorderPresent) Abstract Element: CancerStagePanelMember Based on: CodedNonLaboratoryObservation Description: "Abstract parent class for members of cancer staging panels. Cancer panel members must include a timing element and staging system, and focus on a cancer disorder. Specific realizations will have value sets specific to certain staging systems." - SpecificFocusOfFinding value is type ref(CancerDisorderPresent) + Focus value is type ref(CancerDisorderPresent) 1..1 CancerStageTiming -0..1 FindingMethod is type CancerStagingSystem -0..0 AnatomicalLocation +0..1 Method is type CancerStagingSystem +0..0 AnatomicalLocation 0..0 ReferenceRange 0..0 ObservationComponent 0..0 PanelMembers @@ -56,7 +56,7 @@ Concept: LNC#75620-5 "TNM clinical staging before treatment panel Cancer" Description: "A panel of staging information that is performed prior to surgery, based on evidence such as physical examination, imaging, and/or biopsy." TopicCode is LNC#75620-5 "TNM clinical staging before treatment panel Cancer" CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" // timing is implicit in LOINC code, so this attribute could potentially could be eliminated - FindingMethod from TNMTumorStagingSystemVS if covered + Method from TNMTumorStagingSystemVS if covered PanelMembers.Observation includes 0..1 TNMClinicalStageGroup includes 0..1 TNMClinicalPrimaryTumorClassification @@ -68,7 +68,7 @@ Description: "A panel of staging information that is performed prior to surge Concept: LNC#21908-9 "Stage group.clinical Cancer" Description: "The overall stage of the cancer, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies. (adapted from NCI Dictionary of Cancer Terms)." TopicCode is LNC#21908-9 "Stage group.clinical Cancer" - FindingResult from http://loinc.org/vs/LL240-3 + DataValue from http://loinc.org/vs/LL240-3 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" 0..0 CancerStageSuffix @@ -77,7 +77,7 @@ Description: "A panel of staging information that is performed prior to surge Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" Description: "Classification based on the size and extent of the primary tumor." TopicCode is LNC#21905-5 "Primary tumor.clinical [Class] Cancer" - FindingResult from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 + DataValue from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" EntryElement: TNMClinicalRegionalNodesClassification @@ -85,7 +85,7 @@ Description: "A panel of staging information that is performed prior to surge Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" Description: "The presence of metastases in regional lymph nodes, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies. (adapted from NCI Dictionary of Cancer Terms)" TopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" - FindingResult from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 + DataValue from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" EntryElement: TNMClinicalDistantMetastasesClassification @@ -93,7 +93,7 @@ Description: "A panel of staging information that is performed prior to surge Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" Description: "The presence of metastases in remote anatomical locations, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies." TopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" - FindingResult from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 + DataValue from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" @@ -102,7 +102,7 @@ Based on: CancerStagePanel Concept: LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" Description: "A panel of staging information that is based on examination of tissue samples removed during surgery, in addition to physical examination and imaging and potentially, other prognostic factors." TopicCode is LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" -0..1 FindingMethod from TNMTumorStagingSystemVS if covered +0..1 Method from TNMTumorStagingSystemVS if covered CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" PanelMembers.Observation includes 0..1 TNMPathologicStageGroup @@ -116,7 +116,7 @@ Description: "A panel of staging information that is based on examination of Concept: LNC#21902-2 "Stage group.pathology Cancer" Description: "The overall stage of the cancer, determined through pathologic analysis of a tumor specimen, and classified based on criteria defined by the staging system." TopicCode is LNC#21902-2 "Stage group.pathology Cancer" - FindingResult from http://loinc.org/vs/LL234-6 + DataValue from http://loinc.org/vs/LL234-6 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" 0..0 CancerStageSuffix @@ -126,7 +126,7 @@ Description: "A panel of staging information that is based on examination of Concept: LNC#21899-0 "Primary tumor.pathology Cancer" Description: "TODO: pull from LOINC" //TODO: pull from LOINC TopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" - FindingResult from http://loinc.org/vs/LL232-0 + DataValue from http://loinc.org/vs/LL232-0 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" EntryElement: TNMPathologicRegionalNodesClassification @@ -134,7 +134,7 @@ Description: "A panel of staging information that is based on examination of Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" Description: "The presence of metastases in regional lymph nodes, obtained through pathologic analysis of a tumor specimen, and classified based on criteria defined by the staging system."" TopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" - FindingResult from http://loinc.org/vs/LL3136-0 + DataValue from http://loinc.org/vs/LL3136-0 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" EntryElement: TNMPathologicDistantMetastasesClassification @@ -142,7 +142,7 @@ Description: "A panel of staging information that is based on examination of Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" Description: "TODO: pull from LOINC" //TODO: pull from LOINC TopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative - FindingResult from http://loinc.org/vs/LL3137-8 + DataValue from http://loinc.org/vs/LL3137-8 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" */ diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 2a043d83..cf759954 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -20,7 +20,7 @@ Description: "A procedure that has been performed." //0..* Indication 0..* ref(Device) Participation.OnBehalfOf value is type ref(Organization) - Status // must be from http://hl7.org/fhir/ValueSet/event-status + PerformanceStatus // must be from http://hl7.org/fhir/ValueSet/event-status // Participation.Participant.EntityOrRole is type ref(Practitioner) Participation.Participant is type FHIRProcedureParticipant RelatedRequest value is type ref(ProcedureRequested) @@ -57,13 +57,13 @@ Based on: ActionNotPerformed //0..1 PartOf value is type ref(ProcedurePerformed or Not Performed) ??? 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation -1..1 Status // must be from http://hl7.org/fhir/ValueSet/event-status // DSTU 2 change (different required value sets in v2 and v3) +1..1 PerformanceStatus // must be from http://hl7.org/fhir/ValueSet/event-status // DSTU 2 change (different required value sets in v2 and v3) RelatedRequest value is type ref(ProcedureRequested) EntryElement: ProcedureRequested Based on: ActionRequested PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) - Status // must be from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) + RequestStatus // must be from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) 0..1 Requester is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. 1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* AnatomicalLocation @@ -189,6 +189,6 @@ EntryElement: DiagnosticImagingPerformed Based on: ProcedurePerformed Description: "Diagnostic imaging procedure performed." Concept: SCT#363679005 "Imaging (procedure)" -0..0 SpecificFocusOfFinding +0..0 Focus ProcedureCode from DiagnosticImagingVS \ No newline at end of file diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 30ae99fb..452edf5b 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -23,7 +23,7 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a Participation.ParticipationType maps to performer.role // DSTU 2 change (no such attribute) // Participation.OnBehalfOf maps to performer.onBehalfOf - Status maps to status + PerformanceStatus maps to status // TODO The following statement is failing it might be a bug // Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method RelatedRequest.Value maps to request @@ -72,7 +72,7 @@ ProcedureRequested maps to ProcedureRequest: AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/procedure-targetBodySite Encounter maps to encounter Reason maps to reason[x] - Status maps to status + RequestStatus maps to status // DSTU 2 change (no such attribute) // RequestIntent maps to intent // DSTU 2 change (name change) diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index 2645590d..d7bdf7cb 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -20,7 +20,7 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Participation.Participant maps to performer.actor Participation.ParticipationType maps to performer.role Participation.OnBehalfOf maps to performer.onBehalfOf - Status maps to status + PerformanceStatus maps to status // TODO The following statement is failing it might be a bug // Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method RelatedRequest.Value maps to basedOn @@ -66,7 +66,7 @@ ProcedureRequested maps to ProcedureRequest: AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance Encounter maps to context Reason maps to reasonCode - Status maps to status + RequestStatus maps to status RequestIntent maps to intent ExpectedPerformanceTime maps to occurrence[x] ExpectedPerformerType maps to performerType diff --git a/spec/shr_research.txt b/spec/shr_research.txt index 301ca085..c74004dd 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -12,7 +12,7 @@ Description: "A clinical trial or similar research study. Reference: list of FDA 1..1 Identifier 0..1 CommentOrDescription 0..1 PartOf value is type Study -1..1 Status from http://hl7.org/fhir/ValueSet/research-study-status +1..1 ResearchStudyStatus 0..* Enrollment 0..1 EffectiveTimePeriod 0..1 Sponsor @@ -24,6 +24,9 @@ Description: "A clinical trial or similar research study. Reference: list of FDA 0..* Annotation 0..* StudyArm + Element: ResearchStudyStatus + Description: "The status of the study, at the time of the last update of this record." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/research-study-status Element: Enrollment Concept: MTH#C4041024 @@ -31,27 +34,22 @@ Description: "A clinical trial or similar research study. Reference: list of FDA Value: ref(Group) Element: Sponsor - Concept: TBD Description: "The organization responsible for the execution of the study." Value: ref(Organization) Element: Jurisdiction - Concept: TBD Description: "The country, state or other region taking legal responsibility for the conduct of the study." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/jurisdiction if covered Element: PrincipalInvestigator - Concept: TBD Description: "Indicates the individual who has primary oversite of the execution of the study." Value: ref(Practitioner) Element: TerminationReason - Concept: TBD Description: "A description and/or code explaining the premature termination of the study." Value: CodeableConcept Element: StudyArm - Concept: TBD Description: "Arm refers to pre-specified group or subgroup of participant(s) in a clinical trial assigned to receive specific intervention(s) (or no intervention) according to a protocol." 1..1 Title 0..1 Type from StudyArmTypeVS @@ -62,7 +60,10 @@ Based on: Entity Description: "Record of a subject's enrollment and participation in a research study." 1..1 ref(Patient) 1..1 ref(Study) -1..1 Status from http://hl7.org/fhir/ValueSet/research-subject-status +1..1 ResearchSubjectStatus 1..1 ParticipationPeriod 0..1 TerminationReason from ResearchSubjectTerminationReasonVS - \ No newline at end of file + + Element: ResearchSubjectStatus + Description: "The current state of the subject with respect to participation in the research study." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/research-subject-status \ No newline at end of file diff --git a/spec/shr_research_map_dstu2.txt b/spec/shr_research_map_dstu2.txt index 1b2c6696..497accac 100644 --- a/spec/shr_research_map_dstu2.txt +++ b/spec/shr_research_map_dstu2.txt @@ -8,7 +8,7 @@ Study maps to Basic: Title maps to title Identifier maps to identifier PartOf maps to partOf - Status maps to status + ResearchStudyStatus maps to status Enrollment maps to enrollment EffectiveTimePeriod maps to period Sponsor maps to sponsor @@ -27,6 +27,6 @@ ResearchSubject maps to Basic: /* dstu 2 change (no suitable target) Patient maps to individual Study maps to study - Status maps to status + ResearchSubjectStatus maps to status ParticipationPeriod maps to period */ \ No newline at end of file diff --git a/spec/shr_research_map_stu3.txt b/spec/shr_research_map_stu3.txt index 87c4ae8a..5bda12a8 100644 --- a/spec/shr_research_map_stu3.txt +++ b/spec/shr_research_map_stu3.txt @@ -8,7 +8,7 @@ Study maps to ResearchStudy: Title maps to title Identifier maps to identifier PartOf maps to partOf - Status maps to status + ResearchStudyStatus maps to status Enrollment maps to enrollment EffectiveTimePeriod maps to period Sponsor maps to sponsor @@ -25,5 +25,5 @@ Study maps to ResearchStudy: ResearchSubject maps to ResearchSubject: Patient maps to individual Study maps to study - Status maps to status + ResearchSubjectStatus maps to status ParticipationPeriod maps to period diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt index 92567b8c..ebef6197 100644 --- a/spec/shr_tumor.txt +++ b/spec/shr_tumor.txt @@ -22,8 +22,8 @@ Description: "The presence of an abnormal mass of tissue (neoplasm) that resu EntryElement: TumorDimensions Based on: CodedLaboratoryObservation Concept: SCT#263605001 "Tumor size (observable entity)" -0..0 FindingResult - SpecificFocusOfFinding value is type ref(TumorPresent) +0..0 DataValue + Focus value is type ref(TumorPresent) TopicCode is SCT#263605001 "Tumor size (observable entity)" 0..0 PanelMembers ObservationComponent @@ -37,35 +37,35 @@ includes 0..1 SizeOfGrossTumorBed Based on: QuantitativeObservationComponent Concept: SCT#372299002 "Tumor size, dimension 1 (observable entity)" TopicCode is SCT#372299002 "Tumor size, dimension 1 (observable entity)" -// FindingResult.Quantity.Units is UCUM#mm +// DataValue.Quantity.Units is UCUM#mm Element: TumorDimension2 Description: "The second longest dimension of the tumor, perpendicular to the longest dimension." Based on: QuantitativeObservationComponent Concept: SCT#372300005 "Tumor size, dimension 2 (observable entity)" TopicCode is SCT#372300005 "Tumor size, dimension 2 (observable entity)" -// FindingResult.Quantity.Units is UCUM#mm +// DataValue.Quantity.Units is UCUM#mm Element: TumorDimension3 Description: "The third longest dimension of the tumor, perpendicular to the two longest dimensions." Based on: QuantitativeObservationComponent Concept: SCT#372301009 "Tumor size, dimension 3 (observable entity)" TopicCode is SCT#372301009 "Tumor size, dimension 3 (observable entity)" -// FindingResult.Quantity.Units is UCUM#mm +// DataValue.Quantity.Units is UCUM#mm Element: SizeOfGrossTumorBed Based on: QuantitativeObservationComponent Concept: TBD Description: "The largest dimension of the gross tumor bed/fibrotic area." TopicCode is TBD#TBD -// FindingResult.Quantity.Units is UCUM#mm +// DataValue.Quantity.Units is UCUM#mm EntryElement: TumorMargins Based on: CodedLaboratoryObservation Concept: MTH#C4086369 Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." - FindingResult from PositiveNegativeVS + DataValue from PositiveNegativeVS TopicCode is MTH#C4086369 0..0 PanelMembers ObservationComponent @@ -78,16 +78,16 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Concept: TBD Based on: CodedObservationComponent Description: "Description of the edge or border of tumor in situ by radiologist or of removed tumor by pathologist." - FindingResult from TumorMarginDescriptionVS + DataValue from TumorMarginDescriptionVS Element: Cellularity Concept: MTH#C4055283 Based on: QuantitativeObservationComponent Description: "Percentage of cells in a sample that are cancerous" - // FindingResult.Quantity.Units is UCUM#% + // DataValue.Quantity.Units is UCUM#% Element: PercentageInSituCarcinoma Based on: QuantitativeObservationComponent Concept: TBD Description: "The percentage of the cancer that is in situ, as opposed to invading other tissues." - // FindingResult.Quantity.Units is UCUM#% + // DataValue.Quantity.Units is UCUM#% diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index f24b2971..894d4995 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -64,8 +64,8 @@ See https://s.details.loinc.org/LOINC/39135-9.html?sections=Comprehensive //------------- Wound Absence or Presence --------------- -EntryElement: WoundPresenceAssertion -Based on: ConditionPresentAssertion +EntryElement: WoundPresent +Based on: ConditionPresent Concept: SCT#416462003 "Wound (disorder)" // LNC#72300-7 Wound Type? Description: "A determination that a particular type of wound that exists at a particular body site. The WoundIdentifier serves as a link between this assertion and assessments of the wound that might occur at later times. Multiple wound assessments can be associated with a single wound." @@ -73,7 +73,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t Abatement value is type dateTime // nowhere to put code 88878-4 Date of abatement {mm/dd/yyyy} 1..1 Category is OBSCAT#exam 1..1 TopicCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered -0..1 ObjectIdentifier is type WoundIdentifier +1..1 Identifier is type WoundIdentifier 0..1 ConditionCause is type WoundTypeEtiology 1..1 AnatomicalLocationStructured is type WoundAnatomicalLocation 0..0 Severity // not sure if zeroing it out is wise, but severity is not part of LOINC panel @@ -81,7 +81,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t 0..0 Device Element: WoundIdentifier - Based on: ObjectIdentifier + Based on: Identifier Concept: LNC#81666-0 Description: "A human-readable identifier for the lesion; e.g., a letter or integer." @@ -100,8 +100,8 @@ The WoundIdentifier serves as a link between this assertion and assessments of t 0..0 ClockDirection -EntryElement: WoundAbsenceAssertion -Based on: ConditionAbsentAssertion +EntryElement: WoundAbsenct +Based on: ConditionAbsent Description: "Documents the absence of a wound at a given body site. No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicalLocation." 1..1 TopicCode is SCT#416462003 "Wound (disorder)" @@ -114,7 +114,7 @@ EntryElement: WoundAssessmentPanel Based on: NonLaboratoryObservation Concept: LNC#39135-9 Description: "Group of observations regarding the properties and severity of a wound." -0..0 FindingResult +0..0 DataValue 0..0 DataAbsentReason 1..1 WoundIdentifier Interpretation is type WoundAssessmentInterpretation @@ -145,46 +145,46 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Based on: CodedObservationComponent Concept: LNC#89252-1 "Episode of Wound" Description: "Wound episode refers to a period of the wound, an incident in the course of a wound" - FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.4/expansion + DataValue from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.4/expansion Element: WoundPeriwoundDescription Based on: CodedObservationComponent Concept: LNC#72301-5 Description: "A description of the skin around the wound (periwound). Color, induration, warmth and edema should be assessed. Redness of the surrounding skin can be indicative of unrelieved pressure. Irritation of the surrounding skin can result from exposure to feces or urine, a reaction to the dressing or tape, or inappropriate removal of dressing or tape. Redness, tenderness, warmth and swelling are classical clinical signs of infection. [Reference: Brown, P., 2009]" - FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.2/expansion + DataValue from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.2/expansion //could be from http://loinc.org/vs/LL2216-1 Element: WoundVisibleInternalStructure Based on: CodedObservationComponent Concept: LNC#89250-5 Description: "Exposed body structures, devices, and/or foreign bodies visible by the naked eye in a wound." - FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.1/expansion + DataValue from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.1/expansion // should be from http://loinc.org/vs/LL4935-4 Element: WoundPressureUlcerAssociation Based on: CodedObservationComponent Concept: TBD Description: "Is the wound associated with a device or pressure point?" - FindingResult from YesNoUnknownVS + DataValue from YesNoUnknownVS Element: WoundTunnelingPresentOrAbsent Based on: CodedObservationComponent Concept: LNC#72298-3 Description: "The presence or absence of wound tunneling." - FindingResult from PresentAbsentVS + DataValue from PresentAbsentVS // LOINC: should re-use the same Snomed codes for Present-Absent Element: WoundUnderminingPresentOrAbsent Based on: CodedObservationComponent Concept: LNC#72295-9 Description: "The presence or absence of wound undermining." - FindingResult from PresentAbsentVS + DataValue from PresentAbsentVS Element: WoundExudatePresentOrAbsent Based on: CodedObservationComponent Concept: LNC#89259-6 Description: "The presence or absence of wound exudate." - FindingResult from PresentAbsentVS + DataValue from PresentAbsentVS Element: WoundAssessmentInterpretation Based on: Interpretation @@ -196,7 +196,7 @@ includes 0..1 WoundSizeObservation // 72287-6 Wound size observation Based on: CodedObservationComponent Concept: LNC#89253-9 Description: "Whether a condition is improving, worsening, stable, or resolved." - FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.5/expansion // should be from http://loinc.org/vs/LL4938-8 with values improved, deteriorated, stablized or resolved. Resolved is missing from the VS in VSAC + DataValue from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.5/expansion // should be from http://loinc.org/vs/LL4938-8 with values improved, deteriorated, stablized or resolved. Resolved is missing from the VS in VSAC // LOINC: The wound bed panel is factored so the percentages pair unambiguously with the color/appearances. It should be a set of 2-tuples (pairs). The way it is done in LOINC doesn't allow pairing @@ -216,13 +216,13 @@ includes 1..1 WoundBedAppearancePercentage Based on: CodedObservationComponent Concept: LNC#72371-8 Description: "Appearance of wound base (bed)." - FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.6/expansion //could be from http://loinc.org/vs/LL2237-7 + DataValue from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.6/expansion //could be from http://loinc.org/vs/LL2237-7 Element: WoundBedAppearancePercentage Based on: QuantitativeObservationComponent Concept: LNC#72370-0 Description: "Area of wound bed appearance/Entire ​Area of wound bed." -// FindingResult.Quantity.Units is UCUM#% +// DataValue.Quantity.Units is UCUM#% 0..0 ReferenceRange EntryElement: WoundBedColorObservation @@ -242,7 +242,7 @@ includes 1..1 WoundBedColorAreaPercentage Based on: CodedObservationComponent Concept: LNC#39132-6 Description: "Color of Wound base (bed)." - FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.7/expansion //could be from http://loinc.org/vs/LL2338-3 + DataValue from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.7/expansion //could be from http://loinc.org/vs/LL2338-3 // LOINC: Why precoordinate a general concept such as 'percentage of area' with the concept of wound bed? Element: WoundBedColorAreaPercentage @@ -250,7 +250,7 @@ includes 1..1 WoundBedColorAreaPercentage Concept: LNC#89255-4 Description: "Wound bed area identified by color/​Area of wound bed." // TODO: waiting on bug fix -// FindingResult.Quantity.Units is UCUM#% +// DataValue.Quantity.Units is UCUM#% 0..0 ReferenceRange EntryElement: WoundEdgeObservation @@ -271,13 +271,13 @@ includes 0..1 WoundEdgeColor Based on: CodedObservationComponent Concept: LNC#72304-9 Description: "Edge of wound description." - FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.8/expansion // could be from http://loinc.org/vs/LL2230-2 + DataValue from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.8/expansion // could be from http://loinc.org/vs/LL2230-2 Element: WoundEdgeColor Based on: CodedObservationComponent Concept: LNC#39133-4 Description: "Color of Wound edge." - FindingResult could be from http://loinc.org/vs/LL2338-3 + DataValue could be from http://loinc.org/vs/LL2338-3 EntryElement: WoundTunnelingObservation Based on: ComponentOnlyNonLaboratoryObservation @@ -298,7 +298,7 @@ includes 0..1 WoundTunnelClockDirection Based on: QuantitativeObservationComponent Concept: LNC#72296-7 Description: "Length of wound tunneling." -// FindingResult.Quantity.Units is UCUM#cm +// DataValue.Quantity.Units is UCUM#cm 0..0 ReferenceRange // LOINC: should require use the full clock position value set @@ -306,7 +306,7 @@ includes 0..1 WoundTunnelClockDirection Based on: CodedObservationComponent Concept: LNC#72297-5 Description: "Clock position of wound tunnel" - FindingResult from ClockDirectionVS + DataValue from ClockDirectionVS EntryElement: WoundUnderminingObservation @@ -325,7 +325,7 @@ includes 0..1 WoundUnderminingClockDirection Based on: QuantitativeObservationComponent Concept: LNC#72293-4 Description: "Length of wound undermining." -// FindingResult.Quantity.Units is UCUM#cm +// DataValue.Quantity.Units is UCUM#cm 0..0 ReferenceRange // LOINC: should require use the full clock position value set @@ -333,7 +333,7 @@ includes 0..1 WoundUnderminingClockDirection Based on: CodedObservationComponent Concept: LNC#72294-2 Description: "Clock position of wound undermining" - FindingResult from ClockDirectionVS + DataValue from ClockDirectionVS EntryElement: WoundExudateObservation Based on: ComponentOnlyNonLaboratoryObservation @@ -356,33 +356,33 @@ includes 0..1 WoundExudateOdor Based on: CodedObservationComponent Concept: LNC#39116-9 Description:"Drainage amount of wound" - FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.10/expansion //could be from http://loinc.org/vs/LL2222-9 + DataValue from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.10/expansion //could be from http://loinc.org/vs/LL2222-9 Element: WoundExudateVolume Based on: QuantitativeObservationComponent Concept: LNC#39122-7 Description:"Appearance of exudate from wound" -// FindingResult.Quantity.Units is UCUM#mL +// DataValue.Quantity.Units is UCUM#mL 0..0 ReferenceRange Element: WoundExudateAppearance Based on: CodedObservationComponent Concept: LNC#72290-0 Description:"Appearance of exudate from wound" - FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.11/expansion //could be from http://loinc.org/vs/LL2220-3 + DataValue from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.11/expansion //could be from http://loinc.org/vs/LL2220-3 Element: WoundExudateColor Based on: CodedObservationComponent Concept: LNC#72289-2 Description:"Color of exudate from wound" - FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.12/expansion + DataValue from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.12/expansion // could be from http://loinc.org/vs/LL2219-5 Element: WoundExudateOdor Based on: CodedObservationComponent Concept: LNC#72288-4 Description:"Odor of exudate from wound" - FindingResult from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.13/expansion + DataValue from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.13/expansion EntryElement: WoundSizeObservation @@ -403,28 +403,28 @@ includes 0..1 WoundArea Based on: QuantitativeObservationComponent Concept: LNC#39126-8 Description: "Length of the wound (longest dimension)." -// FindingResult.Quantity.Units is UCUM#cm +// DataValue.Quantity.Units is UCUM#cm 0..0 ReferenceRange Element: WoundWidth Based on: QuantitativeObservationComponent Concept: LNC#39125-0 Description: "Width of the wound (perpendicular to longest dimension)." -// FindingResult.Quantity.Units is UCUM#cm +// DataValue.Quantity.Units is UCUM#cm 0..0 ReferenceRange Element: WoundDepth Based on: QuantitativeObservationComponent Concept: LNC#39127-6 Description: "Depth of the wound." -// FindingResult.Quantity.Units is UCUM#cm +// DataValue.Quantity.Units is UCUM#cm 0..0 ReferenceRange Element: WoundArea Based on: QuantitativeObservationComponent Concept: LNC#89260-4 Description: "Area of the wound." -// FindingResult.Quantity.Units with units UCUM#cm2 +// DataValue.Quantity.Units with units UCUM#cm2 0..0 ReferenceRange /* Old Stuff @@ -463,5 +463,5 @@ Value: Device is type SupportSurface Element: ImmersionDepth Concept: TBD Description: "Depth of penetration (sinking) into a support surface." - FindingResult.Quantity.Units is UCUM#cm "cm" + DataValue.Quantity.Units is UCUM#cm "cm" */ \ No newline at end of file From 191037333c3ba88e9fa1b2e37432312a82d4969f Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 28 Jan 2019 12:54:40 -0500 Subject: [PATCH 169/289] Split domain resource into resource and domain resource Also some housekeeping around Patients --- spec/shr_base.txt | 69 +++++++++++++++++++++-------------- spec/shr_base_finding.txt | 2 +- spec/shr_base_map_stu3.txt | 3 +- spec/shr_brca.txt | 3 +- spec/shr_core.txt | 11 ------ spec/shr_entity.txt | 24 +++++++----- spec/shr_entity_map_dstu2.txt | 17 ++++++--- spec/shr_entity_map_stu3.txt | 15 +++++--- spec/shr_entity_vs.txt | 13 ------- 9 files changed, 81 insertions(+), 76 deletions(-) diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 970505cd..510d0f4a 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -34,37 +34,49 @@ Description: "Obsolete. Use DomainResource" Description: "The class of the item, as a URI." Value: uri -Abstract Element: DomainResource -Concept: MTH#C1705654 + +Abstract Element: Resource Description: "Parent class for any item in clinical or administrative health-related system. Contains metadata attributes that apply to any item represented in the standard health record. An DomainResource can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." +0..1 Metadata +0..1 Language from http://hl7.org/fhir/ValueSet/languages if covered // DSTU 2 change -- language has required binding in Argonaut +0..1 ImplicitRules + + Element: Language + Concept: MTH#C0023008 + Description: "A human language, spoken or written." + Value: CodeableConcept + + Element: ImplicitRules + Description: "A set of rules under which this content was created" + Value: uri + + +Abstract Element: DomainResource +Based on: Resource +Description: "Parent class for any item in clinical or administrative health-related system. A DomainResource can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." 1..1 TopicCode // TopicCode makes sense at the DomainResource Level 0..1 Narrative -0..1 Language -0..1 Metadata Element: TopicCode Description: "A code describing what the domain resource concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist (present) or not exist (absent)." Value: CodeableConcept - Element: Narrative - Concept: TBD - Description: "A human-readable narrative, potentially including images, that contains a summary of the resource, and may be used to represent the content of the resource to a human." - 1..1 NarrativeText - 1..1 NarrativeQualifier + Element: Narrative + Concept: TBD + Description: "A human-readable narrative, potentially including images, that contains a summary of the resource, and may be used to represent the content of the resource to a human." + 1..1 NarrativeText + 1..1 NarrativeQualifier - Element: NarrativeText - Concept: TBD - Description: "Text of narrative, in xhtml." - Value: xhtml + Element: NarrativeText + Description: "Text of narrative, in xhtml." + Value: xhtml - Element: NarrativeQualifier - Concept: TBD - Description: "Additional information on how the narrative was generated, and the scope of information contained." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/narrative-status + Element: NarrativeQualifier + Description: "Additional information on how the narrative was generated, and the scope of information contained." + Value: CodeableConcept from http://hl7.org/fhir/ValueSet/narrative-status Element: Metadata -Concept: TBD Description: "Elements that belong to all information items." 0..1 VersionId 0..1 LastUpdated @@ -76,7 +88,7 @@ Description: "Elements that belong to all information items." 0..1 AuthoredDateTime Element: RecordStatus - Description: "Concept indicating the state of this record, e.g., entered in error." + Description: "Concept indicating the state of this record, e.g., active, inactive, entered in error." Value: CodeableConcept Element: SecurityLabel @@ -89,6 +101,16 @@ Description: "Elements that belong to all information items." Description: "A code used to relate entries to categories or workflows. Applications are not required to consider the tags when interpreting the meaning of an entry." Value: CodeableConcept + Element: AuthoredDateTime + Concept: TBD + Description: "The time the information was recorded; usually, when the information item was created." + Value: dateTime + + Element: LastUpdated + Concept: TBD + Description: "The most recent date the information item was changed." + Value: instant + Element: InformationSource Concept: TBD Description: "The origin or source of the information or request: a practitioner, patient, related person, organization, another health record, an algorithm, device, etc." @@ -129,15 +151,6 @@ Description: "Elements that belong to all information items." Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Device) - Element: AuthoredDateTime - Concept: TBD - Description: "The time the information was recorded; usually, when the information item was created." - Value: dateTime - - Element: LastUpdated - Concept: TBD - Description: "The most recent date the information item was changed." - Value: instant EntryElement: Composition diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 766b3fc0..5c6be63f 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -243,7 +243,7 @@ Description: "An assertion of a condition being present or absent. EntryElement: ConditionPresent -Based on: ConditionPresentOrAbsent +Based on: ConditionPresentOrAbsent Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." //TODO: 0..1 DataValue is SCT#52101004 "Present (qualifier value)" 0..0 DataAbsentReason diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 008c5a1c..8463ff37 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -94,4 +94,5 @@ BodyStructurePresent maps to BodySite: AnatomicalLocationStructured.Laterality maps to qualifier (slice on = coding.code) AnatomicalLocationStructured.AnatomicalDirection maps to qualifier AnatomicalLocationStructured.CommentOrDescription maps to description - AnatomicalLocationStructured.Media maps to image \ No newline at end of file + AnatomicalLocationStructured.Media maps to image + AnatomicalLocationStructured.DistanceFromLandmark maps to extension \ No newline at end of file diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 0f1d83a8..f1558fb6 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -18,7 +18,8 @@ Description: "A body site specific to the breast structure." AnatomicalLocationOrLandmarkCode from BreastSiteVS 1..1 Laterality 0..0 AnatomicalDirection - DistanceFromLandmark.Distance.Units is UCUM#cm +// TODO: This causes mapping error +// DistanceFromLandmark.Distance.Units is UCUM#cm EntryElement: BreastSpecimen Based on: Specimen diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 8a43fb1a..99f72496 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -480,7 +480,6 @@ Concept: TBD Description: "The duration of an event, described semi-quantitatively." Value: CodeableConcept from SemiquantitativeDurationVS - Element: Frequency // TODO: should be a ratio, but the problem is that ratio uses Quantity in numerator and denominator Based on: Ratio Concept: MTH#C0376249 @@ -662,11 +661,6 @@ Description: "A file that contains audio, video, image, or similar content." Concept: TBD Description: "Mime type of the content, with charset etc." Value: CodeableConcept - - Element: Language - Concept: MTH#C0023008 - Description: "A human language, spoken or written." - Value: CodeableConcept // from http://hl7.org/fhir/ValueSet/languages if covered // DSTU 2 change -- language has required binding in Argonaut Element: ResourceLocation Concept: TBD @@ -822,7 +816,6 @@ Element: PersonName Based on: Name Concept: MTH#C1547383 Description: "A name used by a human being, written as it would be typically expressed. May include a breakdown of the various elements of the name (family name, given name, etc.)." -//0..1 PreferredFlag -- causes extension to Human Name profile 0..* Prefix 0..* GivenName 0..* MiddleName @@ -830,10 +823,6 @@ Description: "A name used by a human being, written as it would be typically exp 0..* Suffix 0..1 Purpose from http://hl7.org/fhir/ValueSet/name-use - Element: PreferredFlag - Description: "Code indicating the preference associated with the use of this name." - Value: CodeableConcept - Element: Prefix Concept: MTH#C3476361 Description: "Contains a set of honorific terms that typically appear before a person's name, for example Mr., Mrs., Dr., etc." diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 65c80dc1..a27bf456 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -27,13 +27,13 @@ Based on: Role Concept: MTH#C1299487 Description: "A person in the role of a patient." 1..1 ref(Person) -//0..1 ActiveFlag +0..1 ActiveFlag //0..* ref(ExternalHealthRecord) Element: ActiveFlag Concept: TBD Description: "If the ActiveFlag is false, it indicates the record or item is no longer to be used and should generally be hidden for the user in the UI." - Value: boolean or CodeableConcept + Value: boolean EntryElement: ExternalHealthRecord Based on: Entity // TODO: change to information item @@ -53,6 +53,7 @@ Based on: Role Concept: MTH#C2220264 Description: "A person who practices a healing art." 1..1 ref(Person) +0..1 ActiveFlag 1..1 Person.HumanName // only one (limitation imposed by us-core) // 0..* Affiliation // handled by ProviderRelationship in FHIR 1..1 NationalProviderIdentifier @@ -81,6 +82,7 @@ EntryElement: RelatedPerson Based on: Role Description: "A person in a role defined in relationship to a patient" 0..1 ref(Person) +0..1 ActiveFlag 0..1 RelationshipToPersonOfRecord 0..1 EffectiveTimePeriod 1..1 Person.HumanName // DSTU 2 change (max cardinality of 1 imposed by DSTU 2) @@ -178,11 +180,9 @@ Concept: MTH#C0439861 Description: "Any matter of defined composition that has discrete existence, whose origin may be biological, mineral or chemical." 1..1 Type should be from http://hl7.org/fhir/ValueSet/substance-code 0..* Category from http://hl7.org/fhir/ValueSet/substance-category if covered -0..1 ActiveFlag +0..1 RecordStatus from http://hl7.org/fhir/ValueSet/substance-status 0..1 CommentOrDescription 0..* Ingredient - ActiveFlag value is type CodeableConcept - ActiveFlag from http://hl7.org/fhir/ValueSet/substance-status Element: Ingredient Concept: MTH#C3176062 @@ -278,8 +278,7 @@ Description: "A person relevant to the health or social situation of the subject 0..* Address 0..* PhotographicImage 0..* ContactPoint -0..* LanguageUsed -0..1 ActiveFlag +0..* Communication 0..1 MaritalStatus //0..1 PlaceOfBirth //0..1 MultipleBirth @@ -436,14 +435,19 @@ Description: "A person relevant to the health or social situation of the subject Description: "A gender classification used for administrative purposes. Administrative gender is not necessarily the same as a biological description or a gender identity. This attribute does not include terms related to clinical gender." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/administrative-gender - Element: LanguageUsed // needs to be aligned with CCDA 2.1 + Element: Communication // needs to be aligned with CCDA 2.1 Concept: TBD Description: "Language used for communication by a human, either the subject of record, parent, or other involved person." - 1..1 Language + 1..1 Language // do not specify value set because argo has a required vs that is different than US-Core in STU3 + 0..1 Preferred 0..1 SpokenLanguageProficiency 0..1 WrittenLanguageProficiency 0..* LanguageQualifier + Element: Preferred + Description: "Indicates preference." + Value: boolean + Element: SpokenLanguageProficiency Concept: MTH#C0678997 Description: "Accuracy and fluency in spoken communication in a language." @@ -458,7 +462,7 @@ Description: "A person relevant to the health or social situation of the subject Description: "Additional information about a person's use of language." Value: CodeableConcept from LanguageQualifierVS - EntryElement: DeathInformation + EntryElement: DeathInformation Concept: MTH#C0011065 Description: "An indication that the person is no longer living, given by a date, time of death, or a boolean value which, when true, indicates the person is deceased." 1..1 IsDeceased diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index d2e5946b..dbc38767 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -3,13 +3,17 @@ Namespace: shr.entity Target: FHIR_DSTU_2 Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient: // dstu 2 change (different mapping target) - Person.ActiveFlag maps to active + ActiveFlag maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo Person.Address maps to address Person.ContactPoint maps to telecom - Person.LanguageUsed.Language maps to communication + Person.Communication.Language maps to communication.Language + Person.Communication.Preferred maps to communication.preferred + Person.Communication.SpokenLanguageProficiency maps to communication.extension + Person.Communication.WrittenLanguageProficiency maps to communication.extension + Person.Communication.LanguageQualifier maps to communication.extension Person.DateOfBirth maps to birthDate Person.MaritalStatus maps to maritalStatus // PlaceOfBirth maps to http://hl7.org/fhir/StructureDefinition/birthPlace @@ -24,13 +28,13 @@ Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient // Deceased.DateOfDeath maps to deceased[x].dateTime Practitioner maps to Practitioner: // dstu 2 change (different mapping target) - Person.ActiveFlag maps to active + ActiveFlag maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo Person.Address maps to address Person.ContactPoint maps to telecom - Person.LanguageUsed.Language maps to communication + Person.Communication.Language maps to communication NationalProviderIdentifier maps to identifier Qualification maps to qualification Qualification.Type maps to qualification.code @@ -38,7 +42,7 @@ Practitioner maps to Practitioner: // dstu 2 change (different mapping target) Qualification.Issuer maps to qualification.issuer RelatedPerson maps to RelatedPerson: -// Person.ActiveFlag maps to active // dstu 2 change (no such attribute) + ActiveFlag maps to extension Person.HumanName maps to name Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender @@ -58,7 +62,7 @@ Organization maps to Organization: PartOf maps to partOf Group maps to Group: -// ActiveFlag maps to active // dstu 2 change (no such attribute) + ActiveFlag maps to extension Type maps to type Actual maps to actual constrain code to 0..0 // why? @@ -84,6 +88,7 @@ Facility maps to Location: Substance maps to Substance: Type maps to code + RecordStatus maps to status Ingredient maps to ingredient Ingredient.IngredientAmount maps to ingredient.quantity Ingredient.SubstanceOrCode[Substance] maps to ingredient.substance diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index 02a4e749..8c94cec7 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -3,13 +3,17 @@ Namespace: shr.entity Target: FHIR_STU_3 Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: - Person.ActiveFlag maps to active + ActiveFlag maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo Person.Address maps to address Person.ContactPoint maps to telecom - Person.LanguageUsed.Language maps to communication + Person.Communication.Language maps to communication.language + Person.Communication.Preferred maps to communication.preferred + Person.Communication.SpokenLanguageProficiency maps to communication.extension + Person.Communication.WrittenLanguageProficiency maps to communication.extension + Person.Communication.LanguageQualifier maps to communication.extension Person.DateOfBirth maps to birthDate Person.MaritalStatus maps to maritalStatus // PlaceOfBirth maps to http://hl7.org/fhir/StructureDefinition/birthPlace @@ -24,13 +28,13 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: // Deceased.DateOfDeath maps to deceased[x].dateTime Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner: - Person.ActiveFlag maps to active + ActiveFlag maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo Person.Address maps to address Person.ContactPoint maps to telecom - Person.LanguageUsed.Language maps to communication + Person.Communication.Language maps to communication NationalProviderIdentifier maps to identifier Qualification maps to qualification Qualification.Type maps to qualification.code @@ -38,7 +42,7 @@ Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-pra Qualification.Issuer maps to qualification.issuer RelatedPerson maps to RelatedPerson: - Person.ActiveFlag maps to active + ActiveFlag maps to active Person.HumanName maps to name Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender @@ -84,6 +88,7 @@ Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-locatio Substance maps to Substance: Type maps to code + RecordStatus maps to status Ingredient maps to ingredient Ingredient.IngredientAmount maps to ingredient.quantity Ingredient.SubstanceOrCode maps to ingredient.substance[x] diff --git a/spec/shr_entity_vs.txt b/spec/shr_entity_vs.txt index 946dfa73..4250b7be 100644 --- a/spec/shr_entity_vs.txt +++ b/spec/shr_entity_vs.txt @@ -28,19 +28,6 @@ MTH#C0871042 "Parole officer" MTH#C0042799 "Visting nurse" MTH#C1552023 "Emergency contact" - -ValueSet: LanguageQualifierVS -Description: "A code indicating whether the language is preferred, secondary, or practiced in an unconventional or limited way." -#preferred_spoken "Preferred language" -#secondary_spoken "Secondary language" -#apraxia "Difficulty speaking due to motor disorder" -#aphasia "Difficulty in speaking, listening, reading, and writing" -#signs "Uses sign language" -#braille "Reads using braille" -#lipreads "Uses lipreading (speechreading)" -#aac "Uses augmentative and alternative communication" - - ValueSet: TelecomQualifierVS #primary "Primary (preferred) method of contact" #secondary "Secondary method of contact" From 899321ec666de7816b65106049cc842fdba3d3fa Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 30 Jan 2019 13:17:35 -0500 Subject: [PATCH 170/289] Working on landing page --- spec/LandingPageOncocore.html | 11 ++++++++--- spec/shr_base_finding.txt | 2 +- spec/shr_oncocore.txt | 8 ++++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/spec/LandingPageOncocore.html b/spec/LandingPageOncocore.html index d6bf4f2c..ddcd0309 100644 --- a/spec/LandingPageOncocore.html +++ b/spec/LandingPageOncocore.html @@ -1,7 +1,12 @@ -

    This is the first release of the Minimum Common Oncology Data Elements (M-CODE) implementation guide.

    +

    This is the DRAFT VERSION 0.3 ALPHA of the Minimum Common Oncology Data Elements (mCODE) implementation guide.

    -

    About M-CODE

    -

    ...placeholder - stuff about ASCO, CancerLinQ and the M-CODE effort.

    +

    Background

    +

    According to the National Cancer Institute, 38.5 percent of men and women will be diagnosed with cancer at some point during their lifetimes. In 2014, an estimated 14.7M people were living with cancer in the United States. While numbers for cancer and other major diseases are staggering in terms of human suffering, such large figures also provide a place to look for potential solutions. The ultimate goal is to establish data models, technologies, and methods that result in research-quality real-world EHR data for every patient that drives evidence-based and data-driven treatment and analytics for high-quality health outcomes. The intent is that this research-quality real-world data would allow the information gathered from all cancers patient to contribute substantially to improving care for all future cancer patients.

    + +

    Under the leadership of the American Society of Clinical Oncology (ASCO) and in partnership with CancerLinQ and MITRE, a committee of leading clinical experts in oncology is developing mCODE (minimal Common Oncology Data Elements). mCODE consists of a core set of structured data elements necessary to support clinical care and oncology research across all cancers.

    + +

    Contents of this Implementation Guide

    +

    Disclaimers:

    diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 5c6be63f..4a192633 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -12,7 +12,7 @@ Description: "A finding that does not or cannot stand alone, or a component of 1..1 TopicCode 0..1 DataValue 0..1 DataAbsentReason -0..1 ReferenceRange // included here only because components can have reference range which usually needs to be explicitly zeroed out. If it is not part of DataElement, it will appear in FHIR Profiles. +0..1 ReferenceRange 0..1 Interpretation Element: DataValue diff --git a/spec/shr_oncocore.txt b/spec/shr_oncocore.txt index 2dd87be0..72f4d13f 100644 --- a/spec/shr_oncocore.txt +++ b/spec/shr_oncocore.txt @@ -5,7 +5,7 @@ Uses: shr.core, shr.base, shr.entity CodeSystem: SCT = http://snomed.info/sct CodeSystem: LNC = http://loinc.org -CodeSystem: MTH = http://ncimeta.nci.nih.gov +CodeSystem: MTH = http://ncimeta.nci.nih.gov CodeSystem: UCUM = http://unitsofmeasure.org @@ -15,7 +15,7 @@ Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" Description: "The presence of malignant neoplastic disease, in which abnormal cells divide without control and can invade nearby tissues." TopicCode from CancerDisorderVS // StageInformation.StageSummary from http://loinc.org/vs/LL240-3 // Commented out because LL240-3 only applies to TNM stage group - is this correct? - StageInformation.StageDetail value is type CancerStagePanel + StageInformation.StageDetail value is type CancerStagePanel // 0..1 MorphologyBehavior from MorphologyBehaviorVS //Not carried over from BrCa because it was intended to break out behavior codes from ICD-O-3, and we are no longer using it. @@ -28,8 +28,8 @@ Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LO TopicCode is SCT#371441004 "Histologic type (observable entity)" Focus value is type ref(CancerDisorderPresent) 0..0 AnatomicalLocation -0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated -0..0 AnatomicalLocation.AnatomicalLocationStructured +0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated +0..0 AnatomicalLocation.AnatomicalLocationStructured 0..0 Device From 9e98bf5e912aa60f8304c52473a3a5aee4787a28 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Wed, 30 Jan 2019 13:43:10 -0500 Subject: [PATCH 171/289] Commented out DistanceFromLandmark and Language mappings that were causing a problem Not fixed, just suppressed. --- spec/shr_base_map_dstu2.txt | 2 +- spec/shr_base_map_stu3.txt | 2 +- spec/shr_core_map_dstu2.txt | 2 +- spec/shr_core_map_stu3.txt | 2 +- spec/shr_entity.txt | 2 +- spec/shr_entity_map_dstu2.txt | 8 ++++---- spec/shr_entity_map_stu3.txt | 7 ++++--- 7 files changed, 13 insertions(+), 12 deletions(-) diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 760fd76f..0062f5d9 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -102,5 +102,5 @@ BodyStructurePresent maps to BodySite: AnatomicalLocationStructured.AnatomicalDirection maps to modifier AnatomicalLocationStructured.CommentOrDescription maps to description AnatomicalLocationStructured.Media maps to image - AnatomicalLocationStructured.DistanceFromLandmark maps to extension +// AnatomicalLocationStructured.DistanceFromLandmark maps to extension \ No newline at end of file diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 8463ff37..cd1e7e30 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -95,4 +95,4 @@ BodyStructurePresent maps to BodySite: AnatomicalLocationStructured.AnatomicalDirection maps to qualifier AnatomicalLocationStructured.CommentOrDescription maps to description AnatomicalLocationStructured.Media maps to image - AnatomicalLocationStructured.DistanceFromLandmark maps to extension \ No newline at end of file +// AnatomicalLocationStructured.DistanceFromLandmark maps to extension \ No newline at end of file diff --git a/spec/shr_core_map_dstu2.txt b/spec/shr_core_map_dstu2.txt index 8dfb3e86..1d6055b7 100644 --- a/spec/shr_core_map_dstu2.txt +++ b/spec/shr_core_map_dstu2.txt @@ -129,7 +129,7 @@ AnatomicalLocationStructured maps to BodySite: AnatomicalDirection maps to modifier CommentOrDescription maps to description Media maps to image - DistanceFromLandmark maps to extension +// DistanceFromLandmark maps to extension Annotation maps to Annotation: Text maps to text diff --git a/spec/shr_core_map_stu3.txt b/spec/shr_core_map_stu3.txt index 8caefb00..1ea07df7 100644 --- a/spec/shr_core_map_stu3.txt +++ b/spec/shr_core_map_stu3.txt @@ -123,7 +123,7 @@ AnatomicalLocationStructured maps to BodySite: AnatomicalDirection maps to qualifier CommentOrDescription maps to description Media maps to image - DistanceFromLandmark maps to extension +// DistanceFromLandmark maps to extension Annotation maps to Annotation: Text maps to text diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index a27bf456..bf5f1e1f 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -438,7 +438,7 @@ Description: "A person relevant to the health or social situation of the subject Element: Communication // needs to be aligned with CCDA 2.1 Concept: TBD Description: "Language used for communication by a human, either the subject of record, parent, or other involved person." - 1..1 Language // do not specify value set because argo has a required vs that is different than US-Core in STU3 + 1..1 Language // do not specify value set because argo R2 is different than US-Core in STU3 0..1 Preferred 0..1 SpokenLanguageProficiency 0..1 WrittenLanguageProficiency diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index dbc38767..a4a354dc 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -9,11 +9,11 @@ Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient Person.PhotographicImage maps to photo Person.Address maps to address Person.ContactPoint maps to telecom - Person.Communication.Language maps to communication.Language + Person.Communication.Language maps to communication.language Person.Communication.Preferred maps to communication.preferred - Person.Communication.SpokenLanguageProficiency maps to communication.extension - Person.Communication.WrittenLanguageProficiency maps to communication.extension - Person.Communication.LanguageQualifier maps to communication.extension +// Person.Communication.SpokenLanguageProficiency maps to communication.extension +// Person.Communication.WrittenLanguageProficiency maps to communication.extension +// Person.Communication.LanguageQualifier maps to communication.extension Person.DateOfBirth maps to birthDate Person.MaritalStatus maps to maritalStatus // PlaceOfBirth maps to http://hl7.org/fhir/StructureDefinition/birthPlace diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index 8c94cec7..e56673af 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -11,9 +11,9 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: Person.ContactPoint maps to telecom Person.Communication.Language maps to communication.language Person.Communication.Preferred maps to communication.preferred - Person.Communication.SpokenLanguageProficiency maps to communication.extension - Person.Communication.WrittenLanguageProficiency maps to communication.extension - Person.Communication.LanguageQualifier maps to communication.extension +// Person.Communication.SpokenLanguageProficiency maps to communication.extension +// Person.Communication.WrittenLanguageProficiency maps to communication.extension +// Person.Communication.LanguageQualifier maps to communication.extension Person.DateOfBirth maps to birthDate Person.MaritalStatus maps to maritalStatus // PlaceOfBirth maps to http://hl7.org/fhir/StructureDefinition/birthPlace @@ -35,6 +35,7 @@ Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-pra Person.Address maps to address Person.ContactPoint maps to telecom Person.Communication.Language maps to communication +// Person.Communication.Preferred NationalProviderIdentifier maps to identifier Qualification maps to qualification Qualification.Type maps to qualification.code From 4825695705df7da54a19bd3368b435e690a0ef80 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 31 Jan 2019 15:28:44 -0500 Subject: [PATCH 172/289] Restored ClinicalStatement CS between DomainResource and the ConditionOrObservation and Action --- spec/shr_adverse.txt | 4 +-- spec/shr_adverse_map_dstu2.txt | 2 +- spec/shr_adverse_map_stu3.txt | 2 +- spec/shr_allergy.txt | 4 +-- spec/shr_allergy_map_dstu2.txt | 12 +++---- spec/shr_allergy_map_stu3.txt | 6 ++-- spec/shr_base.txt | 57 ++++++++++++++++++++----------- spec/shr_base_action.txt | 5 ++- spec/shr_base_finding.txt | 10 +++--- spec/shr_base_map_dstu2.txt | 7 ++-- spec/shr_base_map_stu3.txt | 6 ++-- spec/shr_brca.txt | 4 +-- spec/shr_core.txt | 5 --- spec/shr_familyhistory.txt | 2 +- spec/shr_medication.txt | 5 ++- spec/shr_medication_map_dstu2.txt | 4 +-- spec/shr_medication_map_stu3.txt | 4 +-- spec/shr_procedure_map_dstu2.txt | 2 +- spec/shr_procedure_map_stu3.txt | 4 +-- 19 files changed, 79 insertions(+), 66 deletions(-) diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt index 084f78b7..46508fb8 100644 --- a/spec/shr_adverse.txt +++ b/spec/shr_adverse.txt @@ -10,9 +10,9 @@ CodeSystem: MTH = http://ncimeta.nci.nih.gov Element: AdverseEvent -Based on: DomainResource +Based on: ClinicalStatement Description: "A record of an untoward or unexpected event in a patient under treatment, and which does not necessarily have to have a causal relationship with that treatment. Adverse events may capture either a workflow breach that may or may not result in harm, but must be documented for quality improvement purposes, or an adverse finding whether or not it can be traceable to an actual workflow breach." - Metadata.InformationRecorder value is type PatientOrPractitionerOrRelatedPerson + Recorder value is type PatientOrPractitionerOrRelatedPerson 1..1 Patient 1..1 OccurrenceTime 1..1 Seriousness from SeriousnessVS // to be replaced with http://hl7.org/fhir/ValueSet/adverse-event-seriousness in FHIR 4 diff --git a/spec/shr_adverse_map_dstu2.txt b/spec/shr_adverse_map_dstu2.txt index f1d99078..8df6549f 100644 --- a/spec/shr_adverse_map_dstu2.txt +++ b/spec/shr_adverse_map_dstu2.txt @@ -3,7 +3,7 @@ Namespace: shr.adverse Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: - Metadata.InformationRecorder maps to recorder + Recorder maps to recorder // Type maps to type // TOPIC CODE??? Type doesn't exist in AdverseEvent CommentOrDescription maps to description Patient maps to subject diff --git a/spec/shr_adverse_map_stu3.txt b/spec/shr_adverse_map_stu3.txt index 9d766ef3..a37bff94 100644 --- a/spec/shr_adverse_map_stu3.txt +++ b/spec/shr_adverse_map_stu3.txt @@ -3,7 +3,7 @@ Namespace: shr.adverse Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: - Metadata.InformationRecorder maps to recorder + Recorder maps to recorder // Type maps to type // TOPIC CODE??? CommentOrDescription maps to description Patient maps to subject diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index 50f75ffc..8da94757 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -12,8 +12,8 @@ Based on: ConditionOrObservation Concept: SCT#473010000 "Hypersensitivity condition (disorder)" // or SCT#420134006 "Propensity to adverse reactions (disorder)"? Description: "A finding related to the presence of an individual's risk or sensitivity to a substance or class of substances. An AllergyIntolerancePresent finding can be taken as tantamount to a representation of an allergic condition, allowing it to be tracked over time. Per US Core specification, the result includes SNOMED codes representing 'No known allergy'. In AllergyIntolerance, the reactions are included in-line, rather than referencing to conditions (in notable contrast to AdverseEvent)." - Metadata.InformationSource value is type PatientOrPractitionerOrRelatedPerson - Metadata.InformationRecorder value is type PatientOrPractitioner // FHIR only allows Patient or Practitioner as recorder + Asserter value is type PatientOrPractitionerOrRelatedPerson + Recorder value is type PatientOrPractitioner // FHIR only allows Patient or Practitioner as recorder 1..1 Patient 1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status 0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index 2e601362..ff05422e 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -5,9 +5,9 @@ Target: FHIR_DSTU_2 AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: Patient maps to patient - Metadata.InformationSource maps to asserter - Metadata.InformationRecorder maps to recorder - Metadata.AuthoredDateTime maps to assertedDate + Asserter maps to asserter + Recorder maps to recorder + CreationDate maps to assertedDate DataValue maps to substance AllergyIntoleranceType maps to type SubstanceCategory maps to category @@ -30,9 +30,9 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a /* NoAdverseSensitivityToSubstance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: Patient maps to patient - Metadata.InformationSource maps to asserter - Metadata.InformationRecorder maps to recorder - Metadata.AuthoredDateTime maps to assertedDate + Asserter maps to asserter + Recorder maps to recorder + CreationDate maps to assertedDate AdverseSensitivityTopic.TopicCode maps to code constrain type to 0..0 constrain category to 0..0 diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index 32a492b7..3fa65dec 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -5,9 +5,9 @@ Target: FHIR_STU_3 AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: Patient maps to patient Patient maps to patient - Metadata.InformationSource maps to asserter - Metadata.InformationRecorder maps to recorder - Metadata.AuthoredDateTime maps to assertedDate + Asserter maps to asserter + Recorder maps to recorder + CreationDate maps to assertedDate DataValue maps to code TopicCode maps to type SubstanceCategory maps to category diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 510d0f4a..baf0447c 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -80,17 +80,26 @@ Element: Metadata Description: "Elements that belong to all information items." 0..1 VersionId 0..1 LastUpdated +//0..1 SourceSystem // R4 only 0..* SecurityLabel 0..* Tag -//0..1 RecordStatus -0..1 InformationSource -0..1 InformationRecorder -0..1 AuthoredDateTime - Element: RecordStatus - Description: "Concept indicating the state of this record, e.g., active, inactive, entered in error." - Value: CodeableConcept - + Element: VersionId + Concept: MTH#C0333052 + Description: "An identifier associated with the product that denotes a particular release iteration." + Value: id + + Element: LastUpdated + Concept: TBD + Description: "The most recent date the information item was changed." + Value: instant + +/* + Element: SourceSystem + Description: "FHIR: This provides a minimal amount of Provenance information that can be used to track or differentiate the source of information in the resource. The source may identify another FHIR server, document, message, database, etc. + FHIM: Identifies the computer system that created the medical record. This optional field may also be used to indicate that the medical record was originally created by a different organization from the one that is currently storing or utilizing the record in that the assigning authority of the Id could be set to that originating organization. This property is optional, as some systems will assume that all records that it contains originated in that system, however it is anticipated that it will become increasingly commonplace for records from multiple systems and organizations will be comingled in order to provide a complete picture of the patient's health record." + Value: uri +*/ Element: SecurityLabel Concept: MTH#C3858779 "security classification" Description: "A code that connects the entry to a security policy. Security labels can be updated when the resource changes, or whenever the security sub-system chooses to." @@ -101,26 +110,36 @@ Description: "Elements that belong to all information items." Description: "A code used to relate entries to categories or workflows. Applications are not required to consider the tags when interpreting the meaning of an entry." Value: CodeableConcept - Element: AuthoredDateTime - Concept: TBD - Description: "The time the information was recorded; usually, when the information item was created." - Value: dateTime - Element: LastUpdated - Concept: TBD - Description: "The most recent date the information item was changed." - Value: instant +Abstract Element: ClinicalStatement +Based on: DomainResource +Description: "This abstract class provides properties and behaviors common to entries in a medical record. This class allows for common representations data provenance, including the Author, the Data Enterer, the Verifier, etc." +//0..1 RecordStatus +0..1 Patient +0..1 Encounter +0..1 CreationDate +0..1 Asserter +0..1 Recorder - Element: InformationSource + Element: RecordStatus + Description: "Concept indicating the state of this record, e.g., active, inactive, entered in error. The record status is often spread aournd in different places, including validation status and active flags." + Value: CodeableConcept + + Element: Asserter Concept: TBD - Description: "The origin or source of the information or request: a practitioner, patient, related person, organization, another health record, an algorithm, device, etc." + Description: "The origin or source of the information or request: a practitioner, patient, related person, organization, an algorithm, device, etc." Value: Participant // TODO: might have to change to Participation - Element: InformationRecorder + Element: Recorder Concept: TBD Description: "The recorder of the information, if other than the information originator. For example, the nurse taking a list of medications reported by the patient." Value: Participant // TODO: might have to change to Participation + Element: CreationDate + Concept: TBD + Description: "The date/time the information was asserted or created; usually, when the clinical statement was initially recorded." + Value: dateTime + Element: Participant Concept: MTH#C1550369 Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 783093a3..86961830 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -6,12 +6,11 @@ Uses: shr.core, shr.entity, shr.encounter //---------- Actions -------------- Abstract Element: ActionStatement -Based on: DomainResource +Based on: ClinicalStatement Description: "Abstract class representing any type of action." 0..1 Category // Might not need this -1..1 Patient // Change to 0..1? Not all actions involve a patient -0..1 Encounter // actions often take place during an encounter 0..* Reason +1..1 Patient Element: Reason Concept: MTH#C0566251 diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 4a192633..5ab3e043 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -55,13 +55,11 @@ Description: "A non-independent finding whose result is a quantity." DataValue value is type Quantity Abstract Element: ConditionOrObservation -Based on: DomainResource +Based on: ClinicalStatement Description: "An assertion, determination, opinion, evaluation, result, observation, or measurement made by a person or device." -1..1 TopicCode +1..1 TopicCode // cardinality constraint on existing property 0..1 DataValue 0..1 DataAbsentReason -0..1 Patient -0..1 Encounter 0..1 Focus Element: Focus @@ -94,7 +92,7 @@ For an Observation, the TopicCode describes the aspect or property of the subjec 0..1 ReferenceRange //0..1 DeltaFlag -// TODO --- this is redundant with InformationSource +// TODO --- this is redundant with Asserter Element: Observer Concept: MTH#C0449416 Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." @@ -247,7 +245,7 @@ Based on: ConditionPresentOrAbsent Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." //TODO: 0..1 DataValue is SCT#52101004 "Present (qualifier value)" 0..0 DataAbsentReason - Metadata.InformationSource value is type ref(PatientOrPractitionerOrRelatedPerson) + Asserter value is type ref(PatientOrPractitionerOrRelatedPerson) 1..1 Patient 0..0 Focus // maybe a family member? 1..1 Category from ConditionCategoryVS // DSTU 2 change - category is 1..1 in Argonaut diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 0062f5d9..2d277f5b 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -8,6 +8,7 @@ DomainResource maps to DomainResource: Language maps to language Narrative maps to text Metadata.VersionId maps to meta.versionId +// Metadata.SourceSystem maps to meta.extension // _Entry.EntryType maps to meta.profile // (this will force a profile -- don't do it) Metadata.LastUpdated maps to meta.lastUpdated Metadata.SecurityLabel maps to meta.security @@ -25,7 +26,7 @@ Narrative maps to Narrative: Observation maps to Observation: Patient maps to subject -// Metadata.InformationSource maps to performer +// Asserter maps to performer TopicCode maps to code Method maps to method // dstu 2 change (name change) @@ -72,8 +73,8 @@ LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinitio ConditionPresent maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-condition: // dstu 2 change (different mapping target) - Metadata.AuthoredDateTime maps to dateRecorded - Metadata.InformationSource maps to asserter + CreationDate maps to dateRecorded + Asserter maps to asserter Patient maps to patient Category maps to category Identifier maps to identifier diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index cd1e7e30..4d1fea1e 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -9,6 +9,8 @@ DomainResource maps to DomainResource: Language maps to language Narrative maps to text Metadata.VersionId maps to meta.versionId +// Metadata.SourceSystem maps to meta.extension + // in R4, this will be meta.source // _Entry.EntryType maps to meta.profile // (this will force a profile -- don't do it) Metadata.LastUpdated maps to meta.lastUpdated Metadata.SecurityLabel maps to meta.security @@ -64,8 +66,8 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us Specimen maps to specimen ConditionPresent maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: - Metadata.AuthoredDateTime maps to assertedDate - Metadata.InformationSource maps to asserter + CreationDate maps to assertedDate + Asserter maps to asserter Patient maps to subject Category maps to category Identifier maps to identifier diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index f995a260..22023e7e 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -137,12 +137,12 @@ includes 0..1 HER2toCEP17Ratio EntryElement: EstrogenReceptorStatus Based on: CodedLaboratoryObservation -Concept: LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" +Concept: LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" Description: "Estrogen receptor alpha is the predominant estrogen receptor expressed in breast tissue and is overexpressed in around 50% of breast carcinomas. ER status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options. The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." TopicCode is LNC#16112-5 DataValue from PositiveNegativeVS - Specimen is type BreastSpecimen + Specimen is type BreastSpecimen ObservationComponent includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity diff --git a/spec/shr_core.txt b/spec/shr_core.txt index 99f72496..d122c265 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -608,11 +608,6 @@ Concept: MTH#C1548311 Description: "A string meant for reading by a person, for example, accompanying a code." Value: string -Element: VersionId -Concept: MTH#C0333052 -Description: "An identifier associated with the product that denotes a particular release iteration." -Value: id - Element: VersionString Concept: MTH#C0333052 Description: "A string associated with the product that identifies a particular release iteration." diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index ff29ba4b..eb94afc2 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -11,7 +11,7 @@ Description: "A related person that is a family member of the patient. This incl EntryElement: FamilyMemberHealthHistory -Based on: DomainResource +Based on: ClinicalStatement Concept: LNC#54114-4 "Family member health history [USSG-FHT] Family member" //This is part of a US General Surgeon general family health LOINC panel Description: "The health history of a patient's family member." 1..1 Patient diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 8081943b..faab8beb 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -68,9 +68,8 @@ EntryElement: MedicationStatement Based on: ActionPerformed Concept: SCT#416608005 "Drug therapy (procedure)" // TODO: investigate whether we need a new code or use a drug concept. Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." - Metadata.InformationSource value is type PersonOrOrganization -1..1 Metadata // if 0..1, then AuthoredDateTime could still be 0..1 -1..1 Metadata.AuthoredDateTime // us-core required + Asserter value is type PersonOrOrganization +1..1 CreationDate // us-core required 1..1 Medication 0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index 2d25332c..c218f4c3 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -16,8 +16,8 @@ Dosage maps to Dosage: */ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationstatement: - Metadata.InformationSource maps to informationSource - Metadata.AuthoredDateTime maps to dateAsserted // slight semantic difference? + Asserter maps to informationSource + CreationDate maps to dateAsserted // slight semantic difference? Patient maps to patient constrain wasNotTaken to 0..0 constrain reasonNotTaken to 0..0 diff --git a/spec/shr_medication_map_stu3.txt b/spec/shr_medication_map_stu3.txt index 65fc699a..60f012e0 100644 --- a/spec/shr_medication_map_stu3.txt +++ b/spec/shr_medication_map_stu3.txt @@ -14,8 +14,8 @@ Dosage maps to Dosage: MaximumDosePerTimePeriod maps to maxDosePerPeriod MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: - Metadata.InformationSource maps to informationSource - Metadata.AuthoredDateTime maps to dateAsserted + Asserter maps to informationSource + CreationDate maps to dateAsserted Patient maps to subject constrain reasonNotTaken to 0..0 constrain dosage to 0..1 diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 452edf5b..94da4924 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -60,7 +60,7 @@ SurgicalProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefi ProcedureRequested maps to ProcedureRequest: - Metadata.AuthoredDateTime maps to orderedOn + CreationDate maps to orderedOn Requester maps to orderer ProcedureCode maps to code // DSTU 2 change (no such attribute) diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index d7bdf7cb..1c39152c 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -56,7 +56,7 @@ SurgicalProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefiniti ProcedureRequested maps to ProcedureRequest: - Metadata.AuthoredDateTime maps to authoredOn + CreationDate maps to authoredOn Requester maps to requester.agent ProcedureCode maps to code Category maps to category @@ -76,7 +76,7 @@ ProcedureRequested maps to ProcedureRequest: ProcedureRequestedAgainst maps to ProcedureRequest: fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal - Metadata.AuthoredDateTime maps to authoredOn + CreationDate maps to authoredOn // who is the requester? ProcedureCode maps to code Category maps to category From ef06a17b3c99aef203c78148266ab387931a91a0 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 31 Jan 2019 16:19:17 -0500 Subject: [PATCH 173/289] Move RecordStatus up to DomainResource --- spec/shr_base.txt | 13 +++++++------ spec/shr_base_finding.txt | 4 ++-- spec/shr_core.txt | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/spec/shr_base.txt b/spec/shr_base.txt index baf0447c..87e168f5 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -54,8 +54,9 @@ Description: "Parent class for any item in clinical or administrative health-rel Abstract Element: DomainResource Based on: Resource Description: "Parent class for any item in clinical or administrative health-related system. A DomainResource can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." -1..1 TopicCode // TopicCode makes sense at the DomainResource Level +1..1 TopicCode 0..1 Narrative +//0..1 RecordStatus Element: TopicCode Description: "A code describing what the domain resource concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist (present) or not exist (absent)." @@ -75,6 +76,10 @@ Description: "Parent class for any item in clinical or administrative health-rel Description: "Additional information on how the narrative was generated, and the scope of information contained." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/narrative-status + Element: RecordStatus + Description: "Concept indicating the state of this record, e.g., active, inactive, entered in error. The record status is often spread aournd in different places, including validation status and active flags." + Value: CodeableConcept + Element: Metadata Description: "Elements that belong to all information items." @@ -113,7 +118,7 @@ Description: "Elements that belong to all information items." Abstract Element: ClinicalStatement Based on: DomainResource -Description: "This abstract class provides properties and behaviors common to entries in a medical record. This class allows for common representations data provenance, including the Author, the Data Enterer, the Verifier, etc." +Description: "This abstract class provides properties and behaviors common to entries in a medical record. Patient and Encounter are ubiquitous in clinical statements. This class also allows for common representation of simple data provenance elements asserter, recorder, and creation date." //0..1 RecordStatus 0..1 Patient 0..1 Encounter @@ -121,10 +126,6 @@ Description: "This abstract class provides properties and behaviors common to en 0..1 Asserter 0..1 Recorder - Element: RecordStatus - Description: "Concept indicating the state of this record, e.g., active, inactive, entered in error. The record status is often spread aournd in different places, including validation status and active flags." - Value: CodeableConcept - Element: Asserter Concept: TBD Description: "The origin or source of the information or request: a practitioner, patient, related person, organization, an algorithm, device, etc." diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 5ab3e043..90b5cb38 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -196,8 +196,8 @@ Based on: Observation Description: "A set of independent but related observations that are often presented together to facilitate interpretation, such as a lipid panel." 0..0 ObservationComponent 0..0 AnatomicalLocation -0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated -0..0 AnatomicalLocation.AnatomicalLocationStructured +//0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated +//0..0 AnatomicalLocation.AnatomicalLocationStructured 0..0 Specimen 0..0 Device diff --git a/spec/shr_core.txt b/spec/shr_core.txt index d122c265..a27e86f7 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -727,7 +727,7 @@ Value: CodeableConcept from http://hl7.org/fhir/ValueSet/route-codes Element: AnatomicalLocation Concept: SCT#758637006 "Anatomical location (property) (qualifier value)" Description: "A location or structure in the body, including tissues, regions, cavities, and spaces; for example, right elbow, or left ventricle of the heart." -Value: 0..1 AnatomicalLocationPrecoordinated or AnatomicalLocationStructured +Value: AnatomicalLocationPrecoordinated or AnatomicalLocationStructured Element: AnatomicalLocationPrecoordinated Concept: TBD From 1ee2b598e03c8a16cef213aa3d201a00639f57ba Mon Sep 17 00:00:00 2001 From: markkramerus Date: Thu, 31 Jan 2019 17:18:51 -0500 Subject: [PATCH 174/289] For Chris to look at extension slicing --- spec/shr_base_finding.txt | 14 ++++++-------- spec/shr_base_map_dstu2.txt | 27 ++++++++++++++++----------- spec/shr_base_map_stu3.txt | 28 ++++++++++++++++++---------- spec/shr_brca.txt | 10 +++++----- spec/shr_core.txt | 18 ++++-------------- spec/shr_core_map_dstu2.txt | 10 ++++------ spec/shr_core_map_stu3.txt | 8 ++++---- spec/shr_core_vs.txt | 2 +- spec/shr_entity.txt | 2 +- spec/shr_genetics.txt | 8 ++------ spec/shr_intervention.txt | 2 +- spec/shr_medication.txt | 2 +- spec/shr_medication_map_dstu2.txt | 8 ++++---- spec/shr_medication_map_stu3.txt | 2 +- spec/shr_occupation.txt | 2 +- spec/shr_oncocore.txt | 22 ++++++---------------- spec/shr_oncocore_stage.txt | 2 +- spec/shr_procedure.txt | 14 +++++++------- spec/shr_procedure_map_dstu2.txt | 26 +++++++++++++++++++------- spec/shr_procedure_map_stu3.txt | 28 ++++++++++++++++++++-------- spec/shr_wound.txt | 28 ++++++++++++++-------------- 21 files changed, 136 insertions(+), 127 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 90b5cb38..b2dd15f9 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -84,7 +84,7 @@ For an Observation, the TopicCode describes the aspect or property of the subjec 0..* ObservationComponent 1..1 PerformanceStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 Category from http://hl7.org/fhir/ValueSet/observation-category if covered // MK Category cardinality from 0..* to 0..1 to be compatible with DSTU 2 -0..1 AnatomicalLocation +0..1 BodySite 0..1 CommentOrDescription 0..1 Interpretation 0..1 Device @@ -169,7 +169,7 @@ Description: "A coded finding based on a specimen collected from a patient." 1..1 Category // MK changed from 1..* to 1..1 to be compatible with DSTU 2 1..1 Patient 0..1 Specimen -0..0 AnatomicalLocation // Location is determined indirectly from Specimen.CollectionSite +0..0 BodySite // Location is determined indirectly from Specimen.CollectionSite Category is OBSCAT#laboratory EntryElement: CodedLaboratoryObservation @@ -195,9 +195,7 @@ Abstract Element: Panel Based on: Observation Description: "A set of independent but related observations that are often presented together to facilitate interpretation, such as a lipid panel." 0..0 ObservationComponent -0..0 AnatomicalLocation -//0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated -//0..0 AnatomicalLocation.AnatomicalLocationStructured +0..0 BodySite 0..0 Specimen 0..0 Device @@ -249,7 +247,7 @@ Description: "A condition that is or may be present in a subject. 'Condition' i 1..1 Patient 0..0 Focus // maybe a family member? 1..1 Category from ConditionCategoryVS // DSTU 2 change - category is 1..1 in Argonaut -0..* AnatomicalLocation +0..* BodySite 1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/condition-ver-status 1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical 0..1 Severity from http://hl7.org/fhir/ValueSet/condition-severity @@ -336,7 +334,7 @@ Description: "A finding that a condition is or was not present in the subject at 0..0 DataAbsentReason 1..* Category from ConditionCategoryVS VerificationStatus is #refuted -0..* AnatomicalLocation +0..* BodySite EntryElement: ClinicalNote Based on: SimpleNonLaboratoryObservation @@ -352,7 +350,7 @@ EntryElement: BodyStructurePresent Based on: ConditionPresent Description: "A body structure such as wound or tumor, observed to be present in a patient." 1..1 Patient -0..1 AnatomicalLocationStructured +0..1 BodySite 0..* Media 0..1 RelevantTime 0..0 Focus diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 2d277f5b..2b68dfe3 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -32,9 +32,12 @@ Observation maps to Observation: // dstu 2 change (name change) CommentOrDescription maps to comments Category maps to category - AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite - // dstu 2 change (name change) - AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance + BodySite.BodySiteCode maps to bodySite + BodySite.Laterality maps to bodySite.extension + BodySite.AnatomicalDirection maps to bodySite.extension + BodySite.CommentOrDescription maps to bodySite.extension + BodySite.Media maps to bodySite.extension + BodySite.DistanceFromLandmark maps to bodySite.extension Device maps to device ReferenceRange maps to referenceRange ReferenceRange.Range.LowerBound maps to referenceRange.low @@ -79,8 +82,10 @@ ConditionPresent maps to http://fhir.org/guides/argonaut/StructureDefinition/arg Category maps to category Identifier maps to identifier TopicCode maps to code - AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite - AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite + BodySite.BodySiteCode maps to bodySite + + + Encounter maps to encounter ClinicalStatus maps to clinicalStatus VerificationStatus maps to verificationStatus @@ -97,11 +102,11 @@ ConditionAbsent maps to Basic: BodyStructurePresent maps to BodySite: Patient maps to patient Identifier maps to identifier - AnatomicalLocationStructured.AnatomicalLocationOrLandmarkCode maps to code + BodySite.BodySiteCode maps to code // dstu 2 change (naming) - AnatomicalLocationStructured.Laterality maps to modifier (slice on = coding.code) - AnatomicalLocationStructured.AnatomicalDirection maps to modifier - AnatomicalLocationStructured.CommentOrDescription maps to description - AnatomicalLocationStructured.Media maps to image -// AnatomicalLocationStructured.DistanceFromLandmark maps to extension + BodySite.Laterality maps to modifier (slice on = coding.code) + BodySite.AnatomicalDirection maps to modifier + BodySite.CommentOrDescription maps to description + BodySite.Media maps to image + BodySite.DistanceFromLandmark maps to extension \ No newline at end of file diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 4d1fea1e..ca0314d2 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -33,8 +33,12 @@ Observation maps to Observation: // TODO: observationresults is only for labs Method maps to method CommentOrDescription maps to comment Category maps to category - AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite - AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite + BodySite.BodySiteCode maps to bodySite + BodySite.Laterality maps to bodySite.extension (slice on = url; slice strategy = value) + BodySite.AnatomicalDirection maps to bodySite.extension + BodySite.CommentOrDescription maps to bodySite.extension + BodySite.Media maps to bodySite.extension + BodySite.DistanceFromLandmark maps to bodySite.extension Device maps to device ReferenceRange maps to referenceRange ReferenceRange.Range.LowerBound maps to referenceRange.low @@ -72,8 +76,12 @@ ConditionPresent maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core Category maps to category Identifier maps to identifier TopicCode maps to code - AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite - AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/condition-targetBodySite + BodySite.BodySiteCode maps to bodySite + BodySite.Laterality maps to bodySite.extension.value[x] (slice on = url; slice strategy = value) + BodySite.AnatomicalDirection maps to bodySite.extension.value[x] + BodySite.CommentOrDescription maps to bodySite.extension.value[x] + BodySite.Media maps to bodySite.extension.value[x] + BodySite.DistanceFromLandmark maps to bodySite.extension.value[x] Encounter maps to context ClinicalStatus maps to clinicalStatus VerificationStatus maps to verificationStatus @@ -92,9 +100,9 @@ Abnormal lung sounds absent? */ BodyStructurePresent maps to BodySite: Patient maps to patient Identifier maps to identifier - AnatomicalLocationStructured.AnatomicalLocationOrLandmarkCode maps to code - AnatomicalLocationStructured.Laterality maps to qualifier (slice on = coding.code) - AnatomicalLocationStructured.AnatomicalDirection maps to qualifier - AnatomicalLocationStructured.CommentOrDescription maps to description - AnatomicalLocationStructured.Media maps to image -// AnatomicalLocationStructured.DistanceFromLandmark maps to extension \ No newline at end of file + BodySite.BodySiteCode maps to code + BodySite.Laterality maps to qualifier (slice on = coding.code) + BodySite.AnatomicalDirection maps to qualifier + BodySite.CommentOrDescription maps to description + BodySite.Media maps to image + BodySite.DistanceFromLandmark maps to extension \ No newline at end of file diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 22023e7e..ee9f8c74 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -13,9 +13,9 @@ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category EntryElement: BreastSite -Based on: AnatomicalLocationStructured +Based on: BodySite Description: "A body site specific to the breast structure." - AnatomicalLocationOrLandmarkCode from BreastSiteVS + BodySiteCode from BreastSiteVS 1..1 Laterality 0..0 AnatomicalDirection // TODO: This causes mapping error @@ -25,7 +25,7 @@ EntryElement: BreastSpecimen Based on: Specimen Description: "Specimen resulting from biopsy or excision of breast and surrounding tissue." Type from BreastSpecimenTypeVS - CollectionSite.AnatomicalLocation.AnatomicalLocationStructured is type BreastSite + CollectionSite.BodySite is type BreastSite CollectionMethod from BreastSpecimenCollectionMethodVS SourceSpecimen value is type ref(BreastSpecimen) 0..1 ColdIschemiaTime @@ -43,7 +43,7 @@ Description: "Diagnosis of cancer originating in the tissues of the breast, and TopicCode from BreastCancerTypeVS StageInformation.StageDetail value is type BreastCancerStagePanel 0..1 Evidence.Manifestation should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding - AnatomicalLocation.AnatomicalLocationStructured is type BreastSite + BodySite is type BreastSite 0..1 MorphologyBehavior from MorphologyBehaviorVS Element: MorphologyBehavior @@ -383,7 +383,7 @@ Value: CodeableConcept from PositiveNegativeVS // Focus.CodeableConcept from GeneIdentifierVS 0..0 ReferenceRange //0..0 DeltaFlag -0..0 AnatomicalLocationd +0..0 BodySited ObservationComponent includes 0..1 Refseq diff --git a/spec/shr_core.txt b/spec/shr_core.txt index a27e86f7..aa2846b1 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -724,20 +724,10 @@ Concept: MTH#C0013153 Description: "The way a substance enters an organism after contact, particularly, the route of drug administration." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/route-codes -Element: AnatomicalLocation +Element: BodySite Concept: SCT#758637006 "Anatomical location (property) (qualifier value)" Description: "A location or structure in the body, including tissues, regions, cavities, and spaces; for example, right elbow, or left ventricle of the heart." -Value: AnatomicalLocationPrecoordinated or AnatomicalLocationStructured - -Element: AnatomicalLocationPrecoordinated -Concept: TBD -Description: "A single code representing a body site, without the need for further elaboration (such as laterality)." -Value: CodeableConcept should be from AnatomicalLocationVS - -Element: AnatomicalLocationStructured -Concept: LNC#72369-2 // Body site identification panel -Description: "A body site represented as a relative location, code and laterality, or other post-coordinated form." -1..1 AnatomicalLocationOrLandmarkCode +1..1 BodySiteCode 0..1 Laterality 0..1 DistanceFromLandmark 0..1 AnatomicalDirection @@ -745,10 +735,10 @@ Description: "A body site represented as a relative location, code and lateralit 0..1 CommentOrDescription 0..* Media - Element: AnatomicalLocationOrLandmarkCode + Element: BodySiteCode Concept: TBD Description: "Code for the anatomical location or landmark, without laterality, direction, or other modifiers needed to completely specify the body site." - Value: CodeableConcept should be from AnatomicalLocationVS + Value: CodeableConcept should be from BodySiteVS Element: Laterality Concept: MTH#C0925205 "Anatomical laterality" diff --git a/spec/shr_core_map_dstu2.txt b/spec/shr_core_map_dstu2.txt index 1d6055b7..fd9ebaa8 100644 --- a/spec/shr_core_map_dstu2.txt +++ b/spec/shr_core_map_dstu2.txt @@ -119,17 +119,15 @@ Media maps to Attachment: Title maps to title CreationTime maps to creation - // Note that AnatomicalLocationStructured does not have a patient, whereas FHIR BodySite does (and it is required!). From FHIR 3.5 documentation: "The BodyStructure resource is not ... intended for describing the type of anatomical location but rather a specific body site on a specific patient." Note that BodySite is renamed BodyStructure in r4. + // Note that BodySite does not have a patient, whereas FHIR BodySite does (and it is required!). From FHIR 3.5 documentation: "The BodyStructure resource is not ... intended for describing the type of anatomical location but rather a specific body site on a specific patient." Note that BodySite is renamed BodyStructure in r4. -AnatomicalLocationStructured maps to BodySite: - AnatomicalLocationOrLandmarkCode maps to code - // dstu 2 change (attribute name) +BodySite maps to BodySite: + BodySiteCode maps to code Laterality maps to modifier (slice on = coding.code) - // dstu 2 change (attribute name) AnatomicalDirection maps to modifier CommentOrDescription maps to description Media maps to image -// DistanceFromLandmark maps to extension + DistanceFromLandmark maps to extension Annotation maps to Annotation: Text maps to text diff --git a/spec/shr_core_map_stu3.txt b/spec/shr_core_map_stu3.txt index 1ea07df7..a54bb7e9 100644 --- a/spec/shr_core_map_stu3.txt +++ b/spec/shr_core_map_stu3.txt @@ -116,14 +116,14 @@ Media maps to Attachment: Title maps to title CreationTime maps to creation - // Note that AnatomicalLocationStructured does not have a patient, whereas FHIR BodySite (BodyStructure in r4) does. From FHIR 3.5 documentation: "The BodyStructure resource is not ... intended for describing the type of anatomical location but rather a specific body site on a specific patient." -AnatomicalLocationStructured maps to BodySite: - AnatomicalLocationOrLandmarkCode maps to code + // Note that BodySite does not have a patient, whereas FHIR BodySite (BodyStructure in r4) does. From FHIR 3.5 documentation: "The BodyStructure resource is not ... intended for describing the type of anatomical location but rather a specific body site on a specific patient." +BodySite maps to BodySite: + BodySiteCode maps to code Laterality maps to qualifier (slice on = coding.code) AnatomicalDirection maps to qualifier CommentOrDescription maps to description Media maps to image -// DistanceFromLandmark maps to extension + DistanceFromLandmark maps to extension Annotation maps to Annotation: Text maps to text diff --git a/spec/shr_core_vs.txt b/spec/shr_core_vs.txt index f9dc3440..cb5d123e 100644 --- a/spec/shr_core_vs.txt +++ b/spec/shr_core_vs.txt @@ -343,7 +343,7 @@ Description: "How an address is used by the subject, for example, as a dwellin */ -ValueSet: AnatomicalLocationVS +ValueSet: BodySiteVS Concept: MTH#C1545955 Description: "Codes that describe normal and pathologic anatomic systems, regions, cavities, and spaces." Includes codes descending from SCT#123037004 "Body Structure" diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index bf5f1e1f..7dad2faa 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -587,7 +587,7 @@ Description: "A specimen is a substance, physical object, or collection of objec Element: CollectionSite Concept: TBD Description: "The body site where specimen was collected" - Value: AnatomicalLocation + Value: BodySite Element: AccessionIdentifier Based on: Identifier diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index cc36b2d4..0449361c 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -22,9 +22,7 @@ Description: "The process of isolating and testing the DNA of an embryo or a per 0..1 DNASequenceVariantName 0..1 DNASequenceVariantId 0..1 DNASequenceVariantType -0..0 AnatomicalLocation -0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated -0..0 AnatomicalLocation.AnatomicalLocationStructured +0..0 BodySite 0..0 PanelMembers Element: GenomicSourceClass @@ -68,9 +66,7 @@ Concept: LNC#21924-6 "Tumor marker Cancer" Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Dictionary of Cancer Terms). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." Focus value is type ref(CancerDisorderPresent) TopicCode from TumorMarkerVS if covered -0..0 AnatomicalLocation -0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated -0..0 AnatomicalLocation.AnatomicalLocationStructured +0..0 BodySite 0..0 Device diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index f52c5426..6cccf0e7 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -24,7 +24,7 @@ Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure 0..* MedicationAdministered // mlt: to cover clinician-administered meds in a clinical setting. 0..* SurgicalProcedurePerformed 0..* RadiationProcedurePerformed - 0..* AnatomicalLocation // anatomical location is given in the individual actions + 0..* BodySite // anatomical location is given in the individual actions 0..0 Device 0..0 Location 0..0 Method diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index faab8beb..b0d373ac 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -56,7 +56,7 @@ Description: "The dosage of the medication. The data structure is flexible and c Element: DosageBodySite Concept: MTH#C0229986 Description: "The anatomic site at which medical intervention is applied." - Value: AnatomicalLocationPrecoordinated + Value: BodySiteCode Element: MaximumDosePerTimePeriod Concept: TBD diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index c218f4c3..a683711a 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -11,7 +11,7 @@ Dosage maps to Dosage: AdditionalDosageInstruction maps to additionalInstruction RouteIntoBody maps to route DosageMethod maps to method - DosageBodySite.AnatomicalLocationPrecoordinated maps to site + DosageBodySite.BodySiteCode maps to site MaximumDosePerTimePeriod maps to maxDosePerPeriod */ @@ -41,7 +41,7 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ // AdditionalDosageInstruction maps to additionalInstruction Dosage.RouteIntoBody maps to dosage.route Dosage.DosageMethod maps to dosage.method - Dosage.DosageBodySite.AnatomicalLocationPrecoordinated maps to dosage.site[x] + Dosage.DosageBodySite.BodySiteCode maps to dosage.site[x] Dosage.MaximumDosePerTimePeriod maps to dosage.maxDosePerPeriod MedicationAdministered maps to MedicationAdministration: @@ -69,7 +69,7 @@ MedicationAdministered maps to MedicationAdministration: Dosage.DoseAmount.SimpleQuantity maps to dosage.quantity Dosage.RouteIntoBody maps to dosage.route Dosage.DosageMethod maps to dosage.method - Dosage.DosageBodySite.AnatomicalLocationPrecoordinated maps to dosage.site[x] + Dosage.DosageBodySite.BodySiteCode maps to dosage.site[x] // TODO - represent rate and DosageBodySite ref(BodySite) @@ -114,7 +114,7 @@ MedicationRequested maps to http://fhir.org/guides/argonaut/StructureDefinition/ // AdditionalDosageInstruction maps to additionalInstruction Dosage.RouteIntoBody maps to dosageInstruction.route Dosage.DosageMethod maps to dosageInstruction.method - Dosage.DosageBodySite.AnatomicalLocationPrecoordinated maps to dosageInstruction.site[x] + Dosage.DosageBodySite.BodySiteCode maps to dosageInstruction.site[x] Dosage.MaximumDosePerTimePeriod maps to dosageInstruction.maxDosePerPeriod diff --git a/spec/shr_medication_map_stu3.txt b/spec/shr_medication_map_stu3.txt index 60f012e0..d38ffcf4 100644 --- a/spec/shr_medication_map_stu3.txt +++ b/spec/shr_medication_map_stu3.txt @@ -10,7 +10,7 @@ Dosage maps to Dosage: AdditionalDosageInstruction maps to additionalInstruction RouteIntoBody maps to route DosageMethod maps to method - DosageBodySite.AnatomicalLocationPrecoordinated maps to site + DosageBodySite.BodySiteCode maps to site MaximumDosePerTimePeriod maps to maxDosePerPeriod MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index bc0c5887..4a6c5744 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -210,7 +210,7 @@ Description: "A simplified observation for social histories." Category is OBSCAT#social-history 0..1 FocalSubjectModifier 0..0 Method -0..0 AnatomicalLocation +0..0 BodySite 0..0 ReferenceRange 0..0 PanelMembers 0..0 Device diff --git a/spec/shr_oncocore.txt b/spec/shr_oncocore.txt index 72f4d13f..8d6e54c3 100644 --- a/spec/shr_oncocore.txt +++ b/spec/shr_oncocore.txt @@ -27,9 +27,7 @@ Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LO DataValue from CancerHistologicTypeVS TopicCode is SCT#371441004 "Histologic type (observable entity)" Focus value is type ref(CancerDisorderPresent) -0..0 AnatomicalLocation -0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated -0..0 AnatomicalLocation.AnatomicalLocationStructured +0..0 BodySite 0..0 Device @@ -41,9 +39,7 @@ Concept: LNC#21858-6 "Grade Cancer" DataValue from http://loinc.org/vs/LL213-0 TopicCode is LNC#21858-6 "Grade Cancer" Focus value is type ref(CancerDisorderPresent) -0..0 AnatomicalLocation -0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated -0..0 AnatomicalLocation.AnatomicalLocationStructured +0..0 BodySite 0..0 Device 0..0 PanelMembers @@ -57,9 +53,7 @@ Concept: SCT#246453008 "Course of illness (attribute)" Focus value is type ref(CancerDisorderPresent) // CancerProgressionEvidence is not yet part of M-CODE, but I don't see a better way to include it than a extension 0..* CancerProgressionEvidence -0..0 AnatomicalLocation -0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated -0..0 AnatomicalLocation.AnatomicalLocationStructured +0..0 BodySite 0..0 Device 0..0 PanelMembers 0..0 ObservationComponent @@ -77,7 +71,7 @@ Concept: LNC#77975-1 "Earliest date of diagnosis" Description: "The earliest date of diagnosis (clinical or laboratory) of an illness or condition (Source: LOINC). This element is the same as the WhenClinicallyRecognized property in CancerDiagnosis." Value: dateTime // parent class only allows time, dateTime or TimePeriod as choices. 0..0 ReferenceRange -0..0 AnatomicalLocation +0..0 BodySite Focus value is type ref(CancerDisorderPresent) */ @@ -90,9 +84,7 @@ Concept: LNC#89247-1 "ECOG Performance Status score" DataValue value is type IntegerQuantity //0..0 ReferenceRange // set to 0 to 5 0..0 Focus -0..0 AnatomicalLocation -0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated -0..0 AnatomicalLocation.AnatomicalLocationStructured +0..0 BodySite 0..0 Device Interpretation from http://loinc.org/vs/LL529-9 @@ -102,9 +94,7 @@ Description: "The Karnofsky Performance Status (KPS) is a tool used to measure a Concept: LNC#89243-0 "Karnofsky Performance Status panel" DataValue value is type IntegerQuantity // THIS ISN'T WORKING! 0..0 Focus -0..0 AnatomicalLocation -0..0 AnatomicalLocation.AnatomicalLocationPrecoordinated -0..0 AnatomicalLocation.AnatomicalLocationStructured +0..0 BodySite 0..0 Device // ReferenceRange.Range.LowerBound.Quantity.Number is 0.0 // ReferenceRange.Range.LowerBound.Quantity.Units is UCUM#1 diff --git a/spec/shr_oncocore_stage.txt b/spec/shr_oncocore_stage.txt index b9003ea0..109a50f0 100644 --- a/spec/shr_oncocore_stage.txt +++ b/spec/shr_oncocore_stage.txt @@ -37,7 +37,7 @@ Description: "Abstract parent class for members of cancer staging panels. Can Focus value is type ref(CancerDisorderPresent) 1..1 CancerStageTiming 0..1 Method is type CancerStagingSystem -0..0 AnatomicalLocation +0..0 BodySite 0..0 ReferenceRange 0..0 ObservationComponent 0..0 PanelMembers diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index cf759954..cf9389ef 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -10,7 +10,7 @@ EntryElement: ProcedurePerformed Based on: ActionPerformed Description: "A procedure that has been performed." 1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered -0..* AnatomicalLocation +0..* BodySite 0..1 PartOf value is type ref(ProcedurePerformed) 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation @@ -53,7 +53,7 @@ EntryElement: ProcedureNotPerformed Based on: ActionNotPerformed 0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason 1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered -0..* AnatomicalLocation +0..* BodySite //0..1 PartOf value is type ref(ProcedurePerformed or Not Performed) ??? 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation @@ -66,7 +66,7 @@ Based on: ActionRequested RequestStatus // must be from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) 0..1 Requester is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. 1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered -0..* AnatomicalLocation +0..* BodySite 0..1 PartOf value is type ref(ProcedurePerformed) 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation @@ -80,7 +80,7 @@ Based on: ActionRequested EntryElement: ProcedureRequestedAgainst Based on: ActionRequestedAgainst 1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered -0..* AnatomicalLocation +0..* BodySite @@ -128,7 +128,7 @@ Description: "A surgical action, independent of action context." Element: DirectSite Description: "The site where the procedure is performed." - Value: AnatomicalLocation + Value: BodySite Element: DirectSiteCode Description: "The site where the procedure is performed." @@ -136,7 +136,7 @@ Description: "A surgical action, independent of action context." Element: IndirectSite Description: "The indirect site for this procedure." - Value: AnatomicalLocation + Value: BodySite Element: IndirectSiteCode Description: "The indirect site for this procedure." @@ -178,7 +178,7 @@ Element: SpecimenCollectionPerformed Based on: ProcedurePerformed Description: "Base class for actions related to the collection of a specimen." 0..* AmountOrSize -0..1 AnatomicalLocation +0..1 BodySite Element: AmountOrSize Description: "The quantity of specimen collected" diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 94da4924..adc4056f 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -10,8 +10,12 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a constrain notPerformed to 0..0 // DSTU 2 change (name change) constrain reasonNotPerformed to 0..0 - AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite - AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/procedure-targetBodySite + BodySite.BodySiteCode maps to bodySite + BodySite.Laterality maps to bodySite.extension.valueCodeableConcept (slice on = url; slice strategy = value) + BodySite.AnatomicalDirection maps to bodySite.extension.valueCodeableConcept + BodySite.CommentOrDescription maps to bodySite.extension.valueString + BodySite.Media maps to bodySite.extension.valueAttachment + BodySite.DistanceFromLandmark maps to bodySite.extension.valueQuantity // DSTU 2 change (no such attribute) // PartOf maps to partOf Annotation maps to notes @@ -39,8 +43,12 @@ ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinitio // TODO the following is causing a crash // fix notDone to true Reason maps to notDoneReason - AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite - AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/procedure-targetBodySite + BodySite.BodySiteCode maps to bodySite +// BodySite.Laterality maps to bodySite.extension.value[x] (slice on = url; slice strategy = value) +// BodySite.AnatomicalDirection maps to bodySite.extension.value[x] +// BodySite.CommentOrDescription maps to bodySite.extension.value[x] +// BodySite.Media maps to bodySite.extension.value[x] +// BodySite.DistanceFromLandmark maps to bodySite.extension.value[x] // DSTU 2 change (attribute name change) Annotation maps to notes constrain performed[x] to 0..0 @@ -68,8 +76,12 @@ ProcedureRequested maps to ProcedureRequest: // DSTU 2 change (no such attribute) // constrain doNotPerform to 0..0 Patient maps to subject - AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite - AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/procedure-targetBodySite + BodySite.BodySiteCode maps to bodySite +// BodySite.Laterality maps to bodySite.extension.value[x] (slice on = url; slice strategy = value) +// BodySite.AnatomicalDirection maps to bodySite.extension.value[x] +// BodySite.CommentOrDescription maps to bodySite.extension.value[x] +// BodySite.Media maps to bodySite.extension.value[x] +// BodySite.DistanceFromLandmark maps to bodySite.extension.value[x] Encounter maps to encounter Reason maps to reason[x] RequestStatus maps to status @@ -90,6 +102,6 @@ ProcedureRequestedAgainst maps to Basic: ProcedureCode maps to code Category maps to category Patient maps to subject - AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite + BodySite.BodySiteCode maps to bodySite Reason maps to reason.reasonCodeableConcept */ \ No newline at end of file diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index 1c39152c..4af92007 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -9,8 +9,8 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Category maps to category constrain notDone to 0..0 constrain notDoneReason to 0..0 - AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite - AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance + BodySite.BodySiteCode maps to bodySite + PartOf maps to partOf Annotation maps to note Encounter maps to context @@ -36,8 +36,12 @@ ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us // TODO the following is causing a crash // fix notDone to true Reason maps to notDoneReason - AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite - AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance + BodySite.BodySiteCode maps to bodySite +// BodySite.Laterality maps to bodySite.extension.value[x] (slice on = url; slice strategy = value) +// BodySite.AnatomicalDirection maps to bodySite.extension.value[x] +// BodySite.CommentOrDescription maps to bodySite.extension.value[x] +// BodySite.Media maps to bodySite.extension.value[x] +// BodySite.DistanceFromLandmark maps to bodySite.extension.value[x] // PartOf maps to partOf Annotation maps to note constrain performed[x] to 0..0 @@ -62,8 +66,12 @@ ProcedureRequested maps to ProcedureRequest: Category maps to category constrain doNotPerform to 0..0 Patient maps to subject - AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite - AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance + BodySite.BodySiteCode maps to bodySite +// BodySite.Laterality maps to bodySite.extension.value[x] (slice on = url; slice strategy = value) +// BodySite.AnatomicalDirection maps to bodySite.extension.value[x] +// BodySite.CommentOrDescription maps to bodySite.extension.value[x] +// BodySite.Media maps to bodySite.extension.value[x] +// BodySite.DistanceFromLandmark maps to bodySite.extension.value[x] Encounter maps to context Reason maps to reasonCode RequestStatus maps to status @@ -81,7 +89,11 @@ ProcedureRequestedAgainst maps to ProcedureRequest: ProcedureCode maps to code Category maps to category Patient maps to subject - AnatomicalLocation[AnatomicalLocationPrecoordinated] maps to bodySite - AnatomicalLocation[AnatomicalLocationStructured] maps to http://hl7.org/fhir/StructureDefinition/body-site-instance + BodySite.BodySiteCode maps to bodySite +// BodySite.Laterality maps to bodySite.extension.value[x] (slice on = url; slice strategy = value) +// BodySite.AnatomicalDirection maps to bodySite.extension.value[x] +// BodySite.CommentOrDescription maps to bodySite.extension.value[x] +// BodySite.Media maps to bodySite.extension.value[x] +// BodySite.DistanceFromLandmark maps to bodySite.extension.value[x] Reason maps to reasonCode // Encounter maps to context diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 894d4995..f16c57ab 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -75,7 +75,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t 1..1 TopicCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered 1..1 Identifier is type WoundIdentifier 0..1 ConditionCause is type WoundTypeEtiology -1..1 AnatomicalLocationStructured is type WoundAnatomicalLocation +1..1 BodySite is type WoundBodySite 0..0 Severity // not sure if zeroing it out is wise, but severity is not part of LOINC panel 0..0 Criticality 0..0 Device @@ -91,10 +91,10 @@ The WoundIdentifier serves as a link between this assertion and assessments of t Description: "A specialization of condition cause, specific to the causes of injuries (or not having injury in the wound absent context)." Value: CodeableConcept from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.3/expansion // should be from http://loinc.org/vs/LL4936-2 - Element: WoundAnatomicalLocation - Based on: AnatomicalLocationStructured + Element: WoundBodySite + Based on: BodySite Concept: LNC#39111-0 "Body Site" - AnatomicalLocationOrLandmarkCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.14/expansion + BodySiteCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1181.14/expansion 1..1 Laterality 0..0 AnatomicalDirection 0..0 ClockDirection @@ -103,10 +103,10 @@ The WoundIdentifier serves as a link between this assertion and assessments of t EntryElement: WoundAbsenct Based on: ConditionAbsent Description: "Documents the absence of a wound at a given body site. -No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundAnatomicalLocation." +No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundBodySite." 1..1 TopicCode is SCT#416462003 "Wound (disorder)" 1..1 Category is OBSCAT#exam -1..1 AnatomicalLocationStructured is type WoundAnatomicalLocation +1..1 BodySite is type WoundBodySite //--------------- Wound Assessment ------------------------- @@ -118,7 +118,7 @@ Description: "Group of observations regarding the properties and severity of a w 0..0 DataAbsentReason 1..1 WoundIdentifier Interpretation is type WoundAssessmentInterpretation -0..0 AnatomicalLocation // carried by wound assertion +0..0 BodySite // carried by wound assertion 0..0 Device TopicCode is LNC#39135-9 0..0 ReferenceRange @@ -206,7 +206,7 @@ Concept: LNC#89254-7 Description: "The appearance of the base (bed) of the wound, together with the percentage of the bed with each type of appearance." 1..1 WoundIdentifier TopicCode is LNC#89254-7 -0..0 AnatomicalLocation // location is given by the wound assertion +0..0 BodySite // location is given by the wound assertion 0..0 Device ObservationComponent includes 1..1 WoundBedAppearance @@ -231,7 +231,7 @@ Concept: TBD Description: "Color of part or all of the wound base (bed), and the percentage of the area with that color." 1..1 WoundIdentifier TopicCode is TBD#TBD -0..0 AnatomicalLocation // location is given by the wound assertion +0..0 BodySite // location is given by the wound assertion 0..0 Device ObservationComponent includes 1..1 WoundBedColor @@ -259,7 +259,7 @@ Concept: LNC#89256-2 Description: "The state of the tissue at the edge of the wound." 1..1 WoundIdentifier TopicCode is LNC#89256-2 -0..0 AnatomicalLocation // location is given by the wound assertion +0..0 BodySite // location is given by the wound assertion 0..0 Device ObservationComponent includes 1..1 WoundEdgeDescription @@ -285,7 +285,7 @@ Concept: LNC#89257-0 Description: "A discharging blind-ended track that extends from the surface of an organ to an underlying area or abscess cavity. The track is invariably lined with granulation tissue. In chronic cases this may be augmented with epithelial tissue." 1..1 WoundIdentifier TopicCode is LNC#89257-0 -0..0 AnatomicalLocation // location is given by the wound assertion +0..0 BodySite // location is given by the wound assertion 0..0 Device ObservationComponent includes 0..1 WoundTunnelLength @@ -315,7 +315,7 @@ Concept: LNC#89258-8 Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage around the wound margin. Undermining are narrow sinus tracts away from the wound margins and go downward into the wound." TopicCode is LNC#89258-8 1..1 WoundIdentifier -0..0 AnatomicalLocation // location is given by the wound assertion +0..0 BodySite // location is given by the wound assertion 0..0 Device ObservationComponent includes 0..1 WoundUnderminingLength @@ -341,7 +341,7 @@ Concept: LNC#72292-6 Description: "Description of the fluid produced by a wound." TopicCode is LNC#72292-6 1..1 WoundIdentifier -0..0 AnatomicalLocation // location is given by the wound assertion +0..0 BodySite // location is given by the wound assertion 0..0 Device ObservationComponent includes 0..1 WoundExudateAmount @@ -391,7 +391,7 @@ Concept: LNC#72287-6 Description: "The estimated or measured dimensions of a wound." TopicCode is LNC#72287-6 1..1 WoundIdentifier -0..0 AnatomicalLocation // location is given by the wound assertion +0..0 BodySite // location is given by the wound assertion 0..0 Device ObservationComponent includes 1..1 WoundLength From ea5c967fb69058e070e4dd86e64436d8c7c45d90 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 1 Feb 2019 12:12:37 -0500 Subject: [PATCH 175/289] Fixed units and extension mapping problem --- spec/shr_base_map_stu3.txt | 13 +++++++------ spec/shr_brca.txt | 7 +++---- spec/shr_core.txt | 3 ++- spec/shr_occupation.txt | 7 +++---- spec/shr_procedure_map_dstu2.txt | 30 +++++++++++++++--------------- spec/shr_procedure_map_stu3.txt | 30 +++++++++++++++--------------- spec/shr_tumor.txt | 12 ++++++------ spec/shr_wound.txt | 20 +++++++++----------- 8 files changed, 60 insertions(+), 62 deletions(-) diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index ca0314d2..c2cdd2da 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -34,7 +34,8 @@ Observation maps to Observation: // TODO: observationresults is only for labs CommentOrDescription maps to comment Category maps to category BodySite.BodySiteCode maps to bodySite - BodySite.Laterality maps to bodySite.extension (slice on = url; slice strategy = value) + BodySite.Laterality maps to bodySite.extension + //(slice on = url; slice strategy = value) BodySite.AnatomicalDirection maps to bodySite.extension BodySite.CommentOrDescription maps to bodySite.extension BodySite.Media maps to bodySite.extension @@ -77,11 +78,11 @@ ConditionPresent maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core Identifier maps to identifier TopicCode maps to code BodySite.BodySiteCode maps to bodySite - BodySite.Laterality maps to bodySite.extension.value[x] (slice on = url; slice strategy = value) - BodySite.AnatomicalDirection maps to bodySite.extension.value[x] - BodySite.CommentOrDescription maps to bodySite.extension.value[x] - BodySite.Media maps to bodySite.extension.value[x] - BodySite.DistanceFromLandmark maps to bodySite.extension.value[x] + BodySite.Laterality maps to bodySite.extension + BodySite.AnatomicalDirection maps to bodySite.extension + BodySite.CommentOrDescription maps to bodySite.extension + BodySite.Media maps to bodySite.extension + BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to context ClinicalStatus maps to clinicalStatus VerificationStatus maps to verificationStatus diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index ee9f8c74..2676ba1d 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -18,8 +18,8 @@ Description: "A body site specific to the breast structure." BodySiteCode from BreastSiteVS 1..1 Laterality 0..0 AnatomicalDirection -// TODO: This causes mapping error -// DistanceFromLandmark.Distance.Units is UCUM#cm +// TODO: causes mapping error +// DistanceFromLandmark.Quantity.Units is UCUM#cm EntryElement: BreastSpecimen Based on: Specimen @@ -97,8 +97,7 @@ includes 0..1 CompleteMembraneStainingPercent Based on: QuantitativeObservationComponent Concept: LNC#85328-3 "Cells.HER2 uniform intense membrane staining/100 cells" Description: "Percentage of cells with uniform intense complete membrane staining." -// Awaiting bug fix -// DataValue.Quantity.Units is UCUM#% + DataValue.Quantity.Units is UCUM#% 0..0 ReferenceRange // 0..0 Interpretation diff --git a/spec/shr_core.txt b/spec/shr_core.txt index aa2846b1..a781557c 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -758,7 +758,8 @@ Description: "A location or structure in the body, including tissues, regions, c Element: DistanceFromLandmark Concept: TBD Description: "How far the anatomical location of interest is from the given landmark" - Value: Distance + Value: Quantity + Quantity.Units.Coding from UnitsOfLengthVS Element: Identifier Concept: MTH#C0600091 diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 4a6c5744..7c35818a 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -89,7 +89,7 @@ includes 0..1 UsualOccupationDuration Based on: QuantitativeObservationComponent Concept: LNC#74163-7 "Usual occupation duration" Description: "The total time spent on an activity, inclusive of all time intervals, whether continuous or interrupted." - // DataValue.Quantity.Units is UCUM#a + DataValue.Quantity.Units is UCUM#a TopicCode is LNC#74163-7 "Usual occupation duration" EntryElement: PastOrPresentJob @@ -185,8 +185,7 @@ includes 0..1 IsCurrentJob Based on: QuantitativeObservationComponent Concept: LNC#74160-3 Description: "The average number of days per week that a person spends performing their duties for work." -// TODO: bug preventing this -// DataValue.Quantity.Units is UCUM#d + DataValue.Quantity.Units is UCUM#d TopicCode is LNC#74160-3 0..0 ReferenceRange @@ -194,7 +193,7 @@ includes 0..1 IsCurrentJob Based on: QuantitativeObservationComponent Concept: LNC#87512-0 Description: "The average number of hours in a day that a person spends performing their duties for work." - // DataValue.Quantity.Units is UCUM#h + DataValue.Quantity.Units is UCUM#h TopicCode is LNC#87512-0 0..0 ReferenceRange diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index adc4056f..53ab5c6f 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -11,11 +11,11 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a // DSTU 2 change (name change) constrain reasonNotPerformed to 0..0 BodySite.BodySiteCode maps to bodySite - BodySite.Laterality maps to bodySite.extension.valueCodeableConcept (slice on = url; slice strategy = value) - BodySite.AnatomicalDirection maps to bodySite.extension.valueCodeableConcept - BodySite.CommentOrDescription maps to bodySite.extension.valueString - BodySite.Media maps to bodySite.extension.valueAttachment - BodySite.DistanceFromLandmark maps to bodySite.extension.valueQuantity + BodySite.Laterality maps to bodySite.extension + BodySite.AnatomicalDirection maps to bodySite.extension + BodySite.CommentOrDescription maps to bodySite.extension + BodySite.Media maps to bodySite.extension + BodySite.DistanceFromLandmark maps to bodySite.extension // DSTU 2 change (no such attribute) // PartOf maps to partOf Annotation maps to notes @@ -44,11 +44,11 @@ ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinitio // fix notDone to true Reason maps to notDoneReason BodySite.BodySiteCode maps to bodySite -// BodySite.Laterality maps to bodySite.extension.value[x] (slice on = url; slice strategy = value) -// BodySite.AnatomicalDirection maps to bodySite.extension.value[x] -// BodySite.CommentOrDescription maps to bodySite.extension.value[x] -// BodySite.Media maps to bodySite.extension.value[x] -// BodySite.DistanceFromLandmark maps to bodySite.extension.value[x] + BodySite.Laterality maps to bodySite.extension + BodySite.AnatomicalDirection maps to bodySite.extension + BodySite.CommentOrDescription maps to bodySite.extension + BodySite.Media maps to bodySite.extension + BodySite.DistanceFromLandmark maps to bodySite.extension // DSTU 2 change (attribute name change) Annotation maps to notes constrain performed[x] to 0..0 @@ -77,11 +77,11 @@ ProcedureRequested maps to ProcedureRequest: // constrain doNotPerform to 0..0 Patient maps to subject BodySite.BodySiteCode maps to bodySite -// BodySite.Laterality maps to bodySite.extension.value[x] (slice on = url; slice strategy = value) -// BodySite.AnatomicalDirection maps to bodySite.extension.value[x] -// BodySite.CommentOrDescription maps to bodySite.extension.value[x] -// BodySite.Media maps to bodySite.extension.value[x] -// BodySite.DistanceFromLandmark maps to bodySite.extension.value[x] + BodySite.Laterality maps to bodySite.extension + BodySite.AnatomicalDirection maps to bodySite.extension + BodySite.CommentOrDescription maps to bodySite.extension + BodySite.Media maps to bodySite.extension + BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to encounter Reason maps to reason[x] RequestStatus maps to status diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index 4af92007..7d4e8d7d 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -37,11 +37,11 @@ ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us // fix notDone to true Reason maps to notDoneReason BodySite.BodySiteCode maps to bodySite -// BodySite.Laterality maps to bodySite.extension.value[x] (slice on = url; slice strategy = value) -// BodySite.AnatomicalDirection maps to bodySite.extension.value[x] -// BodySite.CommentOrDescription maps to bodySite.extension.value[x] -// BodySite.Media maps to bodySite.extension.value[x] -// BodySite.DistanceFromLandmark maps to bodySite.extension.value[x] + BodySite.Laterality maps to bodySite.extension + BodySite.AnatomicalDirection maps to bodySite.extension + BodySite.CommentOrDescription maps to bodySite.extension + BodySite.Media maps to bodySite.extension + BodySite.DistanceFromLandmark maps to bodySite.extension // PartOf maps to partOf Annotation maps to note constrain performed[x] to 0..0 @@ -67,11 +67,11 @@ ProcedureRequested maps to ProcedureRequest: constrain doNotPerform to 0..0 Patient maps to subject BodySite.BodySiteCode maps to bodySite -// BodySite.Laterality maps to bodySite.extension.value[x] (slice on = url; slice strategy = value) -// BodySite.AnatomicalDirection maps to bodySite.extension.value[x] -// BodySite.CommentOrDescription maps to bodySite.extension.value[x] -// BodySite.Media maps to bodySite.extension.value[x] -// BodySite.DistanceFromLandmark maps to bodySite.extension.value[x] + BodySite.Laterality maps to bodySite.extension + BodySite.AnatomicalDirection maps to bodySite.extension + BodySite.CommentOrDescription maps to bodySite.extension + BodySite.Media maps to bodySite.extension + BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to context Reason maps to reasonCode RequestStatus maps to status @@ -90,10 +90,10 @@ ProcedureRequestedAgainst maps to ProcedureRequest: Category maps to category Patient maps to subject BodySite.BodySiteCode maps to bodySite -// BodySite.Laterality maps to bodySite.extension.value[x] (slice on = url; slice strategy = value) -// BodySite.AnatomicalDirection maps to bodySite.extension.value[x] -// BodySite.CommentOrDescription maps to bodySite.extension.value[x] -// BodySite.Media maps to bodySite.extension.value[x] -// BodySite.DistanceFromLandmark maps to bodySite.extension.value[x] + BodySite.Laterality maps to bodySite.extension + BodySite.AnatomicalDirection maps to bodySite.extension + BodySite.CommentOrDescription maps to bodySite.extension + BodySite.Media maps to bodySite.extension + BodySite.DistanceFromLandmark maps to bodySite.extension Reason maps to reasonCode // Encounter maps to context diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt index ebef6197..13ad32fd 100644 --- a/spec/shr_tumor.txt +++ b/spec/shr_tumor.txt @@ -37,28 +37,28 @@ includes 0..1 SizeOfGrossTumorBed Based on: QuantitativeObservationComponent Concept: SCT#372299002 "Tumor size, dimension 1 (observable entity)" TopicCode is SCT#372299002 "Tumor size, dimension 1 (observable entity)" -// DataValue.Quantity.Units is UCUM#mm + DataValue.Quantity.Units is UCUM#mm Element: TumorDimension2 Description: "The second longest dimension of the tumor, perpendicular to the longest dimension." Based on: QuantitativeObservationComponent Concept: SCT#372300005 "Tumor size, dimension 2 (observable entity)" TopicCode is SCT#372300005 "Tumor size, dimension 2 (observable entity)" -// DataValue.Quantity.Units is UCUM#mm + DataValue.Quantity.Units is UCUM#mm Element: TumorDimension3 Description: "The third longest dimension of the tumor, perpendicular to the two longest dimensions." Based on: QuantitativeObservationComponent Concept: SCT#372301009 "Tumor size, dimension 3 (observable entity)" TopicCode is SCT#372301009 "Tumor size, dimension 3 (observable entity)" -// DataValue.Quantity.Units is UCUM#mm + DataValue.Quantity.Units is UCUM#mm Element: SizeOfGrossTumorBed Based on: QuantitativeObservationComponent Concept: TBD Description: "The largest dimension of the gross tumor bed/fibrotic area." TopicCode is TBD#TBD -// DataValue.Quantity.Units is UCUM#mm + DataValue.Quantity.Units is UCUM#mm EntryElement: TumorMargins @@ -84,10 +84,10 @@ includes 0..1 PercentageInSituCarcinoma // not sure this belongs here Concept: MTH#C4055283 Based on: QuantitativeObservationComponent Description: "Percentage of cells in a sample that are cancerous" - // DataValue.Quantity.Units is UCUM#% + DataValue.Quantity.Units is UCUM#% Element: PercentageInSituCarcinoma Based on: QuantitativeObservationComponent Concept: TBD Description: "The percentage of the cancer that is in situ, as opposed to invading other tissues." - // DataValue.Quantity.Units is UCUM#% + DataValue.Quantity.Units is UCUM#% diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index f16c57ab..83a4fb11 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -222,7 +222,7 @@ includes 1..1 WoundBedAppearancePercentage Based on: QuantitativeObservationComponent Concept: LNC#72370-0 Description: "Area of wound bed appearance/Entire ​Area of wound bed." -// DataValue.Quantity.Units is UCUM#% + DataValue.Quantity.Units is UCUM#% 0..0 ReferenceRange EntryElement: WoundBedColorObservation @@ -249,8 +249,7 @@ includes 1..1 WoundBedColorAreaPercentage Based on: QuantitativeObservationComponent Concept: LNC#89255-4 Description: "Wound bed area identified by color/​Area of wound bed." -// TODO: waiting on bug fix -// DataValue.Quantity.Units is UCUM#% + DataValue.Quantity.Units is UCUM#% 0..0 ReferenceRange EntryElement: WoundEdgeObservation @@ -298,7 +297,7 @@ includes 0..1 WoundTunnelClockDirection Based on: QuantitativeObservationComponent Concept: LNC#72296-7 Description: "Length of wound tunneling." -// DataValue.Quantity.Units is UCUM#cm + DataValue.Quantity.Units is UCUM#cm 0..0 ReferenceRange // LOINC: should require use the full clock position value set @@ -325,7 +324,7 @@ includes 0..1 WoundUnderminingClockDirection Based on: QuantitativeObservationComponent Concept: LNC#72293-4 Description: "Length of wound undermining." -// DataValue.Quantity.Units is UCUM#cm + DataValue.Quantity.Units is UCUM#cm 0..0 ReferenceRange // LOINC: should require use the full clock position value set @@ -362,7 +361,7 @@ includes 0..1 WoundExudateOdor Based on: QuantitativeObservationComponent Concept: LNC#39122-7 Description:"Appearance of exudate from wound" -// DataValue.Quantity.Units is UCUM#mL + DataValue.Quantity.Units is UCUM#mL 0..0 ReferenceRange Element: WoundExudateAppearance @@ -403,28 +402,27 @@ includes 0..1 WoundArea Based on: QuantitativeObservationComponent Concept: LNC#39126-8 Description: "Length of the wound (longest dimension)." -// DataValue.Quantity.Units is UCUM#cm + DataValue.Quantity.Units is UCUM#cm 0..0 ReferenceRange Element: WoundWidth Based on: QuantitativeObservationComponent Concept: LNC#39125-0 - Description: "Width of the wound (perpendicular to longest dimension)." -// DataValue.Quantity.Units is UCUM#cm + Description: "Width of the wound (perpendicular to longest dimension)." DataValue.Quantity.Units is UCUM#cm 0..0 ReferenceRange Element: WoundDepth Based on: QuantitativeObservationComponent Concept: LNC#39127-6 Description: "Depth of the wound." -// DataValue.Quantity.Units is UCUM#cm + DataValue.Quantity.Units is UCUM#cm 0..0 ReferenceRange Element: WoundArea Based on: QuantitativeObservationComponent Concept: LNC#89260-4 Description: "Area of the wound." -// DataValue.Quantity.Units with units UCUM#cm2 + DataValue.Quantity.Units is UCUM#cm2 0..0 ReferenceRange /* Old Stuff From d95102777bd2015e30cb466fe3059829c5d9d6e4 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Fri, 1 Feb 2019 13:32:29 -0500 Subject: [PATCH 176/289] Body site mappings eliminated BodyStructure clarified --- spec/shr_base_finding.txt | 3 +-- spec/shr_base_map_dstu2.txt | 12 +++++++----- spec/shr_base_map_stu3.txt | 1 + spec/shr_core_map_dstu2.txt | 4 ++-- spec/shr_core_map_stu3.txt | 2 ++ spec/shr_tumor.txt | 4 ++-- 6 files changed, 15 insertions(+), 11 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index b2dd15f9..07ef2aa2 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -348,10 +348,9 @@ Description: "An entry concerning a patient where the result is a narrative text EntryElement: BodyStructurePresent Based on: ConditionPresent -Description: "A body structure such as wound or tumor, observed to be present in a patient." +Description: "A body structure such as wound or tumor, observed to be present in a patient. The body structure is a condition that persists over time. The TopicCode will represent the body structure, and the BodySiteCode the location of that structure. This corresponds to FHIR R4, where the BodyStructure resource has morphology (corresponding to TopicCode) and location (corresponding to BodySite.BodySiteCode). For example, the TopicCode could be blunt force injury (SCT 3821009) and location left knee." 1..1 Patient 0..1 BodySite -0..* Media 0..1 RelevantTime 0..0 Focus 0..0 ReferenceRange diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 2b68dfe3..9a686062 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -83,9 +83,11 @@ ConditionPresent maps to http://fhir.org/guides/argonaut/StructureDefinition/arg Identifier maps to identifier TopicCode maps to code BodySite.BodySiteCode maps to bodySite - - - + BodySite.Laterality maps to bodySite.extension + BodySite.AnatomicalDirection maps to bodySite.extension + BodySite.CommentOrDescription maps to bodySite.extension + BodySite.Media maps to bodySite.extension + BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to encounter ClinicalStatus maps to clinicalStatus VerificationStatus maps to verificationStatus @@ -102,11 +104,11 @@ ConditionAbsent maps to Basic: BodyStructurePresent maps to BodySite: Patient maps to patient Identifier maps to identifier + TopicCode maps to extension BodySite.BodySiteCode maps to code - // dstu 2 change (naming) + // dstu 2 change (modifier <-> qualifier) BodySite.Laterality maps to modifier (slice on = coding.code) BodySite.AnatomicalDirection maps to modifier BodySite.CommentOrDescription maps to description BodySite.Media maps to image BodySite.DistanceFromLandmark maps to extension - \ No newline at end of file diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index c2cdd2da..3ac468fc 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -101,6 +101,7 @@ Abnormal lung sounds absent? */ BodyStructurePresent maps to BodySite: Patient maps to patient Identifier maps to identifier + TopicCode maps to extension BodySite.BodySiteCode maps to code BodySite.Laterality maps to qualifier (slice on = coding.code) BodySite.AnatomicalDirection maps to qualifier diff --git a/spec/shr_core_map_dstu2.txt b/spec/shr_core_map_dstu2.txt index fd9ebaa8..45844e6c 100644 --- a/spec/shr_core_map_dstu2.txt +++ b/spec/shr_core_map_dstu2.txt @@ -119,8 +119,7 @@ Media maps to Attachment: Title maps to title CreationTime maps to creation - // Note that BodySite does not have a patient, whereas FHIR BodySite does (and it is required!). From FHIR 3.5 documentation: "The BodyStructure resource is not ... intended for describing the type of anatomical location but rather a specific body site on a specific patient." Note that BodySite is renamed BodyStructure in r4. - +/* Note that BodySite does not have a patient, whereas FHIR BodySite does (and it is required!). From FHIR 3.5 documentation: "The BodyStructure resource is not ... intended for describing the type of anatomical location but rather a specific body site on a specific patient." Note that BodySite is renamed BodyStructure in r4. BodySite maps to BodySite: BodySiteCode maps to code Laterality maps to modifier (slice on = coding.code) @@ -128,6 +127,7 @@ BodySite maps to BodySite: CommentOrDescription maps to description Media maps to image DistanceFromLandmark maps to extension +*/ Annotation maps to Annotation: Text maps to text diff --git a/spec/shr_core_map_stu3.txt b/spec/shr_core_map_stu3.txt index a54bb7e9..ff2a20ac 100644 --- a/spec/shr_core_map_stu3.txt +++ b/spec/shr_core_map_stu3.txt @@ -117,6 +117,7 @@ Media maps to Attachment: CreationTime maps to creation // Note that BodySite does not have a patient, whereas FHIR BodySite (BodyStructure in r4) does. From FHIR 3.5 documentation: "The BodyStructure resource is not ... intended for describing the type of anatomical location but rather a specific body site on a specific patient." +/* BodySite maps to BodySite: BodySiteCode maps to code Laterality maps to qualifier (slice on = coding.code) @@ -124,6 +125,7 @@ BodySite maps to BodySite: CommentOrDescription maps to description Media maps to image DistanceFromLandmark maps to extension +*/ Annotation maps to Annotation: Text maps to text diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt index 13ad32fd..015b58af 100644 --- a/spec/shr_tumor.txt +++ b/spec/shr_tumor.txt @@ -6,11 +6,11 @@ Uses: shr.core, shr.base, shr.entity, oncocore EntryElement: TumorPresent -Based on: BodyStructurePresent +Based on: BodyStructurePresent Concept: SCT#395557000 "Tumor finding (finding)" Description: "The presence of an abnormal mass of tissue (neoplasm) that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). (source: NCI Dictionary)." TopicCode from TumorMorphologyVS -// note - like other existential findings, the topic code is WHAT is present or absent, and the result code is present or absent (in this case, present) +// note - the topic code represents the morphology, as distinct from the location in BodySite 0..1 IsPrimaryTumor Element: IsPrimaryTumor From bddcff9716abb263a23d70d723bd1f6ad03f0f53 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sat, 2 Feb 2019 12:15:11 -0500 Subject: [PATCH 177/289] Aligned status attributes --- spec/shr_adverse.txt | 2 +- spec/shr_allergy.txt | 2 +- spec/shr_allergy_map_dstu2.txt | 5 +--- spec/shr_allergy_map_stu3.txt | 2 +- spec/shr_base.txt | 39 +++++++++++++++++-------------- spec/shr_base_action.txt | 13 ++--------- spec/shr_base_finding.txt | 11 +++------ spec/shr_base_map_dstu2.txt | 4 ++-- spec/shr_base_map_stu3.txt | 4 ++-- spec/shr_encounter.txt | 6 ++--- spec/shr_encounter_map_dstu2.txt | 4 ++-- spec/shr_encounter_map_stu3.txt | 4 ++-- spec/shr_entity.txt | 24 +++++-------------- spec/shr_entity_map_dstu2.txt | 17 ++++++++------ spec/shr_entity_map_stu3.txt | 14 +++++------ spec/shr_familyhistory.txt | 2 +- spec/shr_financial.txt | 6 +---- spec/shr_financial_map_dstu2.txt | 2 +- spec/shr_financial_map_stu3.txt | 2 +- spec/shr_medication.txt | 38 +++++++++++++----------------- spec/shr_medication_map_dstu2.txt | 6 ++--- spec/shr_medication_map_stu3.txt | 6 ++--- spec/shr_procedure.txt | 6 ++--- spec/shr_procedure_map_dstu2.txt | 4 ++-- spec/shr_procedure_map_stu3.txt | 5 ++-- spec/shr_research.txt | 18 ++++---------- spec/shr_research_map_dstu2.txt | 28 +++------------------- spec/shr_research_map_stu3.txt | 8 +++---- spec/shr_research_vs.txt | 2 +- 29 files changed, 110 insertions(+), 174 deletions(-) diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt index 46508fb8..74d6fadb 100644 --- a/spec/shr_adverse.txt +++ b/spec/shr_adverse.txt @@ -66,7 +66,7 @@ Description: "A record of an untoward or unexpected event in a patient under tre Element: AssociatedStudy Description: "The related clinical trial or other formal study." - Value: ref(Study) + Value: ref(ResearchStudy) EntryElement: AdverseDrugReaction Based on: AdverseEvent diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index 8da94757..22014419 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -15,7 +15,7 @@ Description: "A finding related to the presence of an individual's risk or sensi Asserter value is type PatientOrPractitionerOrRelatedPerson Recorder value is type PatientOrPractitioner // FHIR only allows Patient or Practitioner as recorder 1..1 Patient -1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status 0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status 0..0 Focus // always the patient 1..1 TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index ff05422e..7f005d95 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -11,10 +11,7 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a DataValue maps to substance AllergyIntoleranceType maps to type SubstanceCategory maps to category -/* DSTU 2: VerificationStatus and ClinicalStatus map to one attribute, status. This is a problem. For now, eliminating mappings so native DSTU 2 status is supported. - VerificationStatus maps to verificationStatus - ClinicalStatus maps to status -*/ + ResourceStatus maps to status Criticality maps to criticality // DSTU 2 change (onset only dateTime, not a choice [x]) Onset maps to onset diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index 3fa65dec..e918008a 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -11,7 +11,7 @@ AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co DataValue maps to code TopicCode maps to type SubstanceCategory maps to category - VerificationStatus maps to verificationStatus + ResourceStatus maps to verificationStatus ClinicalStatus maps to clinicalStatus Criticality maps to criticality Onset maps to onset[x] diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 87e168f5..3191c447 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -56,7 +56,7 @@ Based on: Resource Description: "Parent class for any item in clinical or administrative health-related system. A DomainResource can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." 1..1 TopicCode 0..1 Narrative -//0..1 RecordStatus +0..1 ResourceStatus Element: TopicCode Description: "A code describing what the domain resource concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist (present) or not exist (absent)." @@ -76,10 +76,9 @@ Description: "Parent class for any item in clinical or administrative health-rel Description: "Additional information on how the narrative was generated, and the scope of information contained." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/narrative-status - Element: RecordStatus - Description: "Concept indicating the state of this record, e.g., active, inactive, entered in error. The record status is often spread aournd in different places, including validation status and active flags." - Value: CodeableConcept - + Element: ResourceStatus + Description: "The status that relates to the interpretation of this resource. Certain status values can modify the meaning of the resource, for example, entered-in-error. When a boolean value is used, ResourceStatus of true indicates the record is active, false means inactive." + Value: boolean or CodeableConcept should be from http://hl7.org/fhir/ValueSet/resource-status Element: Metadata Description: "Elements that belong to all information items." @@ -119,7 +118,6 @@ Description: "Elements that belong to all information items." Abstract Element: ClinicalStatement Based on: DomainResource Description: "This abstract class provides properties and behaviors common to entries in a medical record. Patient and Encounter are ubiquitous in clinical statements. This class also allows for common representation of simple data provenance elements asserter, recorder, and creation date." -//0..1 RecordStatus 0..1 Patient 0..1 Encounter 0..1 CreationDate @@ -146,6 +144,23 @@ Description: "This abstract class provides properties and behaviors common to en Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." Value: ref(EntityOrRole) + + +EntryElement: Composition +Based on: DomainResource +Description: "A composition represents a set of Entries sharing common provenance, a document such as an extract from a patient record, a knowledge artifact, or a catalog definition." +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/composition-status +1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes +0..* Section + + Element: Section + Description: "Represents a section containing entries in a composition." + //0..1 Title + 0..* DomainResource + 0..* Section + +// Combined participant roles + Element: PatientOrPractitioner Based on: Participant Description: "A choice of Patient or Practitioner. Needed for mapping to FHIR." @@ -173,18 +188,6 @@ Description: "This abstract class provides properties and behaviors common to en -EntryElement: Composition -Based on: DomainResource -Description: "A composition represents a set of Entries sharing common provenance, a document such as an extract from a patient record, a knowledge artifact, or a catalog definition." -1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/composition-status -1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes -0..* Section - - Element: Section - Description: "Represents a section containing entries in a composition." - //0..1 Title - 0..* DomainResource - 0..* Section /* diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 86961830..8dae8694 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -22,7 +22,7 @@ Based on: ActionStatement Description: "Abstract class representing performance of any type of action." 1..1 OccurrenceTimeOrPeriod // when the action took place 0..* Participation -1..1 PerformanceStatus // should be from http://hl7.org/fhir/ValueSet/event-status DSTU 2 change (conflict in required data sets) +1..1 ResourceStatus // change to required... should be from http://hl7.org/fhir/ValueSet/event-status DSTU 2 change (conflict in required data sets) 0..1 Method 0..1 RelatedRequest //0..1 EnactsPlan @@ -46,11 +46,6 @@ Description: "Abstract class representing performance of any type of action." Concept: TBD Description: "The point in time or span of time the participant is involved." Value: TimePeriod - - Element: PerformanceStatus - Concept: TBD - Description: "Indicates whether the finding is preliminary, amended, final, etc." - Value: CodeableConcept Element: Method Concept: TBD @@ -80,7 +75,7 @@ Based on: ActionStatement Description: "Abstract class representing a request for any type of action to be performed." 0..1 Requester 1..1 RequestIntent -1..1 RequestStatus //should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) +1..1 ResourceStatus should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) 0..1 ExpectedPerformanceTime 0..1 ExpectedPerformerType 0..1 ExpectedPerformer @@ -98,10 +93,6 @@ Description: "Abstract class representing a request for any type of action to b Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/request-intent - Element: RequestStatus - Description: "A code identifying the lifecycle stage of a request." - Value: CodeableConcept - Element: ExpectedPerformanceTime Concept: TBD Description: "When an action should be done. If the action is a series or recurs (e.g. daily blood sugar testing in the morning) then a Timing can be used to describe the periodicity." diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 07ef2aa2..8bca360e 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -82,7 +82,7 @@ For an Observation, the TopicCode describes the aspect or property of the subjec 0..1 Method 0..1 RelevantTime 0..* ObservationComponent -1..1 PerformanceStatus from http://hl7.org/fhir/ValueSet/observation-status +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 Category from http://hl7.org/fhir/ValueSet/observation-category if covered // MK Category cardinality from 0..* to 0..1 to be compatible with DSTU 2 0..1 BodySite 0..1 CommentOrDescription @@ -216,7 +216,6 @@ Description: "An assertion of a condition being present or absent. DataValue value is type CodeableConcept DataValue from PresentAbsentVS 0..* Identifier -0..1 VerificationStatus 0..1 Evidence Element: ConditionOrDiagnosisCode @@ -224,10 +223,6 @@ Description: "An assertion of a condition being present or absent. Description: "A specific code for the condition being determined to be present or absent." Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make the binding weaker because US Core requires an extensible binding - Element: VerificationStatus - Description: "The verification status to support the clinical status of the condition (ref: http://hl7.org/fhir/R4/condition-definitions.html#Condition.verificationStatus)" - Value: CodeableConcept - Element: Evidence Description: "Supporting evidence / manifestations that are the basis of the Condition's verification status, such as evidence that confirmed or refuted the condition." 0..* Manifestation @@ -248,7 +243,7 @@ Description: "A condition that is or may be present in a subject. 'Condition' i 0..0 Focus // maybe a family member? 1..1 Category from ConditionCategoryVS // DSTU 2 change - category is 1..1 in Argonaut 0..* BodySite -1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/condition-ver-status +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/condition-ver-status 1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical 0..1 Severity from http://hl7.org/fhir/ValueSet/condition-severity 0..1 StageInformation @@ -333,7 +328,7 @@ Description: "A finding that a condition is or was not present in the subject at //TODO: 1..1 DataValue is SCT#2667000 "Absent (qualifier value)" 0..0 DataAbsentReason 1..* Category from ConditionCategoryVS - VerificationStatus is #refuted + ResourceStatus.CodeableConcept is #refuted // Maybe not right since refuted implies the condition was considered 0..* BodySite EntryElement: ClinicalNote diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 9a686062..1317f825 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -62,7 +62,7 @@ Observation maps to Observation: DataAbsentReason maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued - PerformanceStatus maps to status + ResourceStatus maps to status RelevantTime maps to effective[x] // dstu 2 change (name change) Encounter maps to encounter @@ -90,7 +90,7 @@ ConditionPresent maps to http://fhir.org/guides/argonaut/StructureDefinition/arg BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to encounter ClinicalStatus maps to clinicalStatus - VerificationStatus maps to verificationStatus + ResourceStatus maps to verificationStatus Onset maps to onset[x] Abatement maps to abatement[x] Severity maps to severity diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 3ac468fc..dbf40a54 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -59,7 +59,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs DataAbsentReason maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued - PerformanceStatus maps to status + ResourceStatus maps to status RelevantTime maps to effective[x] Encounter maps to context // DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta @@ -85,7 +85,7 @@ ConditionPresent maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to context ClinicalStatus maps to clinicalStatus - VerificationStatus maps to verificationStatus + ResourceStatus maps to verificationStatus Onset maps to onset[x] Abatement maps to abatement[x] Severity maps to severity diff --git a/spec/shr_encounter.txt b/spec/shr_encounter.txt index e51ded84..4aa82261 100644 --- a/spec/shr_encounter.txt +++ b/spec/shr_encounter.txt @@ -11,7 +11,7 @@ Description: "A description of an interaction between a patient and healthcare p 0..1 EncounterClass 0..* EncounterType 0..1 TimePeriod -1..1 PerformanceStatus //from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 0..1 PartOf value is type ref(Encounter) 0..* Diagnosis // SHR Extension @@ -120,13 +120,13 @@ Description: "A detailed description of an interaction between a patient and hea Element: EncounterRequestedContext Based on: RequestedContext Description: "Context for encounter requests." - RequestStatus from http://hl7.org/fhir/ValueSet/request-status + ResourceStatus from http://hl7.org/fhir/ValueSet/request-status PriorityRank from http://hl7.org/fhir/ValueSet/request-priority Element: EncounterPerformedContext Based on: PerformedContext Description: "Context for encounters performed." - EncounterStatus from http://hl7.org/fhir/ValueSet/encounter-status + ResourceStatus from http://hl7.org/fhir/ValueSet/encounter-status OccurrenceTimeOrPeriod is type OccurrencePeriod Reason should be from http://hl7.org/fhir/ValueSet/encounter-reason // RelatedRequest value is type ref(EncounterRequested) diff --git a/spec/shr_encounter_map_dstu2.txt b/spec/shr_encounter_map_dstu2.txt index 97b874f8..469369d6 100644 --- a/spec/shr_encounter_map_dstu2.txt +++ b/spec/shr_encounter_map_dstu2.txt @@ -8,7 +8,7 @@ Encounter maps to Encounter: Patient maps to patient EncounterType maps to type // ServiceProvider maps to serviceProvider - PerformanceStatus maps to status + ResourceStatus maps to status TimePeriod maps to period // Participation.Participant maps to participant // Participation.Participant[Entity] maps to participant.individual ??? @@ -30,7 +30,7 @@ EncounterRequested maps to ReferralRequest: EncounterTopic.??? maps to type //TreatmentCooperation //PaymentSource - PerformanceStatus maps to status + ResourceStatus maps to status //RequestIntent EncounterExpectedPerformanceTime maps to occurrence[x] EncounterExpectedPerformerType maps to specialty diff --git a/spec/shr_encounter_map_stu3.txt b/spec/shr_encounter_map_stu3.txt index 5df83681..d805efdd 100644 --- a/spec/shr_encounter_map_stu3.txt +++ b/spec/shr_encounter_map_stu3.txt @@ -7,7 +7,7 @@ Encounter maps to Encounter: Patient maps to subject EncounterType maps to type // ServiceProvider maps to serviceProvider - PerformanceStatus maps to status + ResourceStatus maps to status TimePeriod maps to period // Participation.Participant maps to participant // Participation.Participant[Entity] maps to participant.individual ??? @@ -29,7 +29,7 @@ EncounterRequested maps to ReferralRequest: EncounterTopic.??? maps to type //TreatmentCooperation //PaymentSource - PerformanceStatus maps to status + ResourceStatus maps to status //RequestIntent EncounterExpectedPerformanceTime maps to occurrence[x] EncounterExpectedPerformerType maps to specialty diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 7dad2faa..0f8e9641 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -6,7 +6,6 @@ Uses: shr.core, shr.base, shr.medication, shr.procedure Abstract Element: EntityOrRole Based on: DomainResource Description: "Parent class for both Entity and Role." -//Identifier Abstract Element: Role Based on: EntityOrRole @@ -27,14 +26,8 @@ Based on: Role Concept: MTH#C1299487 Description: "A person in the role of a patient." 1..1 ref(Person) -0..1 ActiveFlag //0..* ref(ExternalHealthRecord) - Element: ActiveFlag - Concept: TBD - Description: "If the ActiveFlag is false, it indicates the record or item is no longer to be used and should generally be hidden for the user in the UI." - Value: boolean - EntryElement: ExternalHealthRecord Based on: Entity // TODO: change to information item Concept: TBD @@ -53,7 +46,7 @@ Based on: Role Concept: MTH#C2220264 Description: "A person who practices a healing art." 1..1 ref(Person) -0..1 ActiveFlag +0..1 ResourceStatus 1..1 Person.HumanName // only one (limitation imposed by us-core) // 0..* Affiliation // handled by ProviderRelationship in FHIR 1..1 NationalProviderIdentifier @@ -82,7 +75,7 @@ EntryElement: RelatedPerson Based on: Role Description: "A person in a role defined in relationship to a patient" 0..1 ref(Person) -0..1 ActiveFlag +0..1 ResourceStatus 0..1 RelationshipToPersonOfRecord 0..1 EffectiveTimePeriod 1..1 Person.HumanName // DSTU 2 change (max cardinality of 1 imposed by DSTU 2) @@ -96,7 +89,7 @@ EntryElement: Group Based on: Entity Concept: MTH#C0441833 Description: "A set of entities (personnel, material, or places) to be considered together. May be a pool of like-type resources, a team, or combination of personnel, material and places." -0..1 ActiveFlag +0..1 ResourceStatus 1..1 Type from http://hl7.org/fhir/ValueSet/group-type 0..1 Title // name 1..1 Actual @@ -180,7 +173,7 @@ Concept: MTH#C0439861 Description: "Any matter of defined composition that has discrete existence, whose origin may be biological, mineral or chemical." 1..1 Type should be from http://hl7.org/fhir/ValueSet/substance-code 0..* Category from http://hl7.org/fhir/ValueSet/substance-category if covered -0..1 RecordStatus from http://hl7.org/fhir/ValueSet/substance-status +0..1 ResourceStatus from http://hl7.org/fhir/ValueSet/substance-status 0..1 CommentOrDescription 0..* Ingredient @@ -495,7 +488,7 @@ Description: "A social or legal structure formed by human beings." 0..1 Type could be from http://hl7.org/fhir/ValueSet/organization-type 1..* Address 1..* ContactPoint -1..1 ActiveFlag +1..1 ResourceStatus 0..1 PartOf value is type ref(Organization) Element: OrganizationName @@ -556,7 +549,7 @@ EntryElement: Specimen Based on: Entity Description: "A specimen is a substance, physical object, or collection of objects, that the laboratory considers a single discrete, uniquely identified unit that is the subject of one or more steps in the laboratory workflow. A specimen may include multiple physical pieces as long as they are considered a single unit within the laboratory workflow. A specimen results from one to many specimen collection procedures, and may be contained in multiple specimen containers. Specimen may have one or more processing activities." 0..1 AccessionIdentifier -0..1 SpecimenStatus from http://hl7.org/fhir/ValueSet/specimen-status +0..1 ResourceStatus from http://hl7.org/fhir/ValueSet/specimen-status 1..1 Type from http://hl7.org/fhir/ValueSet/v2-0487 0..1 CollectionSource 0..1 CollectionTime @@ -593,11 +586,6 @@ Description: "A specimen is a substance, physical object, or collection of objec Based on: Identifier Concept: TBD Description: "Identifier assigned by the lab" - - Element: SpecimenStatus - Concept: MTH#C0449438 - Description: "State of the specimen, such as obtained, processed, used." - Value: CodeableConcept Element: SourceSpecimen Concept: TBD diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index a4a354dc..62806a89 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -3,7 +3,7 @@ Namespace: shr.entity Target: FHIR_DSTU_2 Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient: // dstu 2 change (different mapping target) - ActiveFlag maps to active + ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -28,7 +28,7 @@ Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient // Deceased.DateOfDeath maps to deceased[x].dateTime Practitioner maps to Practitioner: // dstu 2 change (different mapping target) - ActiveFlag maps to active + ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -42,7 +42,7 @@ Practitioner maps to Practitioner: // dstu 2 change (different mapping target) Qualification.Issuer maps to qualification.issuer RelatedPerson maps to RelatedPerson: - ActiveFlag maps to extension + ResourceStatus maps to extension Person.HumanName maps to name Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender @@ -53,16 +53,16 @@ RelatedPerson maps to RelatedPerson: EffectiveTimePeriod maps to period Organization maps to Organization: + ResourceStatus maps to active OrganizationName maps to name Type maps to type OrganizationIdentifier maps to identifier Address maps to address ContactPoint maps to telecom - ActiveFlag maps to active PartOf maps to partOf Group maps to Group: - ActiveFlag maps to extension + ResourceStatus maps to extension Type maps to type Actual maps to actual constrain code to 0..0 // why? @@ -77,6 +77,7 @@ Group maps to Group: Count maps to quantity Facility maps to Location: + ResourceStatus maps to status FacilityName maps to name Location[Address] maps to address Location[Geoposition].Latitude maps to position.latitude @@ -87,13 +88,14 @@ Facility maps to Location: Type maps to type Substance maps to Substance: + ResourceStatus maps to status Type maps to code - RecordStatus maps to status Ingredient maps to ingredient Ingredient.IngredientAmount maps to ingredient.quantity Ingredient.SubstanceOrCode[Substance] maps to ingredient.substance Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medication: + ResourceStatus maps to status Type maps to code // dstu 2 change (different attribute) DoseForm maps to product.form @@ -116,8 +118,8 @@ Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medi Package maps to package.container Specimen maps to Specimen: + ResourceStatus maps to status AccessionIdentifier maps to accessionIdentifier - SpecimenStatus maps to status Type maps to type CollectionSource maps to subject SourceSpecimen maps to parent @@ -136,6 +138,7 @@ Specimen maps to Specimen: SpecimenContainer.Additive maps to container.additive[x] Device maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-device: + ResourceStatus maps to status Type maps to type // dstu 2 change (different attribute) DeviceUdi maps to udi diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index e56673af..2617103f 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -3,7 +3,7 @@ Namespace: shr.entity Target: FHIR_STU_3 Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: - ActiveFlag maps to active + ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -28,7 +28,7 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: // Deceased.DateOfDeath maps to deceased[x].dateTime Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner: - ActiveFlag maps to active + ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -43,7 +43,7 @@ Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-pra Qualification.Issuer maps to qualification.issuer RelatedPerson maps to RelatedPerson: - ActiveFlag maps to active + ResourceStatus maps to active Person.HumanName maps to name Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender @@ -54,16 +54,16 @@ RelatedPerson maps to RelatedPerson: EffectiveTimePeriod maps to period Organization maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization: + ResourceStatus maps to active OrganizationName maps to name Type maps to type OrganizationIdentifier maps to identifier Address maps to address ContactPoint maps to telecom - ActiveFlag maps to active PartOf maps to partOf Group maps to Group: - ActiveFlag maps to active + ResourceStatus maps to active Type maps to type Actual maps to actual constrain code to 0..0 @@ -89,7 +89,7 @@ Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-locatio Substance maps to Substance: Type maps to code - RecordStatus maps to status + ResourceStatus maps to status Ingredient maps to ingredient Ingredient.IngredientAmount maps to ingredient.quantity Ingredient.SubstanceOrCode maps to ingredient.substance[x] @@ -110,7 +110,7 @@ Medication maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medic Specimen maps to Specimen: AccessionIdentifier maps to accessionIdentifier - SpecimenStatus maps to status + ResourceStatus maps to status Type maps to type CollectionSource maps to subject SourceSpecimen maps to parent diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index eb94afc2..0bfe51dd 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -16,7 +16,7 @@ Concept: LNC#54114-4 "Family member health history [USSG-FHT] Family member" // Description: "The health history of a patient's family member." 1..1 Patient 1..1 FamilyMember -1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/history-status +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/history-status 0..* FamilyMemberConditionPresent diff --git a/spec/shr_financial.txt b/spec/shr_financial.txt index 8d9ee1d5..f56d0d37 100644 --- a/spec/shr_financial.txt +++ b/spec/shr_financial.txt @@ -11,17 +11,13 @@ EntryElement: Coverage Based on: DomainResource Concept: MTH#C0021682 "HealthInsurance" Description: "Health insurance coverage available (even if not used for payment for a given encounter)." -0..1 CoverageStatus from http://hl7.org/fhir/ValueSet/fm-status +0..1 ResourceStatus from http://hl7.org/fhir/ValueSet/fm-status 1..1 CoverageType should be from http://hl7.org/fhir/ValueSet/coverage-type 0..1 InsuranceMemberId 0..1 PolicyHolder 0..1 EffectiveTimePeriod // TODO: complete this! - Element: CoverageStatus - Description: "The financial account status of the coverage." - Value: CodeableConcept - Element: CoverageType Description: "Coverage category such as medical or accident." Value: CodeableConcept diff --git a/spec/shr_financial_map_dstu2.txt b/spec/shr_financial_map_dstu2.txt index 5ac5787d..a3cdcbde 100644 --- a/spec/shr_financial_map_dstu2.txt +++ b/spec/shr_financial_map_dstu2.txt @@ -5,7 +5,7 @@ Target: FHIR_DSTU_2 Coverage maps to Coverage: // dstu 2 change (no such attribute) - CoverageStatus maps to status + ResourceStatus maps to status CoverageType maps to type InsuranceMemberId maps to subscriberId EffectiveTimePeriod maps to period diff --git a/spec/shr_financial_map_stu3.txt b/spec/shr_financial_map_stu3.txt index 5c25b95b..e55a1a0f 100644 --- a/spec/shr_financial_map_stu3.txt +++ b/spec/shr_financial_map_stu3.txt @@ -4,7 +4,7 @@ Target: FHIR_STU_3 Coverage maps to Coverage: - CoverageStatus maps to status + ResourceStatus maps to status CoverageType maps to type InsuranceMemberId maps to subscriberId EffectiveTimePeriod maps to period diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index b0d373ac..900e7d79 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -64,33 +64,33 @@ Description: "The dosage of the medication. The data structure is flexible and c Value: Ratio +0..0 Method // because of Dosage.Method + EntryElement: MedicationStatement -Based on: ActionPerformed +Based on: MedicationExposure Concept: SCT#416608005 "Drug therapy (procedure)" // TODO: investigate whether we need a new code or use a drug concept. Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." Asserter value is type PersonOrOrganization 1..1 CreationDate // us-core required -1..1 Medication -0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category - PerformanceStatus from http://hl7.org/fhir/ValueSet/medication-statement-status -0..0 Method // because of Dosage.Method -0..1 Reason // DSTU 2 change (upper card imposed by DSTU 2) + ResourceStatus from http://hl7.org/fhir/ValueSet/medication-statement-status +0..1 Reason // Upper cardinality imposed by DSTU 2 EntryElement: MedicationAdministered -Based on: ActionPerformed -Concept: TBD +Based on: MedicationExposure Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." -1..1 Medication -0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category - PerformanceStatus from http://hl7.org/fhir/ValueSet/medication-admin-status -0..0 Method // because of Dosage.Method + ResourceStatus from http://hl7.org/fhir/ValueSet/medication-admin-status 0..1 Participation Participation.Participant is type PatientOrPractitionerOrRelatedPerson // DSTU 2 change (max cardinality = 1), also, DSTU 2 participant excludes Device 0..0 Participation.ParticipationType RelatedRequest value is type ref(MedicationRequested) +Element: MedicationDispensed +Based on: MedicationExposure +Description: "Indicates that a medication product has been dispensed for a named person/patient. This includes a description of the medication product (supply) provided and the instructions for administering the medication. The medication dispense is the result of a pharmacy system responding to a medication order." +// Attributes from FHIR needed + EntryElement: MedicationAdherence Based on: CodedNonLaboratoryObservation @@ -121,16 +121,16 @@ EntryElement: MedicationRequested Based on: ActionRequested Concept: TBD Description: "An order for a medication to be dispensed and instructions for use." -1..1 Requester value is type ref(Practitioner) - RequestStatus //from http://hl7.org/fhir/ValueSet/medication-request-status DSTU 2 change (incompatible required value sets) - PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority 1..1 Medication 0..1 Dosage +1..1 Requester value is type ref(Practitioner) + ResourceStatus from http://hl7.org/fhir/ValueSet/medication-request-status + PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority 0..1 NumberOfRefillsAllowed 0..1 QuantityPerDispense 0..1 SupplyDuration 0..1 SubstitutionAllowed -0..1 Reason // DSTU 2 change (upper cardinality of 1 imposed by DSTU 2) +0..1 Reason // Upper cardinality of 1 imposed by DSTU 2 Element: NumberOfRefillsAllowed Concept: TBD @@ -160,12 +160,6 @@ Description: "A record of a medication NOT being prescribed. Recorded only when 1..1 Medication Reason from MedicationNotUsedReasonVS -Element: MedicationDispensed -Based on: ActionPerformed -Concept: TBD -Description: "Indicates that a medication product has been dispensed for a named person/patient. This includes a description of the medication product (supply) provided and the instructions for administering the medication. The medication dispense is the result of a pharmacy system responding to a medication order." -// Attributes from FHIR needed - Element: MedicationNotDispensed Based on: ActionNotPerformed diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index a683711a..50c638d0 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -31,7 +31,7 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ // fix taken to #y Reason maps to reasonForUse[x] OccurrenceTimeOrPeriod maps to effective[x] - PerformanceStatus maps to status + ResourceStatus maps to status // DSTU 2 change (added Dosage as in-line element) Dosage.DoseAmount maps to dosage.quantity[x] Dosage.TimingOfDoses maps to dosage.timing @@ -60,7 +60,7 @@ MedicationAdministered maps to MedicationAdministration: // DSTU 2 change (name change) Reason maps to reasonGiven OccurrenceTimeOrPeriod maps to effectiveTime[x] - PerformanceStatus maps to status + ResourceStatus maps to status // DSTU 2 change (more restrictive type) Participation.Participant maps to practitioner // DSTU 2 change (no such attribute) @@ -94,7 +94,7 @@ MedicationRequested maps to http://fhir.org/guides/argonaut/StructureDefinition/ constrain dosageInstruction to 0..1 // DSTU 2 change (name change) Reason maps to reason[x] - RequestStatus maps to status + ResourceStatus maps to status ExpectedPerformanceTime maps to dispenseRequest.validityPeriod // DSTU 2 change (no such attribute) // PriorityRank maps to priority diff --git a/spec/shr_medication_map_stu3.txt b/spec/shr_medication_map_stu3.txt index d38ffcf4..57733fa2 100644 --- a/spec/shr_medication_map_stu3.txt +++ b/spec/shr_medication_map_stu3.txt @@ -25,7 +25,7 @@ MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c fix taken to #y Reason maps to reasonCode OccurrenceTimeOrPeriod maps to effective[x] - PerformanceStatus maps to status + ResourceStatus maps to status MedicationAdministered maps to MedicationAdministration: Patient maps to subject @@ -38,7 +38,7 @@ MedicationAdministered maps to MedicationAdministration: Category maps to category Reason maps to reasonCode OccurrenceTimeOrPeriod maps to effective[x] - PerformanceStatus maps to status + ResourceStatus maps to status Participation maps to performer Participation.Participant maps to performer.actor // Participation.ParticipationType maps to performer.role (no role in med administration!) @@ -63,7 +63,7 @@ MedicationRequested maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c constrain dosageInstruction to 0..1 Dosage maps to dosageInstruction Reason maps to reasonCode - RequestStatus maps to status + ResourceStatus maps to status ExpectedPerformanceTime maps to dispenseRequest.validityPeriod PriorityRank maps to priority PerformerInstructions maps to note.text diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index cf9389ef..2a1a5cd5 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -20,7 +20,7 @@ Description: "A procedure that has been performed." //0..* Indication 0..* ref(Device) Participation.OnBehalfOf value is type ref(Organization) - PerformanceStatus // must be from http://hl7.org/fhir/ValueSet/event-status + ResourceStatus from http://hl7.org/fhir/ValueSet/event-status // Participation.Participant.EntityOrRole is type ref(Practitioner) Participation.Participant is type FHIRProcedureParticipant RelatedRequest value is type ref(ProcedureRequested) @@ -57,13 +57,13 @@ Based on: ActionNotPerformed //0..1 PartOf value is type ref(ProcedurePerformed or Not Performed) ??? 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation -1..1 PerformanceStatus // must be from http://hl7.org/fhir/ValueSet/event-status // DSTU 2 change (different required value sets in v2 and v3) +1..1 ResourceStatus // must be from http://hl7.org/fhir/ValueSet/event-status // DSTU 2 change (different required value sets in v2 and v3) RelatedRequest value is type ref(ProcedureRequested) EntryElement: ProcedureRequested Based on: ActionRequested PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) - RequestStatus // must be from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) + ResourceStatus from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) 0..1 Requester is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. 1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 53ab5c6f..88788c08 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -27,7 +27,7 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a Participation.ParticipationType maps to performer.role // DSTU 2 change (no such attribute) // Participation.OnBehalfOf maps to performer.onBehalfOf - PerformanceStatus maps to status + ResourceStatus maps to status // TODO The following statement is failing it might be a bug // Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method RelatedRequest.Value maps to request @@ -84,7 +84,7 @@ ProcedureRequested maps to ProcedureRequest: BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to encounter Reason maps to reason[x] - RequestStatus maps to status + ResourceStatus maps to status // DSTU 2 change (no such attribute) // RequestIntent maps to intent // DSTU 2 change (name change) diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index 7d4e8d7d..a1345e58 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -10,7 +10,6 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co constrain notDone to 0..0 constrain notDoneReason to 0..0 BodySite.BodySiteCode maps to bodySite - PartOf maps to partOf Annotation maps to note Encounter maps to context @@ -20,7 +19,7 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Participation.Participant maps to performer.actor Participation.ParticipationType maps to performer.role Participation.OnBehalfOf maps to performer.onBehalfOf - PerformanceStatus maps to status + ResourceStatus maps to status // TODO The following statement is failing it might be a bug // Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method RelatedRequest.Value maps to basedOn @@ -74,7 +73,7 @@ ProcedureRequested maps to ProcedureRequest: BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to context Reason maps to reasonCode - RequestStatus maps to status + ResourceStatus maps to status RequestIntent maps to intent ExpectedPerformanceTime maps to occurrence[x] ExpectedPerformerType maps to performerType diff --git a/spec/shr_research.txt b/spec/shr_research.txt index c74004dd..9d856f7b 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -4,15 +4,14 @@ Description: "The SHR research domain contains definitions related to the clinic Uses: shr.core, shr.base, shr.entity -EntryElement: Study +EntryElement: ResearchStudy Based on: Entity Concept: TBD Description: "A clinical trial or similar research study. Reference: list of FDA data elements describing a research study: prsinfo.clinicaltrials.gov/definitions.html " 1..1 Title 1..1 Identifier 0..1 CommentOrDescription -0..1 PartOf value is type Study -1..1 ResearchStudyStatus +0..1 PartOf value is type ResearchStudy 0..* Enrollment 0..1 EffectiveTimePeriod 0..1 Sponsor @@ -23,10 +22,7 @@ Description: "A clinical trial or similar research study. Reference: list of FDA 0..1 TerminationReason 0..* Annotation 0..* StudyArm - - Element: ResearchStudyStatus - Description: "The status of the study, at the time of the last update of this record." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/research-study-status +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/research-study-status Element: Enrollment Concept: MTH#C4041024 @@ -59,11 +55,7 @@ EntryElement: ResearchSubject Based on: Entity Description: "Record of a subject's enrollment and participation in a research study." 1..1 ref(Patient) -1..1 ref(Study) -1..1 ResearchSubjectStatus +1..1 ref(ResearchStudy) +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/research-subject-status 1..1 ParticipationPeriod 0..1 TerminationReason from ResearchSubjectTerminationReasonVS - - Element: ResearchSubjectStatus - Description: "The current state of the subject with respect to participation in the research study." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/research-subject-status \ No newline at end of file diff --git a/spec/shr_research_map_dstu2.txt b/spec/shr_research_map_dstu2.txt index 497accac..ca30cbaa 100644 --- a/spec/shr_research_map_dstu2.txt +++ b/spec/shr_research_map_dstu2.txt @@ -3,30 +3,8 @@ Namespace: shr.research Target: FHIR_DSTU_2 -Study maps to Basic: -/* dstu 2 change (no suitable target) - Title maps to title - Identifier maps to identifier - PartOf maps to partOf - ResearchStudyStatus maps to status - Enrollment maps to enrollment - EffectiveTimePeriod maps to period - Sponsor maps to sponsor - Jurisdiction maps to jurisdiction - ContactDetail maps to contact - PrincipalInvestigator maps to principalInvestigator - Facility maps to site - TerminationReason maps to reasonStopped - Annotation maps to note - StudyArm.Title maps to arm.name - StudyArm.Type maps to arm.code - StudyArm.CommentOrDescription maps to arm.description -*/ +ResearchStudy maps to Basic: +// dstu 2 change (no suitable target) ResearchSubject maps to Basic: -/* dstu 2 change (no suitable target) - Patient maps to individual - Study maps to study - ResearchSubjectStatus maps to status - ParticipationPeriod maps to period -*/ \ No newline at end of file +// dstu 2 change (no suitable target) diff --git a/spec/shr_research_map_stu3.txt b/spec/shr_research_map_stu3.txt index 5bda12a8..15a151ac 100644 --- a/spec/shr_research_map_stu3.txt +++ b/spec/shr_research_map_stu3.txt @@ -4,11 +4,11 @@ Target: FHIR_STU_3 -Study maps to ResearchStudy: +ResearchStudy maps to ResearchStudy: Title maps to title Identifier maps to identifier PartOf maps to partOf - ResearchStudyStatus maps to status + ResourceStatus maps to status Enrollment maps to enrollment EffectiveTimePeriod maps to period Sponsor maps to sponsor @@ -24,6 +24,6 @@ Study maps to ResearchStudy: ResearchSubject maps to ResearchSubject: Patient maps to individual - Study maps to study - ResearchSubjectStatus maps to status + ResearchStudy maps to study + ResourceStatus maps to status ParticipationPeriod maps to period diff --git a/spec/shr_research_vs.txt b/spec/shr_research_vs.txt index 5fa1a1e9..92c8ad8d 100644 --- a/spec/shr_research_vs.txt +++ b/spec/shr_research_vs.txt @@ -14,7 +14,7 @@ ValueSet: ResearchSubjectTerminationReasonVS Description: "The reason for a research subject leaving a research study." #moved "Subject relocated" #died "Suject passed away" -#ended "Study ended" +#ended "ResearchStudy ended" #adverse "Subject could not tolerate treatement" #protocol "Subject could not follow protocol, e.g. required appointments, dosing schedule, etc." #other "Other reason" From 7e95458acacce384c25ce965169be9fb0665f653 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sat, 2 Feb 2019 12:30:59 -0500 Subject: [PATCH 178/289] Restored MedicationExposure --- spec/shr_medication.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 900e7d79..f7bdfe74 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -64,6 +64,11 @@ Description: "The dosage of the medication. The data structure is flexible and c Value: Ratio +Abstract Element: MedicationExposure +Based on: ActionPerformed +Description: "Abstract class representing medication exposure, independent of whether reported in a medication statement or medication administration. Does not include medication requests (prescriptions)." +1..1 Medication +0..1 Dosage 0..0 Method // because of Dosage.Method EntryElement: MedicationStatement From fa40e0fb810b158625b9611efb07e30dcd50c24b Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sun, 3 Feb 2019 11:16:00 -0500 Subject: [PATCH 179/289] Unified Identifier --- spec/shr_adverse.txt | 1 + spec/shr_adverse_map_dstu2.txt | 1 + spec/shr_adverse_map_stu3.txt | 1 + spec/shr_allergy_map_dstu2.txt | 1 + spec/shr_allergy_map_stu3.txt | 2 +- spec/shr_base.txt | 27 +++++++++++++++--------- spec/shr_base_action.txt | 2 ++ spec/shr_base_finding.txt | 13 +++--------- spec/shr_base_map_dstu2.txt | 3 +++ spec/shr_base_map_stu3.txt | 9 ++++++-- spec/shr_encounter_map_dstu2.txt | 1 + spec/shr_encounter_map_stu3.txt | 1 + spec/shr_entity.txt | 34 +++++++++++++------------------ spec/shr_entity_map_dstu2.txt | 12 +++++++++-- spec/shr_entity_map_stu3.txt | 17 +++++++++++----- spec/shr_financial_map_dstu2.txt | 1 + spec/shr_financial_map_stu3.txt | 1 + spec/shr_intervention.txt | 4 ++-- spec/shr_medication.txt | 4 ++++ spec/shr_medication_map_dstu2.txt | 4 ++++ spec/shr_medication_map_stu3.txt | 6 ++++++ spec/shr_occupation.txt | 23 ++++++++------------- spec/shr_occupation_map_dstu2.txt | 6 +----- spec/shr_occupation_map_stu3.txt | 6 +----- spec/shr_procedure.txt | 23 +++++++-------------- spec/shr_procedure_map_dstu2.txt | 11 ++++++---- spec/shr_procedure_map_stu3.txt | 12 +++++++---- spec/shr_research.txt | 1 + spec/shr_research_map_stu3.txt | 3 ++- 29 files changed, 128 insertions(+), 102 deletions(-) diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt index 74d6fadb..bd6660e6 100644 --- a/spec/shr_adverse.txt +++ b/spec/shr_adverse.txt @@ -12,6 +12,7 @@ CodeSystem: MTH = http://ncimeta.nci.nih.gov Element: AdverseEvent Based on: ClinicalStatement Description: "A record of an untoward or unexpected event in a patient under treatment, and which does not necessarily have to have a causal relationship with that treatment. Adverse events may capture either a workflow breach that may or may not result in harm, but must be documented for quality improvement purposes, or an adverse finding whether or not it can be traceable to an actual workflow breach." +0..1 Identifier Recorder value is type PatientOrPractitionerOrRelatedPerson 1..1 Patient 1..1 OccurrenceTime diff --git a/spec/shr_adverse_map_dstu2.txt b/spec/shr_adverse_map_dstu2.txt index 8df6549f..79184205 100644 --- a/spec/shr_adverse_map_dstu2.txt +++ b/spec/shr_adverse_map_dstu2.txt @@ -3,6 +3,7 @@ Namespace: shr.adverse Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: + Identifier maps to identifier Recorder maps to recorder // Type maps to type // TOPIC CODE??? Type doesn't exist in AdverseEvent CommentOrDescription maps to description diff --git a/spec/shr_adverse_map_stu3.txt b/spec/shr_adverse_map_stu3.txt index a37bff94..155f8a23 100644 --- a/spec/shr_adverse_map_stu3.txt +++ b/spec/shr_adverse_map_stu3.txt @@ -3,6 +3,7 @@ Namespace: shr.adverse Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: + Identifier maps to identifier Recorder maps to recorder // Type maps to type // TOPIC CODE??? CommentOrDescription maps to description diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index 7f005d95..77b58e4b 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -4,6 +4,7 @@ Target: FHIR_DSTU_2 AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: + Identifier maps to identifier Patient maps to patient Asserter maps to asserter Recorder maps to recorder diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index e918008a..1b490d6c 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -3,7 +3,7 @@ Namespace: shr.allergy Target: FHIR_STU_3 AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: - Patient maps to patient + Identifier maps to identifier Patient maps to patient Asserter maps to asserter Recorder maps to recorder diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 3191c447..534cf7c0 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -57,6 +57,7 @@ Description: "Parent class for any item in clinical or administrative health-rel 1..1 TopicCode 0..1 Narrative 0..1 ResourceStatus +0..* Identifier Element: TopicCode Description: "A code describing what the domain resource concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist (present) or not exist (absent)." @@ -127,28 +128,28 @@ Description: "This abstract class provides properties and behaviors common to en Element: Asserter Concept: TBD Description: "The origin or source of the information or request: a practitioner, patient, related person, organization, an algorithm, device, etc." - Value: Participant // TODO: might have to change to Participation + Value: Participant Element: Recorder Concept: TBD Description: "The recorder of the information, if other than the information originator. For example, the nurse taking a list of medications reported by the patient." - Value: Participant // TODO: might have to change to Participation + Value: Participant + + Element: Participant + Concept: MTH#C1550369 + Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity. A code can be used to indicate a generic type of participant, e.g., mother, EMT, or social worker." + Value: ref(EntityOrRole) or CodeableConcept Element: CreationDate Concept: TBD Description: "The date/time the information was asserted or created; usually, when the clinical statement was initially recorded." Value: dateTime - Element: Participant - Concept: MTH#C1550369 - Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." - Value: ref(EntityOrRole) - - EntryElement: Composition Based on: DomainResource Description: "A composition represents a set of Entries sharing common provenance, a document such as an extract from a patient record, a knowledge artifact, or a catalog definition." +0..1 Identifier // FHIR inconsistency -- usually 0..* 1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/composition-status 1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes 0..* Section @@ -186,9 +187,15 @@ Description: "A composition represents a set of Entries sharing common provenanc Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Device) + Element: FHIRProcedureParticipant + Based on: Participant + Description: "Constrains participants to classes that are accepted by FHIR as actors in procedures in STU 3." + Value: ref(Practitioner) or ref(Organization) or ref(Patient) or ref(RelatedPerson) or ref(Device) - - + Element: ParticipantType + Based on: Participant + Description: "A participant who is not a specific individual or device, identified only by a type code. This could be a type of practitioner, a type of relative (e.g., mother), a type of device, etc. The type is distinct from the role; the mother (type) could play different roles (caregiver, organ donor, healthcare proxy, etc.)" + Value: CodeableConcept /* Element: HealthRecordId diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 8dae8694..72f4e895 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -47,6 +47,7 @@ Description: "Abstract class representing performance of any type of action." Description: "The point in time or span of time the participant is involved." Value: TimePeriod + Element: Method Concept: TBD Description: "The technique used to carry out an action, for example, the specific imaging technical or assessment vehicle." @@ -133,6 +134,7 @@ Description: "Abstract class representing a request for any type of action to b Description: "A choice of Practitioner or Device. Needed for mapping to FHIR." Value: ref(Practitioner) or ref(Device) + Abstract Element: ActionNotPerformed Based on: ActionStatement Description: "Abstract class representing non-performance of any type of action." diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 8bca360e..4d000c8a 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -63,8 +63,8 @@ Description: "An assertion, determination, opinion, evaluation, result, observat 0..1 Focus Element: Focus - Description: "The specific person or condition this resource relates to. The Focus is only required if the person or thing observed is different than the patient. Focus should not be an anatomical location. The focus for cancer progression would be the cancer condition. If the observed property is wound length, the focus would be an instance of a wound. In the case of an assertion of existence, the focus is the larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." - Value: ref(DomainResource) // or CodeableConcept or string or CodeableConcept or Identifier + Description: "The entity this condition or observation relates to, for example, a related person. The Focus is only required if the person or thing observed is different than the patient. Focus should not be an anatomical location. Examples: The focus for cancer progression would be the cancer condition; for wound length, an instance of a wound (a condition)." + Value: ref(DomainResource) or CodeableConcept // or string or Identifier Element: RelevantTime Concept: TBD @@ -90,15 +90,9 @@ For an Observation, the TopicCode describes the aspect or property of the subjec 0..1 Device 0..1 PanelMembers 0..1 ReferenceRange + Asserter value is type PersonOrOrganization //0..1 DeltaFlag -// TODO --- this is redundant with Asserter - Element: Observer - Concept: MTH#C0449416 - Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." - 1..1 ref(EntityOrRole) - 0..1 RelationshipToPersonOfRecord - Element: Interpretation Concept: MTH#C0420833 Description: "A clinical interpretation of a finding (applies to both assertions and observation)." @@ -215,7 +209,6 @@ Description: "An assertion of a condition being present or absent. TopicCode is type ConditionOrDiagnosisCode DataValue value is type CodeableConcept DataValue from PresentAbsentVS -0..* Identifier 0..1 Evidence Element: ConditionOrDiagnosisCode diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 1317f825..7f80b806 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -15,6 +15,7 @@ DomainResource maps to DomainResource: Metadata.Tag maps to meta.tag Composition maps to Composition: + Identifier maps to identifier TopicCode maps to type Section maps to section Section.DomainResource maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) @@ -25,6 +26,7 @@ Narrative maps to Narrative: NarrativeQualifier maps to status Observation maps to Observation: + Identifier maps to identifier Patient maps to subject // Asserter maps to performer TopicCode maps to code @@ -76,6 +78,7 @@ LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinitio ConditionPresent maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-condition: // dstu 2 change (different mapping target) + Identifier maps to identifier CreationDate maps to dateRecorded Asserter maps to asserter Patient maps to patient diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index dbf40a54..b2b3f4fd 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 //Entry maps to DomainResource: DomainResource maps to DomainResource: - _Entry.EntryId maps to id +// _Entry.EntryId maps to id Language maps to language Narrative maps to text Metadata.VersionId maps to meta.versionId @@ -17,6 +17,7 @@ DomainResource maps to DomainResource: Metadata.Tag maps to meta.tag Composition maps to Composition: + Identifier maps to identifier TopicCode maps to type Section maps to section Section.DomainResource maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) @@ -28,7 +29,9 @@ Narrative maps to Narrative: // do not map Observation to US Core Results -- Brett says that's only for labs Observation maps to Observation: // TODO: observationresults is only for labs + Identifier maps to identifier Patient maps to subject + Asserter maps to performer TopicCode maps to code Method maps to method CommentOrDescription maps to comment @@ -62,6 +65,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs ResourceStatus maps to status RelevantTime maps to effective[x] Encounter maps to context + Focus maps to extension // DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta NonLaboratoryObservation maps to Observation: @@ -71,6 +75,7 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us Specimen maps to specimen ConditionPresent maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: + Identifier maps to identifier CreationDate maps to assertedDate Asserter maps to asserter Patient maps to subject @@ -99,8 +104,8 @@ ConditionAbsent maps to Basic: Abnormal lung sounds absent? */ BodyStructurePresent maps to BodySite: - Patient maps to patient Identifier maps to identifier + Patient maps to patient TopicCode maps to extension BodySite.BodySiteCode maps to code BodySite.Laterality maps to qualifier (slice on = coding.code) diff --git a/spec/shr_encounter_map_dstu2.txt b/spec/shr_encounter_map_dstu2.txt index 469369d6..598f22b8 100644 --- a/spec/shr_encounter_map_dstu2.txt +++ b/spec/shr_encounter_map_dstu2.txt @@ -5,6 +5,7 @@ Target: FHIR_DSTU_2 Encounter maps to Encounter: // dstu 2 change (name change) + Identifier maps to identifier Patient maps to patient EncounterType maps to type // ServiceProvider maps to serviceProvider diff --git a/spec/shr_encounter_map_stu3.txt b/spec/shr_encounter_map_stu3.txt index d805efdd..7530e770 100644 --- a/spec/shr_encounter_map_stu3.txt +++ b/spec/shr_encounter_map_stu3.txt @@ -4,6 +4,7 @@ Target: FHIR_STU_3 Encounter maps to Encounter: + Identifier maps to identifier Patient maps to subject EncounterType maps to type // ServiceProvider maps to serviceProvider diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 0f8e9641..b1c73102 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -25,14 +25,14 @@ EntryElement: Patient Based on: Role Concept: MTH#C1299487 Description: "A person in the role of a patient." -1..1 ref(Person) +1..* Identifier +1..1 Person //0..* ref(ExternalHealthRecord) EntryElement: ExternalHealthRecord Based on: Entity // TODO: change to information item Concept: TBD Description: "A health record other than the current health record; may have been used to help populate the current record." -1..1 Identifier 1..1 AccessTime Element: AccessTime @@ -45,11 +45,13 @@ EntryElement: Practitioner Based on: Role Concept: MTH#C2220264 Description: "A person who practices a healing art." -1..1 ref(Person) +1..1 Person 0..1 ResourceStatus 1..1 Person.HumanName // only one (limitation imposed by us-core) // 0..* Affiliation // handled by ProviderRelationship in FHIR -1..1 NationalProviderIdentifier +1..* Identifier + Identifier +includes 1..1 NationalProviderIdentifier 0..* Qualification Element: Affiliation @@ -58,9 +60,9 @@ Description: "A person who practices a healing art." Value: Organization Element: NationalProviderIdentifier + Based on: Identifier Concept: MTH#C1549728 - Description: "A unique 10 digit number to allow US healthcare providers to identify themselves in a standard way throughout the healthcare industry." - Value: Identifier + Description: "NPI: a unique 10 digit number to allow US healthcare providers to identify themselves in a standard way throughout the healthcare industry." Element: Qualification Concept: MTH#C0037778 @@ -74,7 +76,7 @@ Description: "A person who practices a healing art." EntryElement: RelatedPerson Based on: Role Description: "A person in a role defined in relationship to a patient" -0..1 ref(Person) +0..1 Person 0..1 ResourceStatus 0..1 RelationshipToPersonOfRecord 0..1 EffectiveTimePeriod @@ -260,7 +262,6 @@ Description: "A type of prescription drug or over-the-counter drug that is used Value: CodeableConcept EntryElement: Person -Based on: Entity Concept: MTH#C0027361 Description: "A person relevant to the health or social situation of the subject (including the person of record him or herself)." 1..* HumanName @@ -484,7 +485,7 @@ Concept: MTH#C1561598 Description: "A social or legal structure formed by human beings." // Required attributes come from STU 3 mapping to us-core-organization 1..1 OrganizationName -1..* OrganizationIdentifier +1..* Identifier // cardinality constraint 0..1 Type could be from http://hl7.org/fhir/ValueSet/organization-type 1..* Address 1..* ContactPoint @@ -495,11 +496,6 @@ Description: "A social or legal structure formed by human beings." Concept: TBD Description: "The name of the organization." Value: string - - Element: OrganizationIdentifier - Based on: Identifier - Concept: TBD - Description: "An identifier of the organization. An NPI preferred, tax id is allowed, and a local id is allowed in addition to ‘authoritative’ identifier" EntryElement: Location @@ -557,7 +553,7 @@ Description: "A specimen is a substance, physical object, or collection of objec 0..1 CollectionSite 0..1 SourceSpecimen 0..1 ReceivedTime -0..* ref(SpecimenContainer) +0..* SpecimenContainer 0..* SpecimenTreatment 0..* HandlingRisk 0..* SpecialHandling @@ -608,12 +604,10 @@ Description: "A specimen is a substance, physical object, or collection of objec 0..* Additive -EntryElement: SpecimenContainer -Based on: Entity -Concept: TBD -Description: "Direct container of specimen (tube/slide, etc.)" +Element: SpecimenContainer +Description: "Direct container of specimen (slide, etc.)" +0..* Identifier 0..1 Type //"Kind of container holding the specimen - e.g. a vial or well." -0..1 Identifier 0..1 CommentOrDescription 0..1 Capacity 0..1 SpecimenQuantity diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index 62806a89..fb299d00 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -3,6 +3,7 @@ Namespace: shr.entity Target: FHIR_DSTU_2 Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient: // dstu 2 change (different mapping target) + Identifier maps to identifier ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender @@ -28,6 +29,7 @@ Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient // Deceased.DateOfDeath maps to deceased[x].dateTime Practitioner maps to Practitioner: // dstu 2 change (different mapping target) + Identifier maps to identifier ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender @@ -35,13 +37,13 @@ Practitioner maps to Practitioner: // dstu 2 change (different mapping target) Person.Address maps to address Person.ContactPoint maps to telecom Person.Communication.Language maps to communication - NationalProviderIdentifier maps to identifier Qualification maps to qualification Qualification.Type maps to qualification.code Qualification.EffectiveTimePeriod maps to qualification.period Qualification.Issuer maps to qualification.issuer RelatedPerson maps to RelatedPerson: + Identifier maps to identifier ResourceStatus maps to extension Person.HumanName maps to name Person.DateOfBirth maps to birthDate @@ -53,15 +55,16 @@ RelatedPerson maps to RelatedPerson: EffectiveTimePeriod maps to period Organization maps to Organization: + Identifier maps to identifier ResourceStatus maps to active OrganizationName maps to name Type maps to type - OrganizationIdentifier maps to identifier Address maps to address ContactPoint maps to telecom PartOf maps to partOf Group maps to Group: + Identifier maps to identifier ResourceStatus maps to extension Type maps to type Actual maps to actual @@ -77,6 +80,7 @@ Group maps to Group: Count maps to quantity Facility maps to Location: + Identifier maps to identifier ResourceStatus maps to status FacilityName maps to name Location[Address] maps to address @@ -88,6 +92,7 @@ Facility maps to Location: Type maps to type Substance maps to Substance: + Identifier maps to identifier ResourceStatus maps to status Type maps to code Ingredient maps to ingredient @@ -95,6 +100,7 @@ Substance maps to Substance: Ingredient.SubstanceOrCode[Substance] maps to ingredient.substance Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medication: + Identifier maps to extension ResourceStatus maps to status Type maps to code // dstu 2 change (different attribute) @@ -118,6 +124,7 @@ Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medi Package maps to package.container Specimen maps to Specimen: + Identifier maps to identifier ResourceStatus maps to status AccessionIdentifier maps to accessionIdentifier Type maps to type @@ -138,6 +145,7 @@ Specimen maps to Specimen: SpecimenContainer.Additive maps to container.additive[x] Device maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-device: + Identifier maps to identifier ResourceStatus maps to status Type maps to type // dstu 2 change (different attribute) diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index 2617103f..19f2ecb6 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -3,6 +3,7 @@ Namespace: shr.entity Target: FHIR_STU_3 Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: + Identifier maps to identifier ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender @@ -11,9 +12,9 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: Person.ContactPoint maps to telecom Person.Communication.Language maps to communication.language Person.Communication.Preferred maps to communication.preferred -// Person.Communication.SpokenLanguageProficiency maps to communication.extension -// Person.Communication.WrittenLanguageProficiency maps to communication.extension -// Person.Communication.LanguageQualifier maps to communication.extension + Person.Communication.SpokenLanguageProficiency maps to communication.extension + Person.Communication.WrittenLanguageProficiency maps to communication.extension + Person.Communication.LanguageQualifier maps to communication.extension Person.DateOfBirth maps to birthDate Person.MaritalStatus maps to maritalStatus // PlaceOfBirth maps to http://hl7.org/fhir/StructureDefinition/birthPlace @@ -28,6 +29,7 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: // Deceased.DateOfDeath maps to deceased[x].dateTime Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner: + Identifier maps to identifier ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender @@ -36,13 +38,13 @@ Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-pra Person.ContactPoint maps to telecom Person.Communication.Language maps to communication // Person.Communication.Preferred - NationalProviderIdentifier maps to identifier Qualification maps to qualification Qualification.Type maps to qualification.code Qualification.EffectiveTimePeriod maps to qualification.period Qualification.Issuer maps to qualification.issuer RelatedPerson maps to RelatedPerson: + Identifier maps to identifier ResourceStatus maps to active Person.HumanName maps to name Person.DateOfBirth maps to birthDate @@ -54,15 +56,16 @@ RelatedPerson maps to RelatedPerson: EffectiveTimePeriod maps to period Organization maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization: + Identifier maps to identifier ResourceStatus maps to active OrganizationName maps to name Type maps to type - OrganizationIdentifier maps to identifier Address maps to address ContactPoint maps to telecom PartOf maps to partOf Group maps to Group: + Identifier maps to identifier ResourceStatus maps to active Type maps to type Actual maps to actual @@ -78,6 +81,7 @@ Group maps to Group: Count maps to quantity Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-location: + Identifier maps to identifier FacilityName maps to name Location[Address] maps to address Location[Geoposition].Latitude maps to position.latitude @@ -88,6 +92,7 @@ Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-locatio Type maps to type Substance maps to Substance: + Identifier maps to identifier Type maps to code ResourceStatus maps to status Ingredient maps to ingredient @@ -95,6 +100,7 @@ Substance maps to Substance: Ingredient.SubstanceOrCode maps to ingredient.substance[x] Medication maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medication: + Identifier maps to extension Type maps to code DoseForm maps to form Ingredient.SubstanceOrCode maps to ingredient.item[x] @@ -109,6 +115,7 @@ Medication maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medic Package maps to package.container Specimen maps to Specimen: + Identifier maps to identifier AccessionIdentifier maps to accessionIdentifier ResourceStatus maps to status Type maps to type diff --git a/spec/shr_financial_map_dstu2.txt b/spec/shr_financial_map_dstu2.txt index a3cdcbde..c5ca8e74 100644 --- a/spec/shr_financial_map_dstu2.txt +++ b/spec/shr_financial_map_dstu2.txt @@ -5,6 +5,7 @@ Target: FHIR_DSTU_2 Coverage maps to Coverage: // dstu 2 change (no such attribute) + Identifier maps to identifier ResourceStatus maps to status CoverageType maps to type InsuranceMemberId maps to subscriberId diff --git a/spec/shr_financial_map_stu3.txt b/spec/shr_financial_map_stu3.txt index e55a1a0f..669c4b2e 100644 --- a/spec/shr_financial_map_stu3.txt +++ b/spec/shr_financial_map_stu3.txt @@ -4,6 +4,7 @@ Target: FHIR_STU_3 Coverage maps to Coverage: + Identifier maps to identifier ResourceStatus maps to status CoverageType maps to type InsuranceMemberId maps to subscriberId diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index 6cccf0e7..f10ed6ea 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -17,7 +17,7 @@ EntryElement: CourseOfTreatmentPerformed Based on: ProcedurePerformed // mlt: questionable to call CourseOfTreatment a procedure. It is modeled as a series of activities including medications administered and procedures. Description: "A series of coordinated treatment actions taken with a certain treatment intention." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - ProcedureCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" + TopicCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" 0..1 TreatmentIntent 0..1 LineOfTherapy 0..* MedicationStatement // mlt: to cover patient-asserted medications taken at home. @@ -44,7 +44,7 @@ EntryElement: RadiationProcedurePerformed Based on: ProcedurePerformed Description: "A radiation oncology procedure. If the treatment is part of a course of treatment, the PartOf attribute should indicate the CourseOfTreatment." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - ProcedureCode from RadiationProcedurePerformedVS + TopicCode from RadiationProcedurePerformedVS 0..1 RadiationDosePerFraction 0..1 RadiationFractionsDelivered 0..1 TotalRadiationDoseDelivered diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index f7bdfe74..6a8e8bde 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -71,6 +71,7 @@ Description: "Abstract class representing medication exposure, independent of wh 0..1 Dosage 0..0 Method // because of Dosage.Method + EntryElement: MedicationStatement Based on: MedicationExposure Concept: SCT#416608005 "Drug therapy (procedure)" // TODO: investigate whether we need a new code or use a drug concept. @@ -80,6 +81,9 @@ Description: "A record of the use of a medication. If the medication is given as 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category ResourceStatus from http://hl7.org/fhir/ValueSet/medication-statement-status 0..1 Reason // Upper cardinality imposed by DSTU 2 +0..0 Participation +0..0 Facility + RelatedRequest value is type ref(MedicationRequested) // or CarePlan or ProcedureRequest or ReferralRequest EntryElement: MedicationAdministered Based on: MedicationExposure diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index 50c638d0..0dce77c6 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -16,6 +16,7 @@ Dosage maps to Dosage: */ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationstatement: + Identifier maps to identifier Asserter maps to informationSource CreationDate maps to dateAsserted // slight semantic difference? Patient maps to patient @@ -45,6 +46,7 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ Dosage.MaximumDosePerTimePeriod maps to dosage.maxDosePerPeriod MedicationAdministered maps to MedicationAdministration: + Identifier maps to identifier Patient maps to patient // DSTU 2 change (name change) Encounter maps to encounter @@ -74,6 +76,7 @@ MedicationAdministered maps to MedicationAdministration: MedicationNotAdministered maps to MedicationAdministration: + Identifier maps to identifier constrain performer to 0..0 Medication maps to medication[x] // DSTU 2 change (no such attribute) @@ -87,6 +90,7 @@ MedicationNotAdministered maps to MedicationAdministration: MedicationRequested maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationorder: + Identifier maps to identifier Medication maps to medication[x] NumberOfRefillsAllowed maps to dispenseRequest.numberOfRepeatsAllowed QuantityPerDispense maps to dispenseRequest.quantity diff --git a/spec/shr_medication_map_stu3.txt b/spec/shr_medication_map_stu3.txt index 57733fa2..d292611e 100644 --- a/spec/shr_medication_map_stu3.txt +++ b/spec/shr_medication_map_stu3.txt @@ -14,6 +14,7 @@ Dosage maps to Dosage: MaximumDosePerTimePeriod maps to maxDosePerPeriod MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: + Identifier maps to identifier Asserter maps to informationSource CreationDate maps to dateAsserted Patient maps to subject @@ -26,8 +27,11 @@ MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c Reason maps to reasonCode OccurrenceTimeOrPeriod maps to effective[x] ResourceStatus maps to status + Encounter maps to context + RelatedRequest maps to basedOn MedicationAdministered maps to MedicationAdministration: + Identifier maps to identifier Patient maps to subject Encounter maps to context RelatedRequest maps to prescription @@ -45,6 +49,7 @@ MedicationAdministered maps to MedicationAdministration: Participation.OnBehalfOf maps to performer.onBehalfOf MedicationNotAdministered maps to MedicationAdministration: + Identifier maps to identifier constrain performer to 0..0 Medication maps to medication[x] Category maps to category @@ -55,6 +60,7 @@ MedicationNotAdministered maps to MedicationAdministration: MedicationRequested maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest: + Identifier maps to identifier Requester maps to requester Medication maps to medication[x] NumberOfRefillsAllowed maps to dispenseRequest.numberOfRepeatsAllowed diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 7c35818a..d431d524 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -35,7 +35,7 @@ Outside of ODH, the employment arrangement between an employer and a person (one DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" 0..0 ObservationComponent -0..0 FocalSubjectModifier +0..0 Focus EntryElement: RetirementDate Based on: SocialHistoryObservation @@ -47,7 +47,7 @@ Outside of ODH, a characterization of the employment arrangement between an empl TopicCode is LNC#87510-4 "Date of Retirement" 0..0 ObservationComponent 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. -0..0 FocalSubjectModifier +0..0 Focus EntryElement: CombatZonePeriod Based on: SocialHistoryObservation @@ -58,7 +58,7 @@ Value: TimePeriod TopicCode is LNC#87511-2 0..0 ObservationComponent 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. -0..0 FocalSubjectModifier // only patient +0..0 Focus EntryElement: UsualWork Based on: CodedSocialHistoryObservation @@ -69,6 +69,8 @@ Example: a person has worked for a total of 30 years as a 'secretary' (Occupatio Usual Work does not include work that was unpaid or voluntary." DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 TopicCode is LNC#21843-8 + Focus value is type CodeableConcept + Focus from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion // family member value set ObservationComponent includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration @@ -101,6 +103,8 @@ A person's job can be a social determinant of their health and information about At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." 0..0 DataValue 0..0 DataAbsentReason + Focus value is type CodeableConcept + Focus from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion TopicCode is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization ObservationComponent @@ -124,17 +128,13 @@ includes 0..1 IsCurrentJob Element: Employer Based on: Role - Concept: SCT#394571004 "Employer (person)" Description: "A person or organization that hires the services of another." - Value: ref(EmployerPerson) or ref(EmployerOrganization) + Value: ref(EmployerPerson) or ref(Organization) Element: EmployerPerson Description: "A related person who is an employer" 1..1 RelationshipToPersonOfRecord is V2#E - Element: EmployerOrganization - Description: "An Organization as defined in FHIR" - Element: PastOrPresentIndustry Based on: CodedObservationComponent Concept: LNC#86188-0 @@ -207,7 +207,6 @@ Element: SocialHistoryObservation Based on: Observation Description: "A simplified observation for social histories." Category is OBSCAT#social-history -0..1 FocalSubjectModifier 0..0 Method 0..0 BodySite 0..0 ReferenceRange @@ -220,12 +219,6 @@ Description: "A simplified observation for social histories." //0..0 DeltaFlag 0..0 CommentOrDescription - -// TODO: Use Focus - Element: FocalSubjectModifier - Description: "The focus of the observation, if someone other than the person of record (subject), identified only by the relationship to the Patient." - Value: RelationshipToPersonOfRecord - Element: CodedSocialHistoryObservation Based on: SocialHistoryObservation Description: "The result of social history questions, whose answer is expressed as a code." diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt index dddb40dd..2d82387d 100644 --- a/spec/shr_occupation_map_dstu2.txt +++ b/spec/shr_occupation_map_dstu2.txt @@ -3,6 +3,7 @@ Namespace: odh Target: FHIR_DSTU_2 SocialHistoryObservation maps to Observation: + Identifier maps to identifier Patient maps to subject TopicCode maps to code Category maps to category @@ -25,10 +26,5 @@ SocialHistoryObservation maps to Observation: constrain device to 0..0 constrain referenceRange to 0..0 -EmployerOrganization maps to Organization: - EmployerPerson maps to RelatedPerson: RelationshipToPersonOfRecord maps to relationship - -//FocalSubjectModifier maps to RelatedPerson: -// RelationshipToPersonOfRecord maps to relationship \ No newline at end of file diff --git a/spec/shr_occupation_map_stu3.txt b/spec/shr_occupation_map_stu3.txt index a24cfcad..6ccdf49c 100644 --- a/spec/shr_occupation_map_stu3.txt +++ b/spec/shr_occupation_map_stu3.txt @@ -4,6 +4,7 @@ Target: FHIR_STU_3 // do not map to US Core Results -- Brett says that's only for labs SocialHistoryObservation maps to Observation: + Identifier maps to identifier Patient maps to subject TopicCode maps to code Category maps to category @@ -28,10 +29,5 @@ SocialHistoryObservation maps to Observation: constrain device to 0..0 // constrain referenceRange to 0..0 -EmployerOrganization maps to Organization: - EmployerPerson maps to RelatedPerson: RelationshipToPersonOfRecord maps to relationship - -//FocalSubjectModifier maps to RelatedPerson: -// RelationshipToPersonOfRecord maps to relationship \ No newline at end of file diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 2a1a5cd5..d3dde8dc 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -9,7 +9,7 @@ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category EntryElement: ProcedurePerformed Based on: ActionPerformed Description: "A procedure that has been performed." -1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite 0..1 PartOf value is type ref(ProcedurePerformed) 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -26,10 +26,6 @@ Description: "A procedure that has been performed." RelatedRequest value is type ref(ProcedureRequested) //0..* OutputFinding // in CIMI, this is part of ProcedureTopic, but the definition hinges on performance, so it belongs here, not there. - Element: ProcedureCode - Concept: TBD - Description: "A code representing the procedure (not) requested or (not) performed." - Value: CodeableConcept Element: InputFinding Description: "Patient findings expected for the performance of the specified procedure. For instance, an x-ray of a fracture prior to a surgical procedure for a bone fracture." @@ -39,11 +35,6 @@ Description: "A procedure that has been performed." Description: "Conditions or situations where the procedure is recommended. In the Performed context, the actual indication should be reported." Value: CodeableConcept - Element: FHIRProcedureParticipant - Based on: Participant - Description: "Constraints participants to classes that are accepted by FHIR as actors in procedures in STU 3." - Value: ref(Practitioner) or ref(Organization) or ref(Patient) or ref(RelatedPerson) or ref(Device) - Element: OutputFinding Description: "Patient findings documented during the performance of the procedure." Value: ref(ConditionOrObservation) @@ -52,7 +43,7 @@ Description: "A procedure that has been performed." EntryElement: ProcedureNotPerformed Based on: ActionNotPerformed 0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason -1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite //0..1 PartOf value is type ref(ProcedurePerformed or Not Performed) ??? 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -65,7 +56,7 @@ Based on: ActionRequested PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) ResourceStatus from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) 0..1 Requester is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. -1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite 0..1 PartOf value is type ref(ProcedurePerformed) 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -79,7 +70,7 @@ Based on: ActionRequested EntryElement: ProcedureRequestedAgainst Based on: ActionRequestedAgainst -1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite @@ -102,7 +93,7 @@ EntryElement: LaboratoryProcedurePerformed Based on: ProcedurePerformed Concept: MTH#C0456984 Description: "A procedure performed on a collected specimen such as a blood panel or a biopsy." -1..1 ProcedureCode from http://hl7.org/fhir/ValueSet/observation-codes +1..1 TopicCode from http://hl7.org/fhir/ValueSet/observation-codes Category is OBSCAT#laboratory 0..1 ref(Specimen) //0..1 ref(Device) // constraint from 0..* @@ -112,7 +103,7 @@ EntryElement: SurgicalProcedurePerformed Based on: ProcedurePerformed Concept: TBD Description: "A surgical action, independent of action context." - ProcedureCode from SurgicalProcedureVS + TopicCode from SurgicalProcedureVS 0..* DirectSite 0..* DirectSiteCode 0..* IndirectSite @@ -190,5 +181,5 @@ Based on: ProcedurePerformed Description: "Diagnostic imaging procedure performed." Concept: SCT#363679005 "Imaging (procedure)" 0..0 Focus - ProcedureCode from DiagnosticImagingVS + TopicCode from DiagnosticImagingVS \ No newline at end of file diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 88788c08..eedaee8f 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -3,7 +3,8 @@ Namespace: shr.procedure Target: FHIR_DSTU_2 ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) - ProcedureCode maps to code + Identifier maps to identifier + TopicCode maps to code Patient maps to subject Category maps to category // DSTU 2 change (name change) @@ -37,7 +38,8 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) - ProcedureCode maps to code + Identifier maps to identifier + TopicCode maps to code Patient maps to subject Category maps to category // TODO the following is causing a crash @@ -68,9 +70,10 @@ SurgicalProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefi ProcedureRequested maps to ProcedureRequest: + Identifier maps to identifier CreationDate maps to orderedOn Requester maps to orderer - ProcedureCode maps to code + TopicCode maps to code // DSTU 2 change (no such attribute) // Category maps to category // DSTU 2 change (no such attribute) @@ -99,7 +102,7 @@ ProcedureRequestedAgainst maps to Basic: fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal // who is the requester? - ProcedureCode maps to code + TopicCode maps to code Category maps to category Patient maps to subject BodySite.BodySiteCode maps to bodySite diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index a1345e58..bd194df0 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -4,7 +4,8 @@ Target: FHIR_STU_3 ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: - ProcedureCode maps to code + Identifier maps to identifier + TopicCode maps to code Patient maps to subject Category maps to category constrain notDone to 0..0 @@ -29,7 +30,8 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: - ProcedureCode maps to code + Identifier maps to identifier + TopicCode maps to code Patient maps to subject Category maps to category // TODO the following is causing a crash @@ -59,9 +61,10 @@ SurgicalProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefiniti ProcedureRequested maps to ProcedureRequest: + Identifier maps to identifier CreationDate maps to authoredOn Requester maps to requester.agent - ProcedureCode maps to code + TopicCode maps to code Category maps to category constrain doNotPerform to 0..0 Patient maps to subject @@ -81,11 +84,12 @@ ProcedureRequested maps to ProcedureRequest: PriorityRank maps to priority ProcedureRequestedAgainst maps to ProcedureRequest: + Identifier maps to identifier fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal CreationDate maps to authoredOn // who is the requester? - ProcedureCode maps to code + TopicCode maps to code Category maps to category Patient maps to subject BodySite.BodySiteCode maps to bodySite diff --git a/spec/shr_research.txt b/spec/shr_research.txt index 9d856f7b..7afd70b6 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -54,6 +54,7 @@ Description: "A clinical trial or similar research study. Reference: list of FDA EntryElement: ResearchSubject Based on: Entity Description: "Record of a subject's enrollment and participation in a research study." +0..1 Identifier // cardinality constraint 1..1 ref(Patient) 1..1 ref(ResearchStudy) 1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/research-subject-status diff --git a/spec/shr_research_map_stu3.txt b/spec/shr_research_map_stu3.txt index 15a151ac..3a839239 100644 --- a/spec/shr_research_map_stu3.txt +++ b/spec/shr_research_map_stu3.txt @@ -5,8 +5,8 @@ Target: FHIR_STU_3 ResearchStudy maps to ResearchStudy: - Title maps to title Identifier maps to identifier + Title maps to title PartOf maps to partOf ResourceStatus maps to status Enrollment maps to enrollment @@ -23,6 +23,7 @@ ResearchStudy maps to ResearchStudy: StudyArm.CommentOrDescription maps to arm.description ResearchSubject maps to ResearchSubject: + Identifier maps to identifier Patient maps to individual ResearchStudy maps to study ResourceStatus maps to status From cb414ece56f667be6d985eec93005bf39631d084 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sun, 3 Feb 2019 13:07:08 -0500 Subject: [PATCH 180/289] Brought ObservationComponents in line with PanelMembers --- spec/shr_base_finding.txt | 12 +++++++++--- spec/shr_base_map_dstu2.txt | 10 +++++----- spec/shr_base_map_stu3.txt | 10 +++++----- spec/shr_brca.txt | 16 ++++++++-------- spec/shr_medication.txt | 2 +- spec/shr_occupation.txt | 7 ++++--- spec/shr_occupation_map_dstu2.txt | 10 +++++----- spec/shr_occupation_map_stu3.txt | 10 +++++----- spec/shr_tumor.txt | 4 ++-- spec/shr_wound.txt | 16 ++++++++-------- 10 files changed, 52 insertions(+), 45 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 4d000c8a..2d4d0fee 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -5,7 +5,7 @@ Uses: shr.core, shr.entity, shr.encounter Abstract Element: ObservationComponent -Description: "A finding that does not or cannot stand alone, or a component of another finding." +Description: "A sub-observation contributing to the parent observation, expressed as separate code value pairs that share the same attributes. Examples include systolic and diastolic component observations for blood pressure measurement and multiple component observations for genetics observations. Component observations share the same attributes in the Observation resource as the primary observation and are always treated a part of a single observation (they are not separable). However, the reference range for the primary observation value is not inherited by the component values and is required when appropriate for each component observation." // should an observation component have additional properties, such as protocol, circumstance, or interpretation? // how do we handle a normal? (physical exam normal) // exclusions? (diabetes excluded) @@ -81,15 +81,15 @@ Observation has a value representing the result (answer), or an DataAbsentReason For an Observation, the TopicCode describes the aspect or property of the subject being observed or measured. The TopicCode is the 'question code' that pairs to the 'answer' contained in the Value." 0..1 Method 0..1 RelevantTime -0..* ObservationComponent 1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 Category from http://hl7.org/fhir/ValueSet/observation-category if covered // MK Category cardinality from 0..* to 0..1 to be compatible with DSTU 2 0..1 BodySite 0..1 CommentOrDescription 0..1 Interpretation 0..1 Device -0..1 PanelMembers 0..1 ReferenceRange +0..1 Components +0..1 PanelMembers Asserter value is type PersonOrOrganization //0..1 DeltaFlag @@ -104,6 +104,12 @@ For an Observation, the TopicCode describes the aspect or property of the subjec Examples are the measurements that compose a complete blood count (CBC), or the elements of a pathology report. Each member is an independent evaluation, but the grouping reflects a composite lab order, shared specimen, or a single report author. Typically the Category and Reason are not given for individual findings that are part of the panel, but rather given at the level of the panel itself." 0..* ref(Observation) + Element: Components + Concept: TBD + Description: "Sub-observations that are part of this observation. A sub-observation contributs to the parent observation and are always treated a part of a single observation (they are not separable). However, the reference range for the primary observation value is not inherited by the component values and is required when appropriate for each component observation." + 0..* ref(ObservationComponent) + + /* commented out but it might need to come back, so please save Element: Precondition Concept: TBD diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 7f80b806..a049d0e4 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -50,13 +50,13 @@ Observation maps to Observation: // ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo // dstu 2 change (no such attribute) // ReferenceRange.ApplicableAgeRange maps to referenceRange.age - ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - ObservationComponent.TopicCode maps to component.code - ObservationComponent.DataValue maps to component.value[x] - ObservationComponent.DataAbsentReason maps to component.dataAbsentReason + Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) + Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.DataValue maps to component.value[x] + Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason // dstu 2 change (no such attribute) //ObservationComponent.Interpretation maps to component.interpretation - ObservationComponent.ReferenceRange maps to component.referenceRange + Components.ObservationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index b2b3f4fd..bbdf9d86 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -50,12 +50,12 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.Type maps to referenceRange.type ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age - ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - ObservationComponent.TopicCode maps to component.code - ObservationComponent.DataValue maps to component.value[x] - ObservationComponent.DataAbsentReason maps to component.dataAbsentReason + Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) + Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.DataValue maps to component.value[x] + Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation - ObservationComponent.ReferenceRange maps to component.referenceRange + Components.ObservationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) DataValue maps to value[x] diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 2676ba1d..a92ee7a1 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -89,7 +89,7 @@ Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (I TopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" 0..0 Method // pre-coordinated in the TopicCode Specimen is type BreastSpecimen - ObservationComponent + Components.ObservationComponent includes 0..1 CompleteMembraneStainingPercent 0..0 PanelMembers @@ -110,7 +110,7 @@ Description: "HER2 receptor status as determined by single-probe or dual-probe F Method from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS Specimen is type BreastSpecimen - ObservationComponent + Components.ObservationComponent includes 0..1 AverageHER2SignalsPerCell includes 0..1 AverageCEP17SignalsPerCell includes 0..1 HER2toCEP17Ratio @@ -142,7 +142,7 @@ The current approach is that positive/negative designation is a value, even thou TopicCode is LNC#16112-5 DataValue from PositiveNegativeVS Specimen is type BreastSpecimen - ObservationComponent + Components.ObservationComponent includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers @@ -155,7 +155,7 @@ Based on discussion with Cancer Interoperability Group subject matter experts, t TopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" DataValue from PositiveNegativeVS Specimen is type BreastSpecimen - ObservationComponent + Components.ObservationComponent includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers @@ -190,7 +190,7 @@ Description: "The Elston Grade/Nottingham Score, representative of the aggressiv DataValue from NottinghamCombinedGradeVS DataAbsentReason from NottinghamNullVS Specimen is type BreastSpecimen - ObservationComponent + Components.ObservationComponent includes 0..1 TubuleFormationScore includes 0..1 NuclearPleomorphismScore includes 0..1 MitoticCountScore @@ -364,7 +364,7 @@ includes 0..1 OtherReceptorScoringSystem Description: "Ki-67 is a protein phosphatase whose expression is strongly associated with cell proliferation and encoded by the MKI67 gene. The Ki67 labeling index is the fraction of Ki-67-positive cells to total cells in a tumor specimen and may be useful for determining prognosis with respect to survival and disease recurrence. The more positive cells there are, the more quickly they are dividing and forming new cells. ReferenceRange: Low <10, Intermediate 10-20, >20 High" Value: Quantity with units UCUM#% TopicCode is LNC#29593-1 - ObservationComponent + Components.ObservationComponent includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered Element: S-PhaseFraction @@ -383,7 +383,7 @@ Value: CodeableConcept from PositiveNegativeVS 0..0 ReferenceRange //0..0 DeltaFlag 0..0 BodySited - ObservationComponent + Components.ObservationComponent includes 0..1 Refseq Element: Refseq @@ -398,7 +398,7 @@ Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." Observation.TopicCode is TBD#TBD 0..0 ObservationComponent - PanelMembers.EvaluationresultRecorded + PanelMembers.Observation includes 1..1 BRCA1Variant includes 1..1 BRCA2Variant diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 6a8e8bde..6bb58668 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -109,7 +109,7 @@ Modeling note: MedicationAdherence could be attached to MedicationStatement dire DataValue from QualitativeFrequencyVS TopicCode is MTH#C2364172 1..1 Focus value is type ref(Medication) - ObservationComponent + Components.ObservationComponent includes 0..* MedicationNonAdherenceReason Element: MedicationNonAdherenceReason diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index d431d524..f5325590 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -71,7 +71,7 @@ Usual Work does not include work that was unpaid or voluntary." TopicCode is LNC#21843-8 Focus value is type CodeableConcept Focus from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion // family member value set - ObservationComponent + Components.ObservationComponent includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration 1..1 RelevantTime @@ -107,7 +107,7 @@ At a minimum, it is important to have a record of a person's current job(s); i.e Focus from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion TopicCode is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization - ObservationComponent + Components.ObservationComponent includes 0..1 Occupation includes 0..1 PastOrPresentIndustry includes 0..1 WorkClassification @@ -132,6 +132,7 @@ includes 0..1 IsCurrentJob Value: ref(EmployerPerson) or ref(Organization) Element: EmployerPerson + Based on: RelatedPerson Description: "A related person who is an employer" 1..1 RelationshipToPersonOfRecord is V2#E @@ -236,7 +237,7 @@ Based on: CodedSocialHistoryObservation Description: "History of service in the US military." Category is OBSCAT#social-history TopicCode is MTH#C3714797 - ObservationComponent + Components.ObservationComponent includes 1..1 MilitaryStatus includes 0..1 MilitaryServiceDischargeStatus includes 0..1 MilitaryBranch diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt index 2d82387d..cce53f2d 100644 --- a/spec/shr_occupation_map_dstu2.txt +++ b/spec/shr_occupation_map_dstu2.txt @@ -7,12 +7,12 @@ SocialHistoryObservation maps to Observation: Patient maps to subject TopicCode maps to code Category maps to category - ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - ObservationComponent.TopicCode maps to component.code - ObservationComponent.DataValue maps to component.value[x] - ObservationComponent.DataAbsentReason maps to component.dataAbsentReason + Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) + Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.DataValue maps to component.value[x] + Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation - ObservationComponent.ReferenceRange maps to component.referenceRange + Components.ObservationComponent.ReferenceRange maps to component.referenceRange DataValue maps to value[x] DataAbsentReason maps to dataAbsentReason RelevantTime maps to effective[x] diff --git a/spec/shr_occupation_map_stu3.txt b/spec/shr_occupation_map_stu3.txt index 6ccdf49c..ef1f47fc 100644 --- a/spec/shr_occupation_map_stu3.txt +++ b/spec/shr_occupation_map_stu3.txt @@ -8,12 +8,12 @@ SocialHistoryObservation maps to Observation: Patient maps to subject TopicCode maps to code Category maps to category - ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - ObservationComponent.TopicCode maps to component.code - ObservationComponent.DataValue maps to component.value[x] - ObservationComponent.DataAbsentReason maps to component.dataAbsentReason + Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) + Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.DataValue maps to component.value[x] + Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation - ObservationComponent.ReferenceRange maps to component.referenceRange + Components.ObservationComponent.ReferenceRange maps to component.referenceRange // constrain related to 0..0 DataValue maps to value[x] // DataAbsentReason maps to dataAbsentReason diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt index 015b58af..3df3051d 100644 --- a/spec/shr_tumor.txt +++ b/spec/shr_tumor.txt @@ -26,7 +26,7 @@ Concept: SCT#263605001 "Tumor size (observable entity)" Focus value is type ref(TumorPresent) TopicCode is SCT#263605001 "Tumor size (observable entity)" 0..0 PanelMembers - ObservationComponent + Components.ObservationComponent includes 0..1 TumorDimension1 includes 0..1 TumorDimension2 includes 0..1 TumorDimension3 @@ -68,7 +68,7 @@ Description: "The edge or border of the tissue removed in cancer surgery. The ma DataValue from PositiveNegativeVS TopicCode is MTH#C4086369 0..0 PanelMembers - ObservationComponent + Components.ObservationComponent includes 0..1 TumorMarginDescription includes 0..1 Cellularity // not sure this belongs here includes 0..1 PercentageInSituCarcinoma // not sure this belongs here diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 83a4fb11..71557a5c 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -123,7 +123,7 @@ Description: "Group of observations regarding the properties and severity of a w TopicCode is LNC#39135-9 0..0 ReferenceRange 0..* Media is type PhotographicImage // 72170-4 Photographic image [Media] - ObservationComponent + Components.ObservationComponent includes 0..1 WoundEpisode // very similar to Episodicity or ClinicalStatus, but value set is different. includes 0..1 WoundTrend includes 0..1 WoundPeriwoundDescription // 72301-5 Description of Periwound @@ -208,7 +208,7 @@ Description: "The appearance of the base (bed) of the wound, together with the p TopicCode is LNC#89254-7 0..0 BodySite // location is given by the wound assertion 0..0 Device - ObservationComponent + Components.ObservationComponent includes 1..1 WoundBedAppearance includes 1..1 WoundBedAppearancePercentage @@ -233,7 +233,7 @@ Description: "Color of part or all of the wound base (bed), and the percentage o TopicCode is TBD#TBD 0..0 BodySite // location is given by the wound assertion 0..0 Device - ObservationComponent + Components.ObservationComponent includes 1..1 WoundBedColor includes 1..1 WoundBedColorAreaPercentage @@ -260,7 +260,7 @@ Description: "The state of the tissue at the edge of the wound." TopicCode is LNC#89256-2 0..0 BodySite // location is given by the wound assertion 0..0 Device - ObservationComponent + Components.ObservationComponent includes 1..1 WoundEdgeDescription includes 0..1 WoundEdgeColor // LOINC:Is the entire edge of the wound described by one color? Or should it be by percentage, similar to the wound bed? @@ -286,7 +286,7 @@ Description: "A discharging blind-ended track that extends from the surface of a TopicCode is LNC#89257-0 0..0 BodySite // location is given by the wound assertion 0..0 Device - ObservationComponent + Components.ObservationComponent includes 0..1 WoundTunnelLength includes 0..1 WoundTunnelClockDirection @@ -316,7 +316,7 @@ Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage aro 1..1 WoundIdentifier 0..0 BodySite // location is given by the wound assertion 0..0 Device - ObservationComponent + Components.ObservationComponent includes 0..1 WoundUnderminingLength includes 0..1 WoundUnderminingClockDirection @@ -342,7 +342,7 @@ Description: "Description of the fluid produced by a wound." 1..1 WoundIdentifier 0..0 BodySite // location is given by the wound assertion 0..0 Device - ObservationComponent + Components.ObservationComponent includes 0..1 WoundExudateAmount includes 0..1 WoundExudateVolume includes 1..1 WoundExudateAppearance @@ -392,7 +392,7 @@ Description: "The estimated or measured dimensions of a wound." 1..1 WoundIdentifier 0..0 BodySite // location is given by the wound assertion 0..0 Device - ObservationComponent + Components.ObservationComponent includes 1..1 WoundLength includes 1..1 WoundWidth includes 0..1 WoundDepth From 3aab2b5dc8554874535385fa825674f2d13fb4cb Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sun, 3 Feb 2019 14:39:50 -0500 Subject: [PATCH 181/289] Aligned Code with FHIR --- spec/ig-shr-config.json | 2 +- spec/shr_adverse.txt | 3 ++- spec/shr_adverse_map_dstu2.txt | 2 +- spec/shr_adverse_map_stu3.txt | 2 +- spec/shr_allergy.txt | 28 ++++++------------------ spec/shr_allergy_map_dstu2.txt | 16 ++------------ spec/shr_allergy_map_stu3.txt | 2 +- spec/shr_base.txt | 5 ----- spec/shr_base_finding.txt | 29 ++++++++++++------------- spec/shr_base_map_dstu2.txt | 10 ++++----- spec/shr_base_map_stu3.txt | 10 ++++----- spec/shr_brca.txt | 36 +++++++++++++++---------------- spec/shr_core.txt | 12 ++++++----- spec/shr_core_map_dstu2.txt | 8 +++---- spec/shr_core_map_stu3.txt | 10 ++++----- spec/shr_core_vs.txt | 8 +++---- spec/shr_entity_map_dstu2.txt | 6 +++--- spec/shr_entity_map_stu3.txt | 5 +++-- spec/shr_familyhistory.txt | 2 +- spec/shr_genetics.txt | 8 +++---- spec/shr_intervention.txt | 4 ++-- spec/shr_medication.txt | 4 ++-- spec/shr_occupation.txt | 32 +++++++++++++-------------- spec/shr_occupation_map_dstu2.txt | 4 ++-- spec/shr_occupation_map_stu3.txt | 4 ++-- spec/shr_oncocore.txt | 8 +++---- spec/shr_oncocore_stage.txt | 20 ++++++++--------- spec/shr_procedure.txt | 14 ++++++------ spec/shr_procedure_map_dstu2.txt | 8 +++---- spec/shr_procedure_map_stu3.txt | 8 +++---- spec/shr_tumor.txt | 14 ++++++------ spec/shr_wound.txt | 20 ++++++++--------- 32 files changed, 158 insertions(+), 186 deletions(-) diff --git a/spec/ig-shr-config.json b/spec/ig-shr-config.json index ae16aba0..bdb258ac 100644 --- a/spec/ig-shr-config.json +++ b/spec/ig-shr-config.json @@ -20,7 +20,7 @@ }, "filterStrategy": { - "filter": false, + "filter": false }, "publisher": "The MITRE Corporation: Standard Health Record Collaborative", "contact": [ diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt index bd6660e6..cdeddd67 100644 --- a/spec/shr_adverse.txt +++ b/spec/shr_adverse.txt @@ -16,6 +16,7 @@ Description: "A record of an untoward or unexpected event in a patient under tre Recorder value is type PatientOrPractitionerOrRelatedPerson 1..1 Patient 1..1 OccurrenceTime +0..1 Type from MedDRAVS 1..1 Seriousness from SeriousnessVS // to be replaced with http://hl7.org/fhir/ValueSet/adverse-event-seriousness in FHIR 4 //0..1 TBD "PatternOfEvent" // from STDM 0..1 Outcome from http://hl7.org/fhir/ValueSet/adverse-event-outcome @@ -24,7 +25,7 @@ Description: "A record of an untoward or unexpected event in a patient under tre 0..* CausalAttribution 0..* ActionTaken 0..1 AssociatedStudy - TopicCode from MedDRAVS + Element: Seriousness Concept: MTH#C2985911 diff --git a/spec/shr_adverse_map_dstu2.txt b/spec/shr_adverse_map_dstu2.txt index 79184205..752178ce 100644 --- a/spec/shr_adverse_map_dstu2.txt +++ b/spec/shr_adverse_map_dstu2.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: Identifier maps to identifier Recorder maps to recorder -// Type maps to type // TOPIC CODE??? Type doesn't exist in AdverseEvent + Type maps to event CommentOrDescription maps to description Patient maps to subject AssociatedStudy maps to study diff --git a/spec/shr_adverse_map_stu3.txt b/spec/shr_adverse_map_stu3.txt index 155f8a23..bbc459e9 100644 --- a/spec/shr_adverse_map_stu3.txt +++ b/spec/shr_adverse_map_stu3.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: Identifier maps to identifier Recorder maps to recorder -// Type maps to type // TOPIC CODE??? + Type maps to extension CommentOrDescription maps to description Patient maps to subject AssociatedStudy maps to study diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index 22014419..abfc7eeb 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -18,11 +18,10 @@ Description: "A finding related to the presence of an individual's risk or sensi 1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status 0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status 0..0 Focus // always the patient -1..1 TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" -1..1 DataValue // from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered // DSTU 2 change different required value sets) +1..1 DataValue from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered // DSTU 2 change different required value sets) 0..1 SubstanceCategory // DSTU 2 change (restrict upper cardinality to 1) 0..1 Onset -0..1 AllergyIntoleranceType +0..1 Type from http://hl7.org/fhir/ValueSet/allergy-intolerance-type 0..1 Criticality 0..1 MostRecentOccurrenceTime 0..* AllergyIntoleranceReaction @@ -32,10 +31,6 @@ Description: "A finding related to the presence of an individual's risk or sensi Description: "Categorization of the risk substance as a food, drug, or environmental agent. For difficult-to-classify substances, one can leave this field empty or choose the most typical category." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/allergy-intolerance-category // change to code? - Element: AllergyIntoleranceType - Description: "Whether the sensitivity is an allergy or intolerance, in other words, high level information on the mechanism of the adverse reaction." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/allergy-intolerance-type - Element: MostRecentOccurrenceTime Description: "The time of the last or latest of a series of events." Value: dateTime @@ -58,15 +53,6 @@ Description: "A finding related to the presence of an individual's risk or sensi /* Probably the most consistent way to define the absence (no known) allergy is to use an absence assertion, but this is not the way US Core has decided to go. Comments here are for reference only. - -EntryElement: AllergyIntoleranceAbsent -Based on: ConditionAbsent -Description: "Used to record that a particular substance or class of substances does not pose a known elevated risk to the subject. The certainly of absence is always 'no known' because definitively ruling out an allergy intolerance is not possible." - TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" // We don't use a code that represents the absence of the condition and whose DataValue would therefore be true or false (rather than present/absent) -1..1 AllergenIrritant -0..* SubstanceCategory -1..1 Certainty is SCT#443508001 "No history of clinical finding in subject (situation)" // no known - EntryElement: NoKnownDrugAllergy Based on: AllergyIntoleranceAbsent @@ -96,9 +82,9 @@ Description: "Statement expressings no known allergies or hypersensitivity to an 0..0 SubstanceCategory -// TopicCode from NoKnownAllergyVS -// TopicCode is SCT#716186003 "No known allergy (situation)" -// TopicCode is SCT#428607008 "No known environmental allergy (situation)" -// TopicCode is SCT#429625007 "No known food allergy (situation)" -// TopicCode is SCT#409137002 "No known drug allergy (situation)" +// DataValue from NoKnownAllergyVS +// DataValue is SCT#716186003 "No known allergy (situation)" +// DataValue is SCT#428607008 "No known environmental allergy (situation)" +// DataValue is SCT#429625007 "No known food allergy (situation)" +// DataValue is SCT#409137002 "No known drug allergy (situation)" */ \ No newline at end of file diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index 77b58e4b..7db84a87 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -10,7 +10,7 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a Recorder maps to recorder CreationDate maps to assertedDate DataValue maps to substance - AllergyIntoleranceType maps to type + Type maps to type SubstanceCategory maps to category ResourceStatus maps to status Criticality maps to criticality @@ -26,19 +26,7 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a AllergyIntoleranceReaction.CommentOrDescription maps to reaction.description /* -NoAdverseSensitivityToSubstance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: - Patient maps to patient - Asserter maps to asserter - Recorder maps to recorder - CreationDate maps to assertedDate - AdverseSensitivityTopic.TopicCode maps to code - constrain type to 0..0 - constrain category to 0..0 - constrain clinicalStatus to 0..0 - constrain criticality to 0..0 - constrain onset[x] to 0..0 - constrain lastOccurrence to 0..0 - constrain reaction to 0..0 + NoKnownAllergy maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: constrain clinicalStatus to 0..0 diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index 1b490d6c..a1d8a5b0 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -9,7 +9,7 @@ AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Recorder maps to recorder CreationDate maps to assertedDate DataValue maps to code - TopicCode maps to type + Type maps to type SubstanceCategory maps to category ResourceStatus maps to verificationStatus ClinicalStatus maps to clinicalStatus diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 534cf7c0..6fe5c521 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -54,15 +54,10 @@ Description: "Parent class for any item in clinical or administrative health-rel Abstract Element: DomainResource Based on: Resource Description: "Parent class for any item in clinical or administrative health-related system. A DomainResource can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." -1..1 TopicCode 0..1 Narrative 0..1 ResourceStatus 0..* Identifier - Element: TopicCode - Description: "A code describing what the domain resource concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist (present) or not exist (absent)." - Value: CodeableConcept - Element: Narrative Concept: TBD Description: "A human-readable narrative, potentially including images, that contains a summary of the resource, and may be used to represent the content of the resource to a human." diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 2d4d0fee..f7fb5d93 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -9,7 +9,7 @@ Description: "A sub-observation contributing to the parent observation, express // should an observation component have additional properties, such as protocol, circumstance, or interpretation? // how do we handle a normal? (physical exam normal) // exclusions? (diabetes excluded) -1..1 TopicCode +1..1 Code 0..1 DataValue 0..1 DataAbsentReason 0..1 ReferenceRange @@ -57,7 +57,7 @@ Description: "A non-independent finding whose result is a quantity." Abstract Element: ConditionOrObservation Based on: ClinicalStatement Description: "An assertion, determination, opinion, evaluation, result, observation, or measurement made by a person or device." -1..1 TopicCode // cardinality constraint on existing property +1..1 Code // cardinality constraint on existing property 0..1 DataValue 0..1 DataAbsentReason 0..1 Focus @@ -78,7 +78,7 @@ Based on: ConditionOrObservation Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an DataAbsentReason indicating why the value is not present. The Focus can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments. -For an Observation, the TopicCode describes the aspect or property of the subject being observed or measured. The TopicCode is the 'question code' that pairs to the 'answer' contained in the Value." +For an Observation, the Code describes the aspect or property of the subject being observed or measured. The Code is the 'question code' that pairs to the 'answer' contained in the Value." 0..1 Method 0..1 RelevantTime 1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/observation-status @@ -108,7 +108,7 @@ For an Observation, the TopicCode describes the aspect or property of the subjec Concept: TBD Description: "Sub-observations that are part of this observation. A sub-observation contributs to the parent observation and are always treated a part of a single observation (they are not separable). However, the reference range for the primary observation value is not inherited by the component values and is required when appropriate for each component observation." 0..* ref(ObservationComponent) - + /* commented out but it might need to come back, so please save Element: Precondition @@ -165,7 +165,7 @@ Description: "An observation with components, but without a result value or pane EntryElement: LaboratoryObservation Based on: Observation Description: "A coded finding based on a specimen collected from a patient." - TopicCode from LaboratoryCodeVS if covered + Code from LaboratoryCodeVS if covered 1..1 Category // MK changed from 1..* to 1..1 to be compatible with DSTU 2 1..1 Patient 0..1 Specimen @@ -211,17 +211,12 @@ Description: "A panel that does not have an overall value that summarizes the en Abstract Element: ConditionPresentOrAbsent Based on: ConditionOrObservation Description: "An assertion of a condition being present or absent. -'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble. The TopicCode represents the condition asserted to exist or not exist. DataAbsentReason can represent the case where the presence or absence of something was not evaluated." - TopicCode is type ConditionOrDiagnosisCode +'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble. The Code represents the condition asserted to exist or not exist. DataAbsentReason can represent the case where the presence or absence of something was not evaluated." + Code from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make the binding weaker because US Core requires an extensible binding DataValue value is type CodeableConcept DataValue from PresentAbsentVS 0..1 Evidence - Element: ConditionOrDiagnosisCode - Based on: TopicCode - Description: "A specific code for the condition being determined to be present or absent." - Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make the binding weaker because US Core requires an extensible binding - Element: Evidence Description: "Supporting evidence / manifestations that are the basis of the Condition's verification status, such as evidence that confirmed or refuted the condition." 0..* Manifestation @@ -231,7 +226,6 @@ Description: "An assertion of a condition being present or absent. Description: "Clinical symptoms/signs." Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/clinical-findings - EntryElement: ConditionPresent Based on: ConditionPresentOrAbsent Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." @@ -334,7 +328,7 @@ EntryElement: ClinicalNote Based on: SimpleNonLaboratoryObservation Concept: MTH#C0747978 "Progress Note" Description: "An entry concerning a patient where the result is a narrative text. While all findings have a CommentOrDescription field, the clinical note should put the narrative in the DataValue field, since this is the first place to look for a result that is a narrative." - TopicCode is MTH#C0747978 "Progress Note" + Code is MTH#C0747978 "Progress Note" DataValue value is type string 0..0 ReferenceRange 1..1 Patient @@ -342,10 +336,15 @@ Description: "An entry concerning a patient where the result is a narrative text EntryElement: BodyStructurePresent Based on: ConditionPresent -Description: "A body structure such as wound or tumor, observed to be present in a patient. The body structure is a condition that persists over time. The TopicCode will represent the body structure, and the BodySiteCode the location of that structure. This corresponds to FHIR R4, where the BodyStructure resource has morphology (corresponding to TopicCode) and location (corresponding to BodySite.BodySiteCode). For example, the TopicCode could be blunt force injury (SCT 3821009) and location left knee." +Description: "A body structure such as wound or tumor, observed to be present in a patient. The body structure is a condition that persists over time. The Code will represent the body structure, and the BodySiteCode the location of that structure. This corresponds to FHIR R4, where the BodyStructure resource has morphology (corresponding to Code) and location (corresponding to BodySite.BodySiteCode). For example, the Code could be blunt force injury (SCT 3821009) and location left knee." 1..1 Patient 0..1 BodySite +0..1 Morphology 0..1 RelevantTime 0..0 Focus 0..0 ReferenceRange 0..0 DataAbsentReason + + Element: Morphology + Description: "The kind of structure being represented by the body structure at BodyStructure.location. This can define both normal and abnormal morphologies." + Value: CodeableConcept \ No newline at end of file diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index a049d0e4..a60729da 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -16,7 +16,7 @@ DomainResource maps to DomainResource: Composition maps to Composition: Identifier maps to identifier - TopicCode maps to type + Type maps to type Section maps to section Section.DomainResource maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) Section.Section maps to section.section @@ -29,7 +29,7 @@ Observation maps to Observation: Identifier maps to identifier Patient maps to subject // Asserter maps to performer - TopicCode maps to code + Code maps to code Method maps to method // dstu 2 change (name change) CommentOrDescription maps to comments @@ -51,7 +51,7 @@ Observation maps to Observation: // dstu 2 change (no such attribute) // ReferenceRange.ApplicableAgeRange maps to referenceRange.age Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason // dstu 2 change (no such attribute) @@ -84,7 +84,7 @@ ConditionPresent maps to http://fhir.org/guides/argonaut/StructureDefinition/arg Patient maps to patient Category maps to category Identifier maps to identifier - TopicCode maps to code + Code maps to code BodySite.BodySiteCode maps to bodySite BodySite.Laterality maps to bodySite.extension BodySite.AnatomicalDirection maps to bodySite.extension @@ -107,7 +107,7 @@ ConditionAbsent maps to Basic: BodyStructurePresent maps to BodySite: Patient maps to patient Identifier maps to identifier - TopicCode maps to extension + Morphology maps to extension BodySite.BodySiteCode maps to code // dstu 2 change (modifier <-> qualifier) BodySite.Laterality maps to modifier (slice on = coding.code) diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index bbdf9d86..567e24b3 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -18,7 +18,7 @@ DomainResource maps to DomainResource: Composition maps to Composition: Identifier maps to identifier - TopicCode maps to type + Type maps to type Section maps to section Section.DomainResource maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) Section.Section maps to section.section @@ -32,7 +32,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs Identifier maps to identifier Patient maps to subject Asserter maps to performer - TopicCode maps to code + Code maps to code Method maps to method CommentOrDescription maps to comment Category maps to category @@ -51,7 +51,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation @@ -81,7 +81,7 @@ ConditionPresent maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core Patient maps to subject Category maps to category Identifier maps to identifier - TopicCode maps to code + Code maps to code BodySite.BodySiteCode maps to bodySite BodySite.Laterality maps to bodySite.extension BodySite.AnatomicalDirection maps to bodySite.extension @@ -106,7 +106,7 @@ Abnormal lung sounds absent? */ BodyStructurePresent maps to BodySite: Identifier maps to identifier Patient maps to patient - TopicCode maps to extension + Morphology maps to extension BodySite.BodySiteCode maps to code BodySite.Laterality maps to qualifier (slice on = coding.code) BodySite.AnatomicalDirection maps to qualifier diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index a92ee7a1..902278d3 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -40,7 +40,7 @@ EntryElement: BreastCancerDisorderPresent Based on: CancerDisorderPresent Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." - TopicCode from BreastCancerTypeVS + Code from BreastCancerTypeVS StageInformation.StageDetail value is type BreastCancerStagePanel 0..1 Evidence.Manifestation should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding BodySite is type BreastSite @@ -56,7 +56,7 @@ EntryElement: BreastCancerStagePanel Based on: CancerStagePanel Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. Description: "The stage of a breast cancer. The panel should not include both a DCISNuclearGrade and a BreastCancerHistologicGrade, since the latter implies an invasive cancer." - TopicCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" + Code is MTH#C2216702 "Malignant Neoplasm of Breast Staging" PanelMembers.Observation includes 0..1 HER2ReceptorStatus includes 0..1 EstrogenReceptorStatus @@ -70,9 +70,9 @@ Based on: TumorMarkerObservation Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." DataValue value is type CodeableConcept DataValue from PositiveNegativeEquivocalVS - TopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" + Code is LNC#48676-1 "HER2 [Interpretation] in Tissue" Specimen is type BreastSpecimen -0..0 Method // pre-coordinated in the TopicCode +0..0 Method // pre-coordinated in the Code 0..0 ObservationComponent PanelMembers.Observation includes 0..* HER2byIHC @@ -86,8 +86,8 @@ Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (I DataValue from HER2byIHCScoreVS DataAbsentReason from HER2byIHCScoreNullVS Interpretation from PositiveNegativeEquivocalVS - TopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" -0..0 Method // pre-coordinated in the TopicCode + Code is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" +0..0 Method // pre-coordinated in the Code Specimen is type BreastSpecimen Components.ObservationComponent includes 0..1 CompleteMembraneStainingPercent @@ -106,7 +106,7 @@ Based on: TumorMarkerObservation Description: "HER2 receptor status as determined by single-probe or dual-probe Fluorescence In Situ Hybridization (FISH)." 0..0 DataValue 0..0 DataAbsentReason - TopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" + Code is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" Method from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS Specimen is type BreastSpecimen @@ -139,7 +139,7 @@ Based on: CodedLaboratoryObservation Concept: LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" Description: "Estrogen receptor alpha is the predominant estrogen receptor expressed in breast tissue and is overexpressed in around 50% of breast carcinomas. ER status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options. The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." - TopicCode is LNC#16112-5 + Code is LNC#16112-5 DataValue from PositiveNegativeVS Specimen is type BreastSpecimen Components.ObservationComponent @@ -152,7 +152,7 @@ Based on: CodedLaboratoryObservation Concept: LNC#16113-3 Description: "Progesterone receptor status is a factor in determining prognosis and treatment options. The value is the percentage of cells that test (stain) positive for the presence of a receptor. The interpretation of positive or negative (found in the interpretation property) is based on the staining percentage, and may take into account the staining intensity. Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." - TopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" + Code is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" DataValue from PositiveNegativeVS Specimen is type BreastSpecimen Components.ObservationComponent @@ -179,14 +179,14 @@ Based on: SimpleCodedLaboratoryObservation Description: "An evaluation of the size and shape of the nucleus in tumor cells and the percentage of tumor cells that are in the process of dividing or growing. Cancers with low nuclear grade grow and spread less quickly than cancers with high nuclear grade." DataValue from NuclearGradeVS Specimen is type BreastSpecimen - TopicCode is MTH#C18513 + Code is MTH#C18513 EntryElement: BreastCancerHistologicGrade Concept: LNC#44648-4 Based on: CancerHistologicGrade Description: "The Elston Grade/Nottingham Score, representative of the aggressive potential of the tumor. Well differentiated cells (Grade 1) look similar to normal cells and are usually slow growing, while poorly differentiated cells (Grade 3) look very different than normal and are fast-growing." - TopicCode is LNC#44648-4 + Code is LNC#44648-4 DataValue from NottinghamCombinedGradeVS DataAbsentReason from NottinghamNullVS Specimen is type BreastSpecimen @@ -225,7 +225,7 @@ Concept: MTH#C1709318 Description: "The Oncotype DX test for invasive breast cancer examines the activity of 21 genes in a patient’s breast tumor tissue to provide personalized information for tailoring treatment based on the biology of their individual disease. The value from 0 to 100 indicates the estimated risk of recurrence, with the highest risk indicated by a score greater than 31. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" DataValue value is type IntegerQuantity - TopicCode is MTH#C1709318 + Code is MTH#C1709318 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type ref(BreastSpecimen) @@ -236,7 +236,7 @@ Concept: MTH#C3898101 Description: "The Oncotype DX test for DCIS (Ductal Carcinoma in Situ) breast cancer. Risk scores range from 0 to 100 with the following interpretations: 0-38: Low-Risk, 39-54: Intermediate-Risk, 55+: High-Risk. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" DataValue value is type IntegerQuantity - TopicCode is MTH#C3898101 + Code is MTH#C3898101 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type BreastSpecimen @@ -246,7 +246,7 @@ Concept: LNC#76544-6 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Prosigna. The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Risk of Recurrence Score in the literature), which is correlated with the probability of distant recurrence at ten years for post-menopausal women with hormone receptor positive, early stage breast cancer." DataValue value is type IntegerQuantity - TopicCode is LNC#76544-6 + Code is LNC#76544-6 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type BreastSpecimen @@ -257,7 +257,7 @@ Description: "Breast cancer genomic signature assay for 10-year risk of distant In the United States, MammaPrint can only be used on cancers that are stage I or stage II, invasive, smaller than 5 centimeters, and estrogen-receptor-positive or -negative. Scores range from -1.0 to +1.0, with scores less than 0 indicating high risk, and scores greater than 0 indicating low risk. The is currently no LOINC code for Mammaprint test." DataValue value is type Quantity - TopicCode is MTH#C2827401 + Code is MTH#C2827401 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type BreastSpecimen @@ -363,7 +363,7 @@ includes 0..1 OtherReceptorScoringSystem Concept: MTH#C4049944 Description: "Ki-67 is a protein phosphatase whose expression is strongly associated with cell proliferation and encoded by the MKI67 gene. The Ki67 labeling index is the fraction of Ki-67-positive cells to total cells in a tumor specimen and may be useful for determining prognosis with respect to survival and disease recurrence. The more positive cells there are, the more quickly they are dividing and forming new cells. ReferenceRange: Low <10, Intermediate 10-20, >20 High" Value: Quantity with units UCUM#% - TopicCode is LNC#29593-1 + Code is LNC#29593-1 Components.ObservationComponent includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered @@ -372,7 +372,7 @@ includes 0..1 OtherReceptorScoringSystem Concept: MTH#C0812425 Description: "An expression of the number of mitoses found in a stated number of cells. The S-phase fraction number tells you what percentage of cells in the tissue sample are in the process of copying their genetic information (DNA). This S-phase, short for synthesis phase, happens just before a cell divides into two new cells. ReferenceRange: Low <6, Intermediate 6-10, >10 High." Value: Quantity with units UCUM#% - TopicCode is LNC#29593-1 + Code is LNC#29593-1 EntryElement: GeneticVariant Based on: Observation @@ -396,7 +396,7 @@ EntryElement: BreastCancerGeneticAnalysisObservation Concept: TBD Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." - Observation.TopicCode is TBD#TBD + Observation.Code is TBD#TBD 0..0 ObservationComponent PanelMembers.Observation includes 1..1 BRCA1Variant diff --git a/spec/shr_core.txt b/spec/shr_core.txt index a781557c..f87ea3fc 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -34,7 +34,7 @@ Description: "A quantity with units, whose value may be bounded from above or be Element: Units Concept: TBD - Description: "Code for the unit of measure of the quantity." + Description: "The unit of measure of the quantity." Value: Coding should be from AllUnitsVS Element: SimpleQuantity @@ -74,16 +74,15 @@ Description: "Representation of an amount of currency or monetary value." Element: Coding Concept: MTH#C0805701 Description: "Coding of a concept, drawn from a controlled vocabulary. Includes the vocabulary and version, if applicable. May include a display text, and a descriptor expressing the intended interpretation of the code." -0..1 Code +0..1 CodeValue 0..1 CodeSystem 0..1 CodeSystemVersion 0..1 DisplayText - Element: Code - Description: "A coded value." + Element: CodeValue + Description: "A coded value, in syntax defined by the system" Value: code - /* TODO: Suggest changing FHIR's Coding.userSelected to Coding.qualifier Element: CodingQualifier @@ -107,6 +106,9 @@ Description: "A set of codes drawn from different coding systems, representing t 0..* Coding 0..1 DisplayText +Element: Code +Description: "The main identifier for the lab, procedure, condition, etc." +Value: CodeableConcept Element: Range Concept: TBD diff --git a/spec/shr_core_map_dstu2.txt b/spec/shr_core_map_dstu2.txt index 45844e6c..83f3bfa3 100644 --- a/spec/shr_core_map_dstu2.txt +++ b/spec/shr_core_map_dstu2.txt @@ -5,7 +5,7 @@ Target: FHIR_DSTU_2 // Code types map direction to FHIR Coding maps to Coding: - Code maps to code + CodeValue maps to code CodeSystem maps to system CodeSystemVersion maps to version DisplayText maps to display @@ -16,7 +16,7 @@ CodeableConcept maps to CodeableConcept: Quantity maps to Quantity: Number maps to value - Units.Coding.Code maps to code + Units.Coding.CodeValue maps to code Units.Coding.CodeSystem maps to system Units.Coding.DisplayText maps to unit Comparator maps to comparator @@ -88,10 +88,10 @@ Timing maps to Timing: TimingCode maps to code EventDuration.DurationRange.LowerBound.SimpleQuantity.Number maps to repeat.duration EventDuration.DurationRange.UpperBound.SimpleQuantity.Number maps to repeat.durationMax - EventDuration.DurationRange.LowerBound.SimpleQuantity.Units.Coding.Code maps to repeat.durationUnits // dstu 2 change (attribute name) + EventDuration.DurationRange.LowerBound.SimpleQuantity.Units.Coding.CodeValue maps to repeat.durationUnits // dstu 2 change (attribute name) RecurrencePattern.RecurrenceInterval.Duration.Number maps to repeat.period // dstu 2 change (attribute name) - RecurrencePattern.RecurrenceInterval.Duration.Units.Coding.Code maps to repeat.periodUnits + RecurrencePattern.RecurrenceInterval.Duration.Units.Coding.CodeValue maps to repeat.periodUnits constrain repeat.periodMax to 0..0 // TODO: why? // RecurrencePattern.DayOfWeek maps to repeat.dayOfWeek // dstu 2 change (no such attribute) // RecurrencePattern.TimeOfDay maps to repeat.timeOfDay // dstu 2 change (no such attribute) diff --git a/spec/shr_core_map_stu3.txt b/spec/shr_core_map_stu3.txt index ff2a20ac..6d5a706a 100644 --- a/spec/shr_core_map_stu3.txt +++ b/spec/shr_core_map_stu3.txt @@ -3,9 +3,9 @@ Namespace: shr.core Target: FHIR_STU_3 -// Code types map direction to FHIR +// CodeValue types map direction to FHIR Coding maps to Coding: - Code maps to code + CodeValue maps to code CodeSystem maps to system CodeSystemVersion maps to version DisplayText maps to display @@ -16,7 +16,7 @@ CodeableConcept maps to CodeableConcept: Quantity maps to Quantity: Number maps to value - Units.Coding.Code maps to code + Units.Coding.CodeValue maps to code Units.Coding.CodeSystem maps to system Units.Coding.DisplayText maps to unit Comparator maps to comparator @@ -86,9 +86,9 @@ Timing maps to Timing: TimingCode maps to code EventDuration.DurationRange.LowerBound.SimpleQuantity.Number maps to repeat.duration EventDuration.DurationRange.UpperBound.SimpleQuantity.Number maps to repeat.durationMax - EventDuration.DurationRange.LowerBound.SimpleQuantity.Units.Coding.Code maps to repeat.durationUnit + EventDuration.DurationRange.LowerBound.SimpleQuantity.Units.Coding.CodeValue maps to repeat.durationUnit RecurrencePattern.RecurrenceInterval.Duration.Number maps to repeat.period - RecurrencePattern.RecurrenceInterval.Duration.Units.Coding.Code maps to repeat.periodUnit + RecurrencePattern.RecurrenceInterval.Duration.Units.Coding.CodeValue maps to repeat.periodUnit constrain repeat.periodMax to 0..0 RecurrencePattern.DayOfWeek maps to repeat.dayOfWeek RecurrencePattern.TimeOfDay maps to repeat.timeOfDay diff --git a/spec/shr_core_vs.txt b/spec/shr_core_vs.txt index cb5d123e..fe84b403 100644 --- a/spec/shr_core_vs.txt +++ b/spec/shr_core_vs.txt @@ -136,7 +136,7 @@ ValueSet: SemiquantitativeFrequencyVS #continuously "Continuously" ValueSet: QualitativeFrequencyVS -Description: "Code set indicating the frequency of an event in qualitative terms." +Description: "CodeValue set indicating the frequency of an event in qualitative terms." #always "Virtually always or every time" #usually "Frequently or often" #sometimes "Occasionally or sometimes" @@ -144,12 +144,12 @@ Description: "Code set indicating the frequency of an event in qualitative ter #never "Never" ValueSet: YesNoVS -Description: "Code set indicating yes or no (values drawn from Snomed CT)." +Description: "CodeValue set indicating yes or no (values drawn from Snomed CT)." SCT#373066001 "Yes (qualifier value)" SCT#373067005 "No (qualifier value)" ValueSet: YesNoUnknownVS -Description: "Code set indicating yes, no, or unknown." +Description: "CodeValue set indicating yes, no, or unknown." SCT#373066001 "Yes (qualifier value)" SCT#373067005 "No (qualifier value)" SCT#261665006 "Unknown (qualifier value)" @@ -384,7 +384,7 @@ NCI#C45875 "VENTRAL Pertaining to the front or lower surface of the body." NCI#C98798 "VENTROLATERAL Of or pertaining to the front and side of a main body." /*------------- -NCI Code: C99073 LAT, Codelist extensible: Yes +NCI CodeValue: C99073 LAT, Codelist extensible: Yes C13332 BILATERAL Affecting both sides of the body, or a pair of organs. Bilateral C25307 CONTRALATERAL Having to do with the opposite side of the body, in relation to a pre-existing reference point. C25308 IPSILATERAL Having to do with the same side of the body, in relation to a pre-existing reference point. diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index fb299d00..782a39b3 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -57,8 +57,8 @@ RelatedPerson maps to RelatedPerson: Organization maps to Organization: Identifier maps to identifier ResourceStatus maps to active - OrganizationName maps to name Type maps to type + OrganizationName maps to name Address maps to address ContactPoint maps to telecom PartOf maps to partOf @@ -82,6 +82,7 @@ Group maps to Group: Facility maps to Location: Identifier maps to identifier ResourceStatus maps to status + Type maps to type FacilityName maps to name Location[Address] maps to address Location[Geoposition].Latitude maps to position.latitude @@ -89,7 +90,6 @@ Facility maps to Location: Location[Geoposition].Altitude maps to position.altitude ContactPoint maps to telecom ManagingOrganization maps to managingOrganization - Type maps to type Substance maps to Substance: Identifier maps to identifier @@ -126,8 +126,8 @@ Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medi Specimen maps to Specimen: Identifier maps to identifier ResourceStatus maps to status - AccessionIdentifier maps to accessionIdentifier Type maps to type + AccessionIdentifier maps to accessionIdentifier CollectionSource maps to subject SourceSpecimen maps to parent ReceivedTime maps to receivedTime diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index 19f2ecb6..52837ee0 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -82,6 +82,7 @@ Group maps to Group: Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-location: Identifier maps to identifier + Type maps to type FacilityName maps to name Location[Address] maps to address Location[Geoposition].Latitude maps to position.latitude @@ -89,7 +90,6 @@ Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-locatio Location[Geoposition].Altitude maps to position.altitude ContactPoint maps to telecom ManagingOrganization maps to managingOrganization - Type maps to type Substance maps to Substance: Identifier maps to identifier @@ -116,9 +116,9 @@ Medication maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medic Specimen maps to Specimen: Identifier maps to identifier + Type maps to type AccessionIdentifier maps to accessionIdentifier ResourceStatus maps to status - Type maps to type CollectionSource maps to subject SourceSpecimen maps to parent ReceivedTime maps to receivedTime @@ -136,6 +136,7 @@ Specimen maps to Specimen: SpecimenContainer.Additive maps to container.additive[x] Device maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-device: + Identifier maps to identifier Type maps to type constrain udi to 1..1 DeviceUdi maps to udi.carrierHRF diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index 0bfe51dd..75f1ef01 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -25,7 +25,7 @@ Based on: ConditionPresent Concept: LNC#8670-2 "History of family member diseases" 0..1 Onset 0..1 ConditionOutcome - TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered + Code from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered Focus value is type ref(FamilyMember) Element: ConditionOutcome diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index 0449361c..91724f7e 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -10,11 +10,11 @@ Element: GeneticMarkerAnalysisResult Based on: LaboratoryObservation Concept: SCT#20889005 "Genetic marker function (observable entity)" Description: "The process of isolating and testing the DNA of an embryo or a person to detect the presence of genetic alterations or defects that may predispose to the future development of a disease or disorder. (source: NCI Thesaurus)" - TopicCode from https://www.ncbi.nlm.nih.gov/gtr if covered // the identifier from the Genetic Test Registry + Code from https://www.ncbi.nlm.nih.gov/gtr if covered // the identifier from the Genetic Test Registry Method from GeneticTestMethodVS if covered 0..0 DataValue // panel, no numerical or coded result 0..0 Focus -// MK: What gene are we looking at? mlt: identified in two places: 1) TopicCode through the GTR ID, 2) in the GeneName element below. +// MK: What gene are we looking at? mlt: identified in two places: 1) Code through the GTR ID, 2) in the GeneName element below. 0..0 ReferenceRange 0..1 GenomicSourceClass 0..1 GeneName @@ -65,7 +65,7 @@ Based on: LaboratoryObservation Concept: LNC#21924-6 "Tumor marker Cancer" Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Dictionary of Cancer Terms). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." Focus value is type ref(CancerDisorderPresent) - TopicCode from TumorMarkerVS if covered + Code from TumorMarkerVS if covered 0..0 BodySite 0..0 Device @@ -74,5 +74,5 @@ EntryElement: CancerGeneticMarkerAnalysisResult Based on: GeneticMarkerAnalysisResult Concept: TBD#TBD "Cancer Genetic Test DataValue" Description: "A panel that analyses different components of a genetic test specific to cancer-related genetic markers." - TopicCode from CancerGeneticTestRegistryVS if covered // the identifier from the Genetic Test Registry value set (filtered for cancer-relevant genetic tests.) + Code from CancerGeneticTestRegistryVS if covered // the identifier from the Genetic Test Registry value set (filtered for cancer-relevant genetic tests.) GeneName.CodeableConcept from CancerGeneVS if covered diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index f10ed6ea..a9ec3788 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -17,7 +17,7 @@ EntryElement: CourseOfTreatmentPerformed Based on: ProcedurePerformed // mlt: questionable to call CourseOfTreatment a procedure. It is modeled as a series of activities including medications administered and procedures. Description: "A series of coordinated treatment actions taken with a certain treatment intention." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - TopicCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" + Code is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" 0..1 TreatmentIntent 0..1 LineOfTherapy 0..* MedicationStatement // mlt: to cover patient-asserted medications taken at home. @@ -44,7 +44,7 @@ EntryElement: RadiationProcedurePerformed Based on: ProcedurePerformed Description: "A radiation oncology procedure. If the treatment is part of a course of treatment, the PartOf attribute should indicate the CourseOfTreatment." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - TopicCode from RadiationProcedurePerformedVS + Code from RadiationProcedurePerformedVS 0..1 RadiationDosePerFraction 0..1 RadiationFractionsDelivered 0..1 TotalRadiationDoseDelivered diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 6bb58668..dda6f24e 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -107,7 +107,7 @@ Concept: MTH#C2364172 Description: "Information on the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency. The Focus must reference the medication via a code, MedicationRequest, or MedicationStatement. Modeling note: MedicationAdherence could be attached to MedicationStatement directly as an extension, but modeling as an observation avoids creating an extension and allows this observation to be made at any time." DataValue from QualitativeFrequencyVS - TopicCode is MTH#C2364172 + Code is MTH#C2364172 1..1 Focus value is type ref(Medication) Components.ObservationComponent includes 0..* MedicationNonAdherenceReason @@ -116,7 +116,7 @@ includes 0..* MedicationNonAdherenceReason Based on: CodedObservationComponent Description: "Reason that patient did not adhere to a medication regimen." DataValue from MedicationNonAdherenceReasonVS - TopicCode is TBD#TBD + Code is TBD#TBD EntryElement: MedicationNotAdministered Based on: ActionNotPerformed diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index f5325590..4b711de5 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -33,7 +33,7 @@ Description: "The self-reported current and historical data about a person's eco A person's Employment Status could change over time, for example, a person could be employed following a period of choosing to not be in the labor force. Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 - TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" + Code is LNC#74165-2 "HistoryOfEmploymentStatus" 0..0 ObservationComponent 0..0 Focus @@ -44,7 +44,7 @@ Description: "A self-reported date that a person considers themselves to have A person can be both retired and employed (an Employment Status); most often, a person would be retired from one job and employed in another job. A person also can have more than one retirement date; for example, a person could retire from military service, then later retire from a civilian job. Multiple retirement dates should be recorded using multiple FHIR resources. Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." DataValue value is type dateTime - TopicCode is LNC#87510-4 "Date of Retirement" + Code is LNC#87510-4 "Date of Retirement" 0..0 ObservationComponent 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. 0..0 Focus @@ -55,7 +55,7 @@ Concept: LNC#87511-2 Description: "Self-reported date range(s) when a person worked in what is considered a combat zone; sometimes called a hazardous duty work. Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones. Multiple periods in combat zone should be recorded using multiple FHIR resources." Value: TimePeriod - TopicCode is LNC#87511-2 + Code is LNC#87511-2 0..0 ObservationComponent 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. 0..0 Focus @@ -68,7 +68,7 @@ Knowledge of person's Usual Work can potentially assist in diagnosis, treatment Example: a person has worked for a total of 30 years as a 'secretary' (Occupation), but in various industries, mostly hotel construction. Her Usual Occupation is 'secretary' and her Usual Industry is 'hotel construction.' Usual Work does not include work that was unpaid or voluntary." DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 - TopicCode is LNC#21843-8 + Code is LNC#21843-8 Focus value is type CodeableConcept Focus from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion // family member value set Components.ObservationComponent @@ -85,14 +85,14 @@ includes 0..1 UsualOccupationDuration //Value: CodeableConcept from IndustryVS DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - TopicCode is LNC#21844-6 "History of Usual industry" + Code is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration Based on: QuantitativeObservationComponent Concept: LNC#74163-7 "Usual occupation duration" Description: "The total time spent on an activity, inclusive of all time intervals, whether continuous or interrupted." DataValue.Quantity.Units is UCUM#a - TopicCode is LNC#74163-7 "Usual occupation duration" + Code is LNC#74163-7 "Usual occupation duration" EntryElement: PastOrPresentJob Based on: CodedSocialHistoryObservation @@ -105,7 +105,7 @@ At a minimum, it is important to have a record of a person's current job(s); i.e 0..0 DataAbsentReason Focus value is type CodeableConcept Focus from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion - TopicCode is LNC#11341-5 "History of Occupation" + Code is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization Components.ObservationComponent includes 0..1 Occupation @@ -142,7 +142,7 @@ includes 0..1 IsCurrentJob Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." // Value: CodeableConcept from IndustryVS DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - TopicCode is LNC#86188-0 + Code is LNC#86188-0 Element: WorkClassification Based on: CodedObservationComponent @@ -150,7 +150,7 @@ includes 0..1 IsCurrentJob Description: "Type of compensation and sector for a person's job, such as 'paid work, self-employed' or 'voluntary work', as reported by the person." //Value: CodeableConcept from WorkClassificationVS DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 - TopicCode is LNC#85104-8 "Compensation and sector employment type" + Code is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel Based on: CodedObservationComponent @@ -158,21 +158,21 @@ includes 0..1 IsCurrentJob Description: "A coded indicator of responsibilities for directing work and personnel management responsibilities for a person's job, as reported by the person. For US military jobs, this is pay grade." //Value: CodeableConcept from SupervisoryLevelVS DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 - TopicCode is LNC#87707-6 + Code is LNC#87707-6 Element: JobDuty Based on: ObservationComponent Concept: LNC#63761-1 Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " DataValue value is type string - TopicCode is LNC#63761-1 + Code is LNC#63761-1 Element: OccupationalHazard Based on: ObservationComponent Concept: LNC#87729-0 Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." DataValue value is type string - TopicCode is LNC#87729-0 + Code is LNC#87729-0 Element: WorkSchedule Based on: CodedObservationComponent @@ -180,14 +180,14 @@ includes 0..1 IsCurrentJob Description: "Typical arrangement of working hours for a person's job, as reported by the person." //Value: CodeableConcept from WorkScheduleVS DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 - TopicCode is LNC#74159-5 + Code is LNC#74159-5 Element: WeeklyWorkDays Based on: QuantitativeObservationComponent Concept: LNC#74160-3 Description: "The average number of days per week that a person spends performing their duties for work." DataValue.Quantity.Units is UCUM#d - TopicCode is LNC#74160-3 + Code is LNC#74160-3 0..0 ReferenceRange Element: DailyWorkHours @@ -195,7 +195,7 @@ includes 0..1 IsCurrentJob Concept: LNC#87512-0 Description: "The average number of hours in a day that a person spends performing their duties for work." DataValue.Quantity.Units is UCUM#h - TopicCode is LNC#87512-0 + Code is LNC#87512-0 0..0 ReferenceRange // Last minute addition 8/17 based on Genny's comment @@ -236,7 +236,7 @@ EntryElement: MilitaryServiceHistory Based on: CodedSocialHistoryObservation Description: "History of service in the US military." Category is OBSCAT#social-history - TopicCode is MTH#C3714797 + Code is MTH#C3714797 Components.ObservationComponent includes 1..1 MilitaryStatus includes 0..1 MilitaryServiceDischargeStatus diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt index cce53f2d..816d06cf 100644 --- a/spec/shr_occupation_map_dstu2.txt +++ b/spec/shr_occupation_map_dstu2.txt @@ -5,10 +5,10 @@ Target: FHIR_DSTU_2 SocialHistoryObservation maps to Observation: Identifier maps to identifier Patient maps to subject - TopicCode maps to code + Code maps to code Category maps to category Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation diff --git a/spec/shr_occupation_map_stu3.txt b/spec/shr_occupation_map_stu3.txt index ef1f47fc..57eea296 100644 --- a/spec/shr_occupation_map_stu3.txt +++ b/spec/shr_occupation_map_stu3.txt @@ -6,10 +6,10 @@ Target: FHIR_STU_3 SocialHistoryObservation maps to Observation: Identifier maps to identifier Patient maps to subject - TopicCode maps to code + Code maps to code Category maps to category Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation diff --git a/spec/shr_oncocore.txt b/spec/shr_oncocore.txt index 8d6e54c3..599f0a19 100644 --- a/spec/shr_oncocore.txt +++ b/spec/shr_oncocore.txt @@ -13,7 +13,7 @@ EntryElement: CancerDisorderPresent Based on: ConditionPresent Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" Description: "The presence of malignant neoplastic disease, in which abnormal cells divide without control and can invade nearby tissues." - TopicCode from CancerDisorderVS + Code from CancerDisorderVS // StageInformation.StageSummary from http://loinc.org/vs/LL240-3 // Commented out because LL240-3 only applies to TNM stage group - is this correct? StageInformation.StageDetail value is type CancerStagePanel // 0..1 MorphologyBehavior from MorphologyBehaviorVS //Not carried over from BrCa because it was intended to break out behavior codes from ICD-O-3, and we are no longer using it. @@ -25,7 +25,7 @@ Based on: SimpleCodedNonLaboratoryObservation // MK: Would this use a spec Description: "Classification of the cancer by the type of tissue in which the cancer originates. (Source: NCI)" Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." DataValue from CancerHistologicTypeVS - TopicCode is SCT#371441004 "Histologic type (observable entity)" + Code is SCT#371441004 "Histologic type (observable entity)" Focus value is type ref(CancerDisorderPresent) 0..0 BodySite 0..0 Device @@ -37,7 +37,7 @@ Based on: CodedLaboratoryObservation Description: "A description of a tumor based on how abnormal the cancer cells and tissue look under a microscope and how quickly the cancer cells are likely to grow and spread. Low-grade cancer cells look more like normal cells and tend to grow and spread more slowly than high-grade cancer cells. (Source: NCI Dictionary of Cancer Terms)" Concept: LNC#21858-6 "Grade Cancer" DataValue from http://loinc.org/vs/LL213-0 - TopicCode is LNC#21858-6 "Grade Cancer" + Code is LNC#21858-6 "Grade Cancer" Focus value is type ref(CancerDisorderPresent) 0..0 BodySite 0..0 Device @@ -49,7 +49,7 @@ Based on: CodedNonLaboratoryObservation Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" Concept: SCT#246453008 "Course of illness (attribute)" DataValue from CancerProgressionVS - TopicCode is SCT#246453008 "Course of illness (attribute)" + Code is SCT#246453008 "Course of illness (attribute)" Focus value is type ref(CancerDisorderPresent) // CancerProgressionEvidence is not yet part of M-CODE, but I don't see a better way to include it than a extension 0..* CancerProgressionEvidence diff --git a/spec/shr_oncocore_stage.txt b/spec/shr_oncocore_stage.txt index 109a50f0..7fd587aa 100644 --- a/spec/shr_oncocore_stage.txt +++ b/spec/shr_oncocore_stage.txt @@ -54,7 +54,7 @@ EntryElement: TNMClinicalPrognosticStagePanel Based on: CancerStagePanel Concept: LNC#75620-5 "TNM clinical staging before treatment panel Cancer" Description: "A panel of staging information that is performed prior to surgery, based on evidence such as physical examination, imaging, and/or biopsy." - TopicCode is LNC#75620-5 "TNM clinical staging before treatment panel Cancer" + Code is LNC#75620-5 "TNM clinical staging before treatment panel Cancer" CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" // timing is implicit in LOINC code, so this attribute could potentially could be eliminated Method from TNMTumorStagingSystemVS if covered PanelMembers.Observation @@ -67,7 +67,7 @@ Description: "A panel of staging information that is performed prior to surge Based on: TNMStagePanelMember Concept: LNC#21908-9 "Stage group.clinical Cancer" Description: "The overall stage of the cancer, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies. (adapted from NCI Dictionary of Cancer Terms)." - TopicCode is LNC#21908-9 "Stage group.clinical Cancer" + Code is LNC#21908-9 "Stage group.clinical Cancer" DataValue from http://loinc.org/vs/LL240-3 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" 0..0 CancerStageSuffix @@ -76,7 +76,7 @@ Description: "A panel of staging information that is performed prior to surge Based on: TNMStagePanelMember Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" Description: "Classification based on the size and extent of the primary tumor." - TopicCode is LNC#21905-5 "Primary tumor.clinical [Class] Cancer" + Code is LNC#21905-5 "Primary tumor.clinical [Class] Cancer" DataValue from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" @@ -84,7 +84,7 @@ Description: "A panel of staging information that is performed prior to surge Based on: TNMStagePanelMember Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" Description: "The presence of metastases in regional lymph nodes, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies. (adapted from NCI Dictionary of Cancer Terms)" - TopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" + Code is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" DataValue from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" @@ -92,7 +92,7 @@ Description: "A panel of staging information that is performed prior to surge Based on: TNMStagePanelMember Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" Description: "The presence of metastases in remote anatomical locations, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies." - TopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" + Code is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" DataValue from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" @@ -101,7 +101,7 @@ EntryElement: TNMPathologicPrognosticStagePanel Based on: CancerStagePanel Concept: LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" Description: "A panel of staging information that is based on examination of tissue samples removed during surgery, in addition to physical examination and imaging and potentially, other prognostic factors." - TopicCode is LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" + Code is LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" 0..1 Method from TNMTumorStagingSystemVS if covered CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" PanelMembers.Observation @@ -115,7 +115,7 @@ Description: "A panel of staging information that is based on examination of Based on: TNMStagePanelMember Concept: LNC#21902-2 "Stage group.pathology Cancer" Description: "The overall stage of the cancer, determined through pathologic analysis of a tumor specimen, and classified based on criteria defined by the staging system." - TopicCode is LNC#21902-2 "Stage group.pathology Cancer" + Code is LNC#21902-2 "Stage group.pathology Cancer" DataValue from http://loinc.org/vs/LL234-6 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" 0..0 CancerStageSuffix @@ -125,7 +125,7 @@ Description: "A panel of staging information that is based on examination of Based on: TNMStagePanelMember Concept: LNC#21899-0 "Primary tumor.pathology Cancer" Description: "TODO: pull from LOINC" //TODO: pull from LOINC - TopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" + Code is LNC#21899-0 "Primary tumor.pathology Cancer" DataValue from http://loinc.org/vs/LL232-0 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" @@ -133,7 +133,7 @@ Description: "A panel of staging information that is based on examination of Based on: TNMStagePanelMember Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" Description: "The presence of metastases in regional lymph nodes, obtained through pathologic analysis of a tumor specimen, and classified based on criteria defined by the staging system."" - TopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" + Code is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" DataValue from http://loinc.org/vs/LL3136-0 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" @@ -141,7 +141,7 @@ Description: "A panel of staging information that is based on examination of Based on: TNMStagePanelMember Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" Description: "TODO: pull from LOINC" //TODO: pull from LOINC - TopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative + Code is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative DataValue from http://loinc.org/vs/LL3137-8 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" */ diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index d3dde8dc..a0a7c57c 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -9,7 +9,7 @@ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category EntryElement: ProcedurePerformed Based on: ActionPerformed Description: "A procedure that has been performed." -1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite 0..1 PartOf value is type ref(ProcedurePerformed) 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -43,7 +43,7 @@ Description: "A procedure that has been performed." EntryElement: ProcedureNotPerformed Based on: ActionNotPerformed 0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason -1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite //0..1 PartOf value is type ref(ProcedurePerformed or Not Performed) ??? 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -56,7 +56,7 @@ Based on: ActionRequested PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) ResourceStatus from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) 0..1 Requester is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. -1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite 0..1 PartOf value is type ref(ProcedurePerformed) 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -70,7 +70,7 @@ Based on: ActionRequested EntryElement: ProcedureRequestedAgainst Based on: ActionRequestedAgainst -1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite @@ -93,7 +93,7 @@ EntryElement: LaboratoryProcedurePerformed Based on: ProcedurePerformed Concept: MTH#C0456984 Description: "A procedure performed on a collected specimen such as a blood panel or a biopsy." -1..1 TopicCode from http://hl7.org/fhir/ValueSet/observation-codes +1..1 Code from http://hl7.org/fhir/ValueSet/observation-codes Category is OBSCAT#laboratory 0..1 ref(Specimen) //0..1 ref(Device) // constraint from 0..* @@ -103,7 +103,7 @@ EntryElement: SurgicalProcedurePerformed Based on: ProcedurePerformed Concept: TBD Description: "A surgical action, independent of action context." - TopicCode from SurgicalProcedureVS + Code from SurgicalProcedureVS 0..* DirectSite 0..* DirectSiteCode 0..* IndirectSite @@ -181,5 +181,5 @@ Based on: ProcedurePerformed Description: "Diagnostic imaging procedure performed." Concept: SCT#363679005 "Imaging (procedure)" 0..0 Focus - TopicCode from DiagnosticImagingVS + Code from DiagnosticImagingVS \ No newline at end of file diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index eedaee8f..13ac8db1 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -4,7 +4,7 @@ Target: FHIR_DSTU_2 ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) Identifier maps to identifier - TopicCode maps to code + Code maps to code Patient maps to subject Category maps to category // DSTU 2 change (name change) @@ -39,7 +39,7 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) Identifier maps to identifier - TopicCode maps to code + Code maps to code Patient maps to subject Category maps to category // TODO the following is causing a crash @@ -73,7 +73,7 @@ ProcedureRequested maps to ProcedureRequest: Identifier maps to identifier CreationDate maps to orderedOn Requester maps to orderer - TopicCode maps to code + Code maps to code // DSTU 2 change (no such attribute) // Category maps to category // DSTU 2 change (no such attribute) @@ -102,7 +102,7 @@ ProcedureRequestedAgainst maps to Basic: fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal // who is the requester? - TopicCode maps to code + Code maps to code Category maps to category Patient maps to subject BodySite.BodySiteCode maps to bodySite diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index bd194df0..6f0bda2c 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: Identifier maps to identifier - TopicCode maps to code + Code maps to code Patient maps to subject Category maps to category constrain notDone to 0..0 @@ -31,7 +31,7 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: Identifier maps to identifier - TopicCode maps to code + Code maps to code Patient maps to subject Category maps to category // TODO the following is causing a crash @@ -64,7 +64,7 @@ ProcedureRequested maps to ProcedureRequest: Identifier maps to identifier CreationDate maps to authoredOn Requester maps to requester.agent - TopicCode maps to code + Code maps to code Category maps to category constrain doNotPerform to 0..0 Patient maps to subject @@ -89,7 +89,7 @@ ProcedureRequestedAgainst maps to ProcedureRequest: fix intent to http://hl7.org/fhir/request-intent#proposal CreationDate maps to authoredOn // who is the requester? - TopicCode maps to code + Code maps to code Category maps to category Patient maps to subject BodySite.BodySiteCode maps to bodySite diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt index 3df3051d..8e6148c8 100644 --- a/spec/shr_tumor.txt +++ b/spec/shr_tumor.txt @@ -9,7 +9,7 @@ EntryElement: TumorPresent Based on: BodyStructurePresent Concept: SCT#395557000 "Tumor finding (finding)" Description: "The presence of an abnormal mass of tissue (neoplasm) that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). (source: NCI Dictionary)." - TopicCode from TumorMorphologyVS + Code from TumorMorphologyVS // note - the topic code represents the morphology, as distinct from the location in BodySite 0..1 IsPrimaryTumor @@ -24,7 +24,7 @@ Based on: CodedLaboratoryObservation Concept: SCT#263605001 "Tumor size (observable entity)" 0..0 DataValue Focus value is type ref(TumorPresent) - TopicCode is SCT#263605001 "Tumor size (observable entity)" + Code is SCT#263605001 "Tumor size (observable entity)" 0..0 PanelMembers Components.ObservationComponent includes 0..1 TumorDimension1 @@ -36,28 +36,28 @@ includes 0..1 SizeOfGrossTumorBed Description: "The longest dimension of the tumor." Based on: QuantitativeObservationComponent Concept: SCT#372299002 "Tumor size, dimension 1 (observable entity)" - TopicCode is SCT#372299002 "Tumor size, dimension 1 (observable entity)" + Code is SCT#372299002 "Tumor size, dimension 1 (observable entity)" DataValue.Quantity.Units is UCUM#mm Element: TumorDimension2 Description: "The second longest dimension of the tumor, perpendicular to the longest dimension." Based on: QuantitativeObservationComponent Concept: SCT#372300005 "Tumor size, dimension 2 (observable entity)" - TopicCode is SCT#372300005 "Tumor size, dimension 2 (observable entity)" + Code is SCT#372300005 "Tumor size, dimension 2 (observable entity)" DataValue.Quantity.Units is UCUM#mm Element: TumorDimension3 Description: "The third longest dimension of the tumor, perpendicular to the two longest dimensions." Based on: QuantitativeObservationComponent Concept: SCT#372301009 "Tumor size, dimension 3 (observable entity)" - TopicCode is SCT#372301009 "Tumor size, dimension 3 (observable entity)" + Code is SCT#372301009 "Tumor size, dimension 3 (observable entity)" DataValue.Quantity.Units is UCUM#mm Element: SizeOfGrossTumorBed Based on: QuantitativeObservationComponent Concept: TBD Description: "The largest dimension of the gross tumor bed/fibrotic area." - TopicCode is TBD#TBD + Code is TBD#TBD DataValue.Quantity.Units is UCUM#mm @@ -66,7 +66,7 @@ Based on: CodedLaboratoryObservation Concept: MTH#C4086369 Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." DataValue from PositiveNegativeVS - TopicCode is MTH#C4086369 + Code is MTH#C4086369 0..0 PanelMembers Components.ObservationComponent includes 0..1 TumorMarginDescription diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 71557a5c..d15a8135 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -72,7 +72,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t Onset value is type dateTime // nowhere to put code LOINC 85585-8 Date of Onset {mm/dd/yyyy} Abatement value is type dateTime // nowhere to put code 88878-4 Date of abatement {mm/dd/yyyy} 1..1 Category is OBSCAT#exam -1..1 TopicCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered +1..1 Code from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered 1..1 Identifier is type WoundIdentifier 0..1 ConditionCause is type WoundTypeEtiology 1..1 BodySite is type WoundBodySite @@ -104,7 +104,7 @@ EntryElement: WoundAbsenct Based on: ConditionAbsent Description: "Documents the absence of a wound at a given body site. No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundBodySite." -1..1 TopicCode is SCT#416462003 "Wound (disorder)" +1..1 Code is SCT#416462003 "Wound (disorder)" 1..1 Category is OBSCAT#exam 1..1 BodySite is type WoundBodySite @@ -120,7 +120,7 @@ Description: "Group of observations regarding the properties and severity of a w Interpretation is type WoundAssessmentInterpretation 0..0 BodySite // carried by wound assertion 0..0 Device - TopicCode is LNC#39135-9 + Code is LNC#39135-9 0..0 ReferenceRange 0..* Media is type PhotographicImage // 72170-4 Photographic image [Media] Components.ObservationComponent @@ -205,7 +205,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89254-7 Description: "The appearance of the base (bed) of the wound, together with the percentage of the bed with each type of appearance." 1..1 WoundIdentifier - TopicCode is LNC#89254-7 + Code is LNC#89254-7 0..0 BodySite // location is given by the wound assertion 0..0 Device Components.ObservationComponent @@ -230,7 +230,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: TBD Description: "Color of part or all of the wound base (bed), and the percentage of the area with that color." 1..1 WoundIdentifier - TopicCode is TBD#TBD + Code is TBD#TBD 0..0 BodySite // location is given by the wound assertion 0..0 Device Components.ObservationComponent @@ -257,7 +257,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89256-2 Description: "The state of the tissue at the edge of the wound." 1..1 WoundIdentifier - TopicCode is LNC#89256-2 + Code is LNC#89256-2 0..0 BodySite // location is given by the wound assertion 0..0 Device Components.ObservationComponent @@ -283,7 +283,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89257-0 Description: "A discharging blind-ended track that extends from the surface of an organ to an underlying area or abscess cavity. The track is invariably lined with granulation tissue. In chronic cases this may be augmented with epithelial tissue." 1..1 WoundIdentifier - TopicCode is LNC#89257-0 + Code is LNC#89257-0 0..0 BodySite // location is given by the wound assertion 0..0 Device Components.ObservationComponent @@ -312,7 +312,7 @@ EntryElement: WoundUnderminingObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89258-8 Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage around the wound margin. Undermining are narrow sinus tracts away from the wound margins and go downward into the wound." - TopicCode is LNC#89258-8 + Code is LNC#89258-8 1..1 WoundIdentifier 0..0 BodySite // location is given by the wound assertion 0..0 Device @@ -338,7 +338,7 @@ EntryElement: WoundExudateObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72292-6 Description: "Description of the fluid produced by a wound." - TopicCode is LNC#72292-6 + Code is LNC#72292-6 1..1 WoundIdentifier 0..0 BodySite // location is given by the wound assertion 0..0 Device @@ -388,7 +388,7 @@ EntryElement: WoundSizeObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72287-6 Description: "The estimated or measured dimensions of a wound." - TopicCode is LNC#72287-6 + Code is LNC#72287-6 1..1 WoundIdentifier 0..0 BodySite // location is given by the wound assertion 0..0 Device From 04ef6831e39f9463a3bc062f199d6ef4aa060aad Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 4 Feb 2019 16:25:51 -0500 Subject: [PATCH 182/289] Updates to ObservationComponent, Status, Facility (Location) --- spec/shr_allergy.txt | 2 +- spec/shr_allergy_map_dstu2.txt | 2 +- spec/shr_allergy_map_stu3.txt | 2 +- spec/shr_base.txt | 51 +++++++++++++++++---------- spec/shr_base_action.txt | 23 ++++++------ spec/shr_base_finding.txt | 21 +++++------ spec/shr_base_map_dstu2.txt | 13 ++++--- spec/shr_base_map_stu3.txt | 9 +++-- spec/shr_brca.txt | 4 +-- spec/shr_core.txt | 4 +-- spec/shr_core_map_dstu2.txt | 8 ----- spec/shr_core_map_stu3.txt | 7 ---- spec/shr_encounter.txt | 45 ++++-------------------- spec/shr_encounter_map_dstu2.txt | 6 ++-- spec/shr_encounter_map_stu3.txt | 6 ++-- spec/shr_entity.txt | 58 +++++++++++++++++++++---------- spec/shr_entity_map_dstu2.txt | 38 +++++++++++--------- spec/shr_entity_map_stu3.txt | 33 +++++++++++------- spec/shr_familyhistory.txt | 3 +- spec/shr_financial.txt | 3 +- spec/shr_financial_map_dstu2.txt | 2 +- spec/shr_financial_map_stu3.txt | 2 +- spec/shr_medication.txt | 10 +++--- spec/shr_medication_map_dstu2.txt | 6 ++-- spec/shr_medication_map_stu3.txt | 6 ++-- spec/shr_occupation.txt | 20 ++++++----- spec/shr_occupation_map_dstu2.txt | 5 +-- spec/shr_occupation_map_stu3.txt | 2 +- spec/shr_oncocore.txt | 2 +- spec/shr_oncocore_stage.txt | 2 +- spec/shr_procedure.txt | 10 +++--- spec/shr_procedure_map_dstu2.txt | 6 ++-- spec/shr_procedure_map_stu3.txt | 6 ++-- spec/shr_research.txt | 8 +++-- spec/shr_research_map_stu3.txt | 7 ++-- 35 files changed, 222 insertions(+), 210 deletions(-) diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index abfc7eeb..849d33c5 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -15,7 +15,7 @@ Description: "A finding related to the presence of an individual's risk or sensi Asserter value is type PatientOrPractitionerOrRelatedPerson Recorder value is type PatientOrPractitioner // FHIR only allows Patient or Practitioner as recorder 1..1 Patient -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status +1..1 Status from http://hl7.org/fhir/ValueSet/allergy-verification-status 0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status 0..0 Focus // always the patient 1..1 DataValue from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered // DSTU 2 change different required value sets) diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index 7db84a87..95e4b1cc 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -12,7 +12,7 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a DataValue maps to substance Type maps to type SubstanceCategory maps to category - ResourceStatus maps to status + Status maps to status Criticality maps to criticality // DSTU 2 change (onset only dateTime, not a choice [x]) Onset maps to onset diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index a1d8a5b0..84f6f7ab 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -11,7 +11,7 @@ AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co DataValue maps to code Type maps to type SubstanceCategory maps to category - ResourceStatus maps to verificationStatus + Status maps to verificationStatus ClinicalStatus maps to clinicalStatus Criticality maps to criticality Onset maps to onset[x] diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 6fe5c521..253d6e9a 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -55,7 +55,7 @@ Abstract Element: DomainResource Based on: Resource Description: "Parent class for any item in clinical or administrative health-related system. A DomainResource can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." 0..1 Narrative -0..1 ResourceStatus +0..1 StatusOrActive 0..* Identifier Element: Narrative @@ -72,9 +72,20 @@ Description: "Parent class for any item in clinical or administrative health-rel Description: "Additional information on how the narrative was generated, and the scope of information contained." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/narrative-status - Element: ResourceStatus - Description: "The status that relates to the interpretation of this resource. Certain status values can modify the meaning of the resource, for example, entered-in-error. When a boolean value is used, ResourceStatus of true indicates the record is active, false means inactive." - Value: boolean or CodeableConcept should be from http://hl7.org/fhir/ValueSet/resource-status + Abstract Element: StatusOrActive + Description: "Abstract class for a property that defines either the status of the recource, or whether the resource is active." + Value: boolean or CodeableConcept + + Element: Status + Based on: StatusOrActive + Description: "A state that relates to the workflow or interpretation of this resource. Certain status values can modify the meaning of the resource, for example, entered-in-error. When a boolean value is used, Status of true indicates the record is active, false means inactive." + Value: CodeableConcept should be from http://hl7.org/fhir/ValueSet/resource-status + + Element: Active + Based on: StatusOrActive + Description: "A flag that indicates whether the resource record is active, or inactive and ignored for all but historical purposes." + Value: boolean + Element: Metadata Description: "Elements that belong to all information items." @@ -123,17 +134,17 @@ Description: "This abstract class provides properties and behaviors common to en Element: Asserter Concept: TBD Description: "The origin or source of the information or request: a practitioner, patient, related person, organization, an algorithm, device, etc." - Value: Participant + Value: ref(EntityOrRole) Element: Recorder Concept: TBD Description: "The recorder of the information, if other than the information originator. For example, the nurse taking a list of medications reported by the patient." - Value: Participant + Value: ref(EntityOrRole) Element: Participant Concept: MTH#C1550369 Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity. A code can be used to indicate a generic type of participant, e.g., mother, EMT, or social worker." - Value: ref(EntityOrRole) or CodeableConcept + Value: ref(EntityOrRole) Element: CreationDate Concept: TBD @@ -145,7 +156,8 @@ EntryElement: Composition Based on: DomainResource Description: "A composition represents a set of Entries sharing common provenance, a document such as an extract from a patient record, a knowledge artifact, or a catalog definition." 0..1 Identifier // FHIR inconsistency -- usually 0..* -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/composition-status + StatusOrActive is type Status +1..1 Status from http://hl7.org/fhir/ValueSet/composition-status 1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes 0..* Section @@ -158,39 +170,40 @@ Description: "A composition represents a set of Entries sharing common provenanc // Combined participant roles Element: PatientOrPractitioner - Based on: Participant + Based on: EntityOrRole Description: "A choice of Patient or Practitioner. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) Element: PatientOrPractitionerOrRelatedPerson - Based on: Participant + Based on: EntityOrRole Description: "A choice of Patient, Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping AdverseEvent.SignedBy to FHIR AdverseEvent." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) Element: PractitionerOrRelatedPerson - Based on: Participant + Based on: EntityOrRole Description: "A choice of Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping EncounterPerformed.Participant to FHIR Encounter.participant.individual" Value: ref(Practitioner) or ref(RelatedPerson) Element: PersonOrOrganization - Based on: Participant + Based on: EntityOrRole Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Organization) Element: PersonOrDevice - Based on: Participant + Based on: EntityOrRole Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Device) - Element: FHIRProcedureParticipant - Based on: Participant + Element: PersonOrOrganizationOrDevice + Based on: EntityOrRole Description: "Constrains participants to classes that are accepted by FHIR as actors in procedures in STU 3." Value: ref(Practitioner) or ref(Organization) or ref(Patient) or ref(RelatedPerson) or ref(Device) - Element: ParticipantType - Based on: Participant - Description: "A participant who is not a specific individual or device, identified only by a type code. This could be a type of practitioner, a type of relative (e.g., mother), a type of device, etc. The type is distinct from the role; the mother (type) could play different roles (caregiver, organ donor, healthcare proxy, etc.)" - Value: CodeableConcept + Element: PractitionerOrDevice + Based on: EntityOrRole + Description: "A choice of Practitioner or Device. Needed for mapping to FHIR." + Value: ref(Practitioner) or ref(Device) + /* Element: HealthRecordId diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 72f4e895..ac13cb09 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -8,9 +8,10 @@ Uses: shr.core, shr.entity, shr.encounter Abstract Element: ActionStatement Based on: ClinicalStatement Description: "Abstract class representing any type of action." -0..1 Category // Might not need this -0..* Reason -1..1 Patient +0..1 Category // Might not need this +0..* Reason +1..1 Patient + StatusOrActive is type Status Element: Reason Concept: MTH#C0566251 @@ -22,11 +23,11 @@ Based on: ActionStatement Description: "Abstract class representing performance of any type of action." 1..1 OccurrenceTimeOrPeriod // when the action took place 0..* Participation -1..1 ResourceStatus // change to required... should be from http://hl7.org/fhir/ValueSet/event-status DSTU 2 change (conflict in required data sets) +1..1 Status // change to required... should be from http://hl7.org/fhir/ValueSet/event-status DSTU 2 change (conflict in required data sets) 0..1 Method 0..1 RelatedRequest //0..1 EnactsPlan -0..1 ref(Facility) +0..1 ref(Location) 0..1 Outcome // e.g., AdverseEvent Element: Participation @@ -76,7 +77,7 @@ Based on: ActionStatement Description: "Abstract class representing a request for any type of action to be performed." 0..1 Requester 1..1 RequestIntent -1..1 ResourceStatus should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) +1..1 Status should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) 0..1 ExpectedPerformanceTime 0..1 ExpectedPerformerType 0..1 ExpectedPerformer @@ -86,9 +87,11 @@ Description: "Abstract class representing a request for any type of action to b 0..1 PatientInstructions 0..1 CommunicationMethod + Element: Requester - Based on: Participant + Concept: TBD Description: "The actor making this request." + Value: ref(EntityOrRole) Element: RequestIntent Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." @@ -129,12 +132,6 @@ Description: "Abstract class representing a request for any type of action to b Description: "This is the method the provider used to communicate. Examples include: Written, Telephoned, Verbal, Electronically Entered, Policy, Service Correction, Duplicate, etc. 'Code indicating the origin of the prescription.' - NCPDP Telecommunication (Field 419-DJ, Data Dictionary 201104). Possible values include: Written; Telephone; Electronic; Facsimile; Pharmacy; Not Known." Value: CodeableConcept - Element: PractitionerOrDevice - Based on: Requester - Description: "A choice of Practitioner or Device. Needed for mapping to FHIR." - Value: ref(Practitioner) or ref(Device) - - Abstract Element: ActionNotPerformed Based on: ActionStatement Description: "Abstract class representing non-performance of any type of action." diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index f7fb5d93..2ef2acec 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -61,6 +61,7 @@ Description: "An assertion, determination, opinion, evaluation, result, observat 0..1 DataValue 0..1 DataAbsentReason 0..1 Focus + StatusOrActive is type Status Element: Focus Description: "The entity this condition or observation relates to, for example, a related person. The Focus is only required if the person or thing observed is different than the patient. Focus should not be an anatomical location. Examples: The focus for cancer progression would be the cancer condition; for wound length, an instance of a wound (a condition)." @@ -81,7 +82,7 @@ Observation has a value representing the result (answer), or an DataAbsentReason For an Observation, the Code describes the aspect or property of the subject being observed or measured. The Code is the 'question code' that pairs to the 'answer' contained in the Value." 0..1 Method 0..1 RelevantTime -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/observation-status +1..1 Status from http://hl7.org/fhir/ValueSet/observation-status 0..1 Category from http://hl7.org/fhir/ValueSet/observation-category if covered // MK Category cardinality from 0..* to 0..1 to be compatible with DSTU 2 0..1 BodySite 0..1 CommentOrDescription @@ -136,7 +137,7 @@ Description: "An observation not based on a specimen." EntryElement: SimpleNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation having no components or panel members" -0..0 ObservationComponent +0..0 Components 0..0 PanelMembers EntryElement: CodedNonLaboratoryObservation @@ -149,7 +150,7 @@ Description: "The result of evaluations (measurements, tests, or questions) whos EntryElement: SimpleCodedNonLaboratoryObservation Based on: CodedNonLaboratoryObservation Description: "An observation whose result is a code, and also having no components or panel members" -0..0 ObservationComponent +0..0 Components 0..0 PanelMembers EntryElement: ComponentOnlyNonLaboratoryObservation @@ -169,7 +170,7 @@ Description: "A coded finding based on a specimen collected from a patient." 1..1 Category // MK changed from 1..* to 1..1 to be compatible with DSTU 2 1..1 Patient 0..1 Specimen -0..0 BodySite // Location is determined indirectly from Specimen.CollectionSite +0..0 BodySite // BodySite is determined indirectly from Specimen.CollectionSite Category is OBSCAT#laboratory EntryElement: CodedLaboratoryObservation @@ -181,20 +182,20 @@ Description: "A coded finding from a laboratory test." EntryElement: SimpleLaboratoryObservation Based on: LaboratoryObservation Description: "A coded finding from a laboratory test without further panel members or components." -0..0 ObservationComponent +0..0 Components 0..0 PanelMembers EntryElement: SimpleCodedLaboratoryObservation Based on: CodedLaboratoryObservation Description: "A coded finding from a laboratory test without further panel members or components." -0..0 ObservationComponent +0..0 Components 0..0 PanelMembers Abstract Element: Panel Based on: Observation Description: "A set of independent but related observations that are often presented together to facilitate interpretation, such as a lipid panel." -0..0 ObservationComponent +0..0 Components 0..0 BodySite 0..0 Specimen 0..0 Device @@ -231,12 +232,12 @@ Based on: ConditionPresentOrAbsent Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." //TODO: 0..1 DataValue is SCT#52101004 "Present (qualifier value)" 0..0 DataAbsentReason - Asserter value is type ref(PatientOrPractitionerOrRelatedPerson) + Asserter value is type PatientOrPractitionerOrRelatedPerson 1..1 Patient 0..0 Focus // maybe a family member? 1..1 Category from ConditionCategoryVS // DSTU 2 change - category is 1..1 in Argonaut 0..* BodySite -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/condition-ver-status +1..1 Status from http://hl7.org/fhir/ValueSet/condition-ver-status 1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical 0..1 Severity from http://hl7.org/fhir/ValueSet/condition-severity 0..1 StageInformation @@ -321,7 +322,7 @@ Description: "A finding that a condition is or was not present in the subject at //TODO: 1..1 DataValue is SCT#2667000 "Absent (qualifier value)" 0..0 DataAbsentReason 1..* Category from ConditionCategoryVS - ResourceStatus.CodeableConcept is #refuted // Maybe not right since refuted implies the condition was considered + Status.CodeableConcept is #refuted // Maybe not right since refuted implies the condition was considered 0..* BodySite EntryElement: ClinicalNote diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index a60729da..78141537 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -7,6 +7,7 @@ DomainResource maps to DomainResource: _Entry.EntryId maps to id Language maps to language Narrative maps to text + ImplicitRules maps to implicitRules Metadata.VersionId maps to meta.versionId // Metadata.SourceSystem maps to meta.extension // _Entry.EntryType maps to meta.profile // (this will force a profile -- don't do it) @@ -28,7 +29,7 @@ Narrative maps to Narrative: Observation maps to Observation: Identifier maps to identifier Patient maps to subject -// Asserter maps to performer + Asserter maps to performer Code maps to code Method maps to method // dstu 2 change (name change) @@ -41,6 +42,7 @@ Observation maps to Observation: BodySite.Media maps to bodySite.extension BodySite.DistanceFromLandmark maps to bodySite.extension Device maps to device + CreationDate maps to issued ReferenceRange maps to referenceRange ReferenceRange.Range.LowerBound maps to referenceRange.low ReferenceRange.Range.UpperBound maps to referenceRange.high @@ -49,13 +51,14 @@ Observation maps to Observation: // dstu 2 change (no such attribute) // ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo // dstu 2 change (no such attribute) -// ReferenceRange.ApplicableAgeRange maps to referenceRange.age +// ReferenceRange.ApplicableAgeRange maps to referenceRange.age + Components maps to component Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason // dstu 2 change (no such attribute) - //ObservationComponent.Interpretation maps to component.interpretation + //Components.ObservationComponent.Interpretation maps to component.interpretation Components.ObservationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related @@ -64,7 +67,7 @@ Observation maps to Observation: DataAbsentReason maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued - ResourceStatus maps to status + Status maps to status RelevantTime maps to effective[x] // dstu 2 change (name change) Encounter maps to encounter @@ -93,7 +96,7 @@ ConditionPresent maps to http://fhir.org/guides/argonaut/StructureDefinition/arg BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to encounter ClinicalStatus maps to clinicalStatus - ResourceStatus maps to verificationStatus + Status maps to verificationStatus Onset maps to onset[x] Abatement maps to abatement[x] Severity maps to severity diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 567e24b3..acc52ddc 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -8,6 +8,7 @@ DomainResource maps to DomainResource: // _Entry.EntryId maps to id Language maps to language Narrative maps to text + ImplicitRules maps to implicitRules Metadata.VersionId maps to meta.versionId // Metadata.SourceSystem maps to meta.extension // in R4, this will be meta.source @@ -44,6 +45,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs BodySite.Media maps to bodySite.extension BodySite.DistanceFromLandmark maps to bodySite.extension Device maps to device + CreationDate maps to issued ReferenceRange maps to referenceRange ReferenceRange.Range.LowerBound maps to referenceRange.low ReferenceRange.Range.UpperBound maps to referenceRange.high @@ -54,15 +56,16 @@ Observation maps to Observation: // TODO: observationresults is only for labs Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason - //ObservationComponent.Interpretation maps to component.interpretation + //Components.ObservationComponent.Interpretation maps to component.interpretation Components.ObservationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member + PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) DataValue maps to value[x] DataAbsentReason maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued - ResourceStatus maps to status + Status maps to status RelevantTime maps to effective[x] Encounter maps to context Focus maps to extension @@ -90,7 +93,7 @@ ConditionPresent maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to context ClinicalStatus maps to clinicalStatus - ResourceStatus maps to verificationStatus + Status maps to verificationStatus Onset maps to onset[x] Abatement maps to abatement[x] Severity maps to severity diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 902278d3..ca7599ae 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -73,7 +73,7 @@ Description: "HER2 receptor status. HER2 is a member of the human epidermal grow Code is LNC#48676-1 "HER2 [Interpretation] in Tissue" Specimen is type BreastSpecimen 0..0 Method // pre-coordinated in the Code -0..0 ObservationComponent +0..0 Components PanelMembers.Observation includes 0..* HER2byIHC includes 0..* HER2byFISH @@ -397,7 +397,7 @@ Concept: TBD Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." Observation.Code is TBD#TBD -0..0 ObservationComponent +0..0 Components PanelMembers.Observation includes 1..1 BRCA1Variant includes 1..1 BRCA2Variant diff --git a/spec/shr_core.txt b/spec/shr_core.txt index f87ea3fc..a0d92310 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -373,7 +373,7 @@ Value: unsignedInt Element: CommentOrDescription Concept: MTH#C0947611 Description: "A text note containing additional details, explanation, description, comment, or summarization." -Value: string // change to language-text +Value: string /* Can't restrict "value is type" to a primitive Element: UnsignedIntegerRange @@ -765,7 +765,7 @@ Description: "A location or structure in the body, including tissues, regions, c Element: Identifier Concept: MTH#C0600091 -Description: "A unique string that identifies a specific person or thing." +Description: "Business identifier or external id for this resource." 0..1 Text // cardinality aligns with FHIR STU3 0..1 Purpose from http://hl7.org/fhir/ValueSet/identifier-use 0..1 Type from http://hl7.org/fhir/ValueSet/identifier-type if covered diff --git a/spec/shr_core_map_dstu2.txt b/spec/shr_core_map_dstu2.txt index 83f3bfa3..19ae1f3b 100644 --- a/spec/shr_core_map_dstu2.txt +++ b/spec/shr_core_map_dstu2.txt @@ -54,14 +54,6 @@ TimePeriod maps to Period: BeginDateTime maps to start EndDateTime maps to end -// dstu 2 change (different mapping target) -Geoposition maps to Location: - constrain position to 1..1 - Latitude maps to position.latitude - Longitude maps to position.longitude - Altitude maps to position.altitude - - ContactPoint maps to ContactPoint: TelecomNumberOrAddress maps to value Type maps to system diff --git a/spec/shr_core_map_stu3.txt b/spec/shr_core_map_stu3.txt index 6d5a706a..fb5c0709 100644 --- a/spec/shr_core_map_stu3.txt +++ b/spec/shr_core_map_stu3.txt @@ -54,13 +54,6 @@ HumanName maps to HumanName: TimePeriod maps to Period: BeginDateTime maps to start EndDateTime maps to end - -// To do: consider mapping Geoposition to https://www.hl7.org/fhir/extension-geolocation.html -Geoposition maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-location: - constrain position to 1..1 - Latitude maps to position.latitude - Longitude maps to position.longitude - Altitude maps to position.altitude ContactPoint maps to ContactPoint: TelecomNumberOrAddress maps to value diff --git a/spec/shr_encounter.txt b/spec/shr_encounter.txt index 4aa82261..0979d5bb 100644 --- a/spec/shr_encounter.txt +++ b/spec/shr_encounter.txt @@ -11,7 +11,8 @@ Description: "A description of an interaction between a patient and healthcare p 0..1 EncounterClass 0..* EncounterType 0..1 TimePeriod -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 + StatusOrActive is type Status +1..1 Status from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 0..1 PartOf value is type ref(Encounter) 0..* Diagnosis // SHR Extension @@ -120,18 +121,20 @@ Description: "A detailed description of an interaction between a patient and hea Element: EncounterRequestedContext Based on: RequestedContext Description: "Context for encounter requests." - ResourceStatus from http://hl7.org/fhir/ValueSet/request-status + StatusOrActive is type Status + Status from http://hl7.org/fhir/ValueSet/request-status PriorityRank from http://hl7.org/fhir/ValueSet/request-priority Element: EncounterPerformedContext Based on: PerformedContext Description: "Context for encounters performed." - ResourceStatus from http://hl7.org/fhir/ValueSet/encounter-status + StatusOrActive is type Status + Status from http://hl7.org/fhir/ValueSet/encounter-status OccurrenceTimeOrPeriod is type OccurrencePeriod Reason should be from http://hl7.org/fhir/ValueSet/encounter-reason // RelatedRequest value is type ref(EncounterRequested) // RelatedPlan is type EncounterPlanned - Participation.Participant is type PractitionerOrRelatedPerson + Participation.Participant value is type PractitionerOrRelatedPerson 0..* ServiceGiven 0..1 ServiceProvider @@ -146,37 +149,3 @@ Description: "Context for encounters performed." Description: "Indicates a medical service provided." Value: CodeableConcept // TODO: Link to ICD-10 value set */ - - - -/* -EntryElement: Hospitalization -Based on: - DateTime TimePeriod - Location Reference - Organization Reference - AdmitSource Enum? - Transferred Boolean - Attending Physician-Admission Practitioner - Admitting Condition/Complaint/Diagnosis (-es) Reference(s) - Attending Physician-Discharge Practitioner - Discharge Diagnosis (-es) Reference(s) - Discharge Services Multi Enum - Discharge or Transfer Destination ? - Discharge Summary Document - -EntryElement: EmergencyEncounter -Based on: DetailedEncounter - DateTime TimePeriod - Location Reference - Organization Reference - AdmitSource - Transferred Boolean - Attending Physician-Admission Provider - Admitting Finding/Complaint/Diagnosis (-es) Reference(s) - Attending Physician-Discharge Provider - Discharge Diagnosis (-es) Reference(s) - Discharge Services Multi Enum - Discharge or Transfer Destination ? - Discharge Summary Document - */ \ No newline at end of file diff --git a/spec/shr_encounter_map_dstu2.txt b/spec/shr_encounter_map_dstu2.txt index 598f22b8..adab5f61 100644 --- a/spec/shr_encounter_map_dstu2.txt +++ b/spec/shr_encounter_map_dstu2.txt @@ -9,7 +9,7 @@ Encounter maps to Encounter: Patient maps to patient EncounterType maps to type // ServiceProvider maps to serviceProvider - ResourceStatus maps to status + Status maps to status TimePeriod maps to period // Participation.Participant maps to participant // Participation.Participant[Entity] maps to participant.individual ??? @@ -18,7 +18,7 @@ Encounter maps to Encounter: // Participation.Participant.ParticipationPeriod maps to participant.period // RelatedRequest.Value maps to incomingReferral // constrain location to 0..1 -// Facility maps to location.location +// Location maps to location.location // Reason maps to reason // what maps to apppointment? RelatedPromise? // TBD "HealthConcern" maps to indication @@ -31,7 +31,7 @@ EncounterRequested maps to ReferralRequest: EncounterTopic.??? maps to type //TreatmentCooperation //PaymentSource - ResourceStatus maps to status + Status maps to status //RequestIntent EncounterExpectedPerformanceTime maps to occurrence[x] EncounterExpectedPerformerType maps to specialty diff --git a/spec/shr_encounter_map_stu3.txt b/spec/shr_encounter_map_stu3.txt index 7530e770..cdf4263b 100644 --- a/spec/shr_encounter_map_stu3.txt +++ b/spec/shr_encounter_map_stu3.txt @@ -8,7 +8,7 @@ Encounter maps to Encounter: Patient maps to subject EncounterType maps to type // ServiceProvider maps to serviceProvider - ResourceStatus maps to status + Status maps to status TimePeriod maps to period // Participation.Participant maps to participant // Participation.Participant[Entity] maps to participant.individual ??? @@ -17,7 +17,7 @@ Encounter maps to Encounter: // Participation.Participant.ParticipationPeriod maps to participant.period // RelatedRequest.Value maps to incomingReferral // constrain location to 0..1 -// Facility maps to location.location +// Location maps to location.location // Reason maps to reason // what maps to apppointment? RelatedPromise? // TBD "HealthConcern" maps to indication @@ -30,7 +30,7 @@ EncounterRequested maps to ReferralRequest: EncounterTopic.??? maps to type //TreatmentCooperation //PaymentSource - ResourceStatus maps to status + Status maps to status //RequestIntent EncounterExpectedPerformanceTime maps to occurrence[x] EncounterExpectedPerformerType maps to specialty diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index b1c73102..3995f686 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -27,6 +27,7 @@ Concept: MTH#C1299487 Description: "A person in the role of a patient." 1..* Identifier 1..1 Person +1..1 StatusOrActive is type Active //0..* ref(ExternalHealthRecord) EntryElement: ExternalHealthRecord @@ -46,7 +47,7 @@ Based on: Role Concept: MTH#C2220264 Description: "A person who practices a healing art." 1..1 Person -0..1 ResourceStatus +0..1 StatusOrActive is type Active 1..1 Person.HumanName // only one (limitation imposed by us-core) // 0..* Affiliation // handled by ProviderRelationship in FHIR 1..* Identifier @@ -77,7 +78,7 @@ EntryElement: RelatedPerson Based on: Role Description: "A person in a role defined in relationship to a patient" 0..1 Person -0..1 ResourceStatus +0..1 StatusOrActive is type Active 0..1 RelationshipToPersonOfRecord 0..1 EffectiveTimePeriod 1..1 Person.HumanName // DSTU 2 change (max cardinality of 1 imposed by DSTU 2) @@ -91,7 +92,7 @@ EntryElement: Group Based on: Entity Concept: MTH#C0441833 Description: "A set of entities (personnel, material, or places) to be considered together. May be a pool of like-type resources, a team, or combination of personnel, material and places." -0..1 ResourceStatus +0..1 StatusOrActive is type Active 1..1 Type from http://hl7.org/fhir/ValueSet/group-type 0..1 Title // name 1..1 Actual @@ -142,22 +143,46 @@ Description: "A set of entities (personnel, material, or places) to be considere Value: boolean -EntryElement: Facility +EntryElement: Location Based on: Entity Concept: MTH#C1547538 Description: "Services and space and equipment provided for a particular purpose; a building or place that provides a particular service or is used for a particular industry. Could be a clinical site, community site, or a mobile facility." -1..1 FacilityName +0..1 StatusOrActive is type Status + Status from http://hl7.org/fhir/ValueSet/location-status +0..1 OperationalStatus +1..1 LocationName +0..* Alias +0..1 CommentOrDescription +0..1 Mode from http://hl7.org/fhir/ValueSet/location-mode 1..1 Type from http://hl7.org/fhir/ValueSet/v3-ServiceDeliveryLocationRoleType -1..1 Location +0..* ContactPoint +0..1 Address +0..1 PhysicalType +0..1 Geoposition 0..1 MobileFacility -0..1 ContactPoint 1..1 ref(ManagingOrganization) - Element: FacilityName + Element: OperationalStatus + Description: "The operational status covers operation values most relevant to beds (but can also apply to rooms/units/chairs/etc. such as an isolation unit/dialysis chair). This typically covers concepts such as contamination, housekeeping, and other activities like maintenance." + Value: CodeableConcept should be from http://terminology.hl7.org/ValueSet/v2-0116 + + Element: Alias + Description: "A list of alternate names the subject is or was known as." + Value: string + + Element: Mode + Description: "Indicates whether a resource instance represents a specific item or a class of items." + Value: CodeableConcept + + Element: LocationName Concept: MTH#C3261404 Description: "The DBA (doing business as) or most commonly-used name for a facility." Value: string + Element: PhysicalType + Description: "Physical form of the location, e.g. building, room, vehicle, road." + Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/location-physical-type + Element: MobileFacility Concept: MTH#C0231435 Description: "A facility that moves from place to place, such as Meals-On-Wheels." @@ -175,7 +200,8 @@ Concept: MTH#C0439861 Description: "Any matter of defined composition that has discrete existence, whose origin may be biological, mineral or chemical." 1..1 Type should be from http://hl7.org/fhir/ValueSet/substance-code 0..* Category from http://hl7.org/fhir/ValueSet/substance-category if covered -0..1 ResourceStatus from http://hl7.org/fhir/ValueSet/substance-status + StatusOrActive is type Status +0..1 Status from http://hl7.org/fhir/ValueSet/substance-status 0..1 CommentOrDescription 0..* Ingredient @@ -205,6 +231,7 @@ EntryElement: Medication Based on: Entity Concept: MTH#C0013227 Description: "A type of prescription drug or over-the-counter drug that is used to prevent, treat, or relieve symptoms of a disease or abnormal condition, but excluding vaccines." + StatusOrActive is type Status 1..1 Type from http://hl7.org/fhir/us/core/ValueSet/us-core-medication-codes if covered 0..1 DoseForm 0..1 Brand @@ -489,7 +516,7 @@ Description: "A social or legal structure formed by human beings." 0..1 Type could be from http://hl7.org/fhir/ValueSet/organization-type 1..* Address 1..* ContactPoint -1..1 ResourceStatus +1..1 StatusOrActive is type Active 0..1 PartOf value is type ref(Organization) Element: OrganizationName @@ -497,16 +524,10 @@ Description: "A social or legal structure formed by human beings." Description: "The name of the organization." Value: string - -EntryElement: Location -Based on: Entity -Concept: MTH#C0450429 -Description: "A position, site, or point in space where something can be found." -Value: Address or Geoposition or GeopoliticalLocation - EntryElement: Device Based on: Entity Description: "A specific durable physical device used in diagnosis or treatment. The value is the coding for a type of device, for example, a CPAP machine. The same device might be used on multiple patients." + StatusOrActive is type Status 1..1 Type from DeviceVS // currently (4/2018) called 'key' in CIMI 1..1 DeviceUdi // DSTU 2 change -- Argonaut requires 1..1 Udi (see http://build.fhir.org/ig/Healthedata1/Argo-DSTU2/StructureDefinition-argo-device.html) 0..1 VendorModelNumber // called 'model' in CIMI @@ -545,7 +566,8 @@ EntryElement: Specimen Based on: Entity Description: "A specimen is a substance, physical object, or collection of objects, that the laboratory considers a single discrete, uniquely identified unit that is the subject of one or more steps in the laboratory workflow. A specimen may include multiple physical pieces as long as they are considered a single unit within the laboratory workflow. A specimen results from one to many specimen collection procedures, and may be contained in multiple specimen containers. Specimen may have one or more processing activities." 0..1 AccessionIdentifier -0..1 ResourceStatus from http://hl7.org/fhir/ValueSet/specimen-status + StatusOrActive is type Status +0..1 Status from http://hl7.org/fhir/ValueSet/specimen-status 1..1 Type from http://hl7.org/fhir/ValueSet/v2-0487 0..1 CollectionSource 0..1 CollectionTime diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index 782a39b3..513027a2 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -4,7 +4,7 @@ Target: FHIR_DSTU_2 Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient: // dstu 2 change (different mapping target) Identifier maps to identifier - ResourceStatus maps to active + Active maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -30,7 +30,7 @@ Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient Practitioner maps to Practitioner: // dstu 2 change (different mapping target) Identifier maps to identifier - ResourceStatus maps to active + Active maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -44,7 +44,7 @@ Practitioner maps to Practitioner: // dstu 2 change (different mapping target) RelatedPerson maps to RelatedPerson: Identifier maps to identifier - ResourceStatus maps to extension + Active maps to extension Person.HumanName maps to name Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender @@ -56,7 +56,7 @@ RelatedPerson maps to RelatedPerson: Organization maps to Organization: Identifier maps to identifier - ResourceStatus maps to active + Active maps to active Type maps to type OrganizationName maps to name Address maps to address @@ -65,7 +65,7 @@ Organization maps to Organization: Group maps to Group: Identifier maps to identifier - ResourceStatus maps to extension + Active maps to extension Type maps to type Actual maps to actual constrain code to 0..0 // why? @@ -79,21 +79,27 @@ Group maps to Group: MemberParticipation.InactiveFlag maps to member.inactive Count maps to quantity -Facility maps to Location: +Location maps to Location: Identifier maps to identifier - ResourceStatus maps to status + Status maps to status + OperationalStatus maps to operationalStatus + LocationName maps to name + Alias maps to alias + CommentOrDescription maps to description + Mode maps to mode Type maps to type - FacilityName maps to name - Location[Address] maps to address - Location[Geoposition].Latitude maps to position.latitude - Location[Geoposition].Longitude maps to position.longitude - Location[Geoposition].Altitude maps to position.altitude ContactPoint maps to telecom + Address maps to address + PhysicalType maps to physicalType + Geoposition.Latitude maps to position.latitude + Geoposition.Longitude maps to position.longitude + Geoposition.Altitude maps to position.altitude ManagingOrganization maps to managingOrganization + MobileFacility maps to extension Substance maps to Substance: Identifier maps to identifier - ResourceStatus maps to status + Status maps to status Type maps to code Ingredient maps to ingredient Ingredient.IngredientAmount maps to ingredient.quantity @@ -101,7 +107,7 @@ Substance maps to Substance: Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medication: Identifier maps to extension - ResourceStatus maps to status + Status maps to status Type maps to code // dstu 2 change (different attribute) DoseForm maps to product.form @@ -125,7 +131,7 @@ Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medi Specimen maps to Specimen: Identifier maps to identifier - ResourceStatus maps to status + Status maps to status Type maps to type AccessionIdentifier maps to accessionIdentifier CollectionSource maps to subject @@ -146,7 +152,7 @@ Specimen maps to Specimen: Device maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-device: Identifier maps to identifier - ResourceStatus maps to status + Status maps to status Type maps to type // dstu 2 change (different attribute) DeviceUdi maps to udi diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index 52837ee0..ea04d4cd 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -4,7 +4,7 @@ Target: FHIR_STU_3 Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: Identifier maps to identifier - ResourceStatus maps to active + Active maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -30,7 +30,7 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner: Identifier maps to identifier - ResourceStatus maps to active + Active maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -45,7 +45,7 @@ Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-pra RelatedPerson maps to RelatedPerson: Identifier maps to identifier - ResourceStatus maps to active + Active maps to active Person.HumanName maps to name Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender @@ -57,7 +57,7 @@ RelatedPerson maps to RelatedPerson: Organization maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization: Identifier maps to identifier - ResourceStatus maps to active + Active maps to active OrganizationName maps to name Type maps to type Address maps to address @@ -66,7 +66,7 @@ Organization maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-org Group maps to Group: Identifier maps to identifier - ResourceStatus maps to active + Active maps to active Type maps to type Actual maps to actual constrain code to 0..0 @@ -80,21 +80,28 @@ Group maps to Group: MemberParticipation.InactiveFlag maps to member.inactive Count maps to quantity -Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-location: +Location maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-location: Identifier maps to identifier + Status maps to status + OperationalStatus maps to operationalStatus + LocationName maps to name + Alias maps to alias + CommentOrDescription maps to description + Mode maps to mode Type maps to type - FacilityName maps to name - Location[Address] maps to address - Location[Geoposition].Latitude maps to position.latitude - Location[Geoposition].Longitude maps to position.longitude - Location[Geoposition].Altitude maps to position.altitude ContactPoint maps to telecom + Address maps to address + PhysicalType maps to physicalType + Geoposition.Latitude maps to position.latitude + Geoposition.Longitude maps to position.longitude + Geoposition.Altitude maps to position.altitude ManagingOrganization maps to managingOrganization + MobileFacility maps to extension Substance maps to Substance: Identifier maps to identifier Type maps to code - ResourceStatus maps to status + Status maps to status Ingredient maps to ingredient Ingredient.IngredientAmount maps to ingredient.quantity Ingredient.SubstanceOrCode maps to ingredient.substance[x] @@ -118,7 +125,7 @@ Specimen maps to Specimen: Identifier maps to identifier Type maps to type AccessionIdentifier maps to accessionIdentifier - ResourceStatus maps to status + Status maps to status CollectionSource maps to subject SourceSpecimen maps to parent ReceivedTime maps to receivedTime diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index 75f1ef01..64dc0fcf 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -16,7 +16,8 @@ Concept: LNC#54114-4 "Family member health history [USSG-FHT] Family member" // Description: "The health history of a patient's family member." 1..1 Patient 1..1 FamilyMember -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/history-status + StatusOrActive is type Status +1..1 Status from http://hl7.org/fhir/ValueSet/history-status 0..* FamilyMemberConditionPresent diff --git a/spec/shr_financial.txt b/spec/shr_financial.txt index f56d0d37..b7b24e0a 100644 --- a/spec/shr_financial.txt +++ b/spec/shr_financial.txt @@ -11,7 +11,8 @@ EntryElement: Coverage Based on: DomainResource Concept: MTH#C0021682 "HealthInsurance" Description: "Health insurance coverage available (even if not used for payment for a given encounter)." -0..1 ResourceStatus from http://hl7.org/fhir/ValueSet/fm-status + StatusOrActive is type Status +0..1 Status from http://hl7.org/fhir/ValueSet/fm-status 1..1 CoverageType should be from http://hl7.org/fhir/ValueSet/coverage-type 0..1 InsuranceMemberId 0..1 PolicyHolder diff --git a/spec/shr_financial_map_dstu2.txt b/spec/shr_financial_map_dstu2.txt index c5ca8e74..5fab2084 100644 --- a/spec/shr_financial_map_dstu2.txt +++ b/spec/shr_financial_map_dstu2.txt @@ -6,7 +6,7 @@ Target: FHIR_DSTU_2 Coverage maps to Coverage: // dstu 2 change (no such attribute) Identifier maps to identifier - ResourceStatus maps to status + Status maps to status CoverageType maps to type InsuranceMemberId maps to subscriberId EffectiveTimePeriod maps to period diff --git a/spec/shr_financial_map_stu3.txt b/spec/shr_financial_map_stu3.txt index 669c4b2e..19234968 100644 --- a/spec/shr_financial_map_stu3.txt +++ b/spec/shr_financial_map_stu3.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 Coverage maps to Coverage: Identifier maps to identifier - ResourceStatus maps to status + Status maps to status CoverageType maps to type InsuranceMemberId maps to subscriberId EffectiveTimePeriod maps to period diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index dda6f24e..2c5109d7 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -79,19 +79,19 @@ Description: "A record of the use of a medication. If the medication is given as Asserter value is type PersonOrOrganization 1..1 CreationDate // us-core required 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category - ResourceStatus from http://hl7.org/fhir/ValueSet/medication-statement-status + Status from http://hl7.org/fhir/ValueSet/medication-statement-status 0..1 Reason // Upper cardinality imposed by DSTU 2 0..0 Participation -0..0 Facility +0..0 Location RelatedRequest value is type ref(MedicationRequested) // or CarePlan or ProcedureRequest or ReferralRequest EntryElement: MedicationAdministered Based on: MedicationExposure Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category - ResourceStatus from http://hl7.org/fhir/ValueSet/medication-admin-status + Status from http://hl7.org/fhir/ValueSet/medication-admin-status 0..1 Participation - Participation.Participant is type PatientOrPractitionerOrRelatedPerson // DSTU 2 change (max cardinality = 1), also, DSTU 2 participant excludes Device + Participation.Participant value is type PatientOrPractitionerOrRelatedPerson // DSTU 2 change (max cardinality = 1), also, DSTU 2 participant excludes Device 0..0 Participation.ParticipationType RelatedRequest value is type ref(MedicationRequested) @@ -133,7 +133,7 @@ Description: "An order for a medication to be dispensed and instructions for use 1..1 Medication 0..1 Dosage 1..1 Requester value is type ref(Practitioner) - ResourceStatus from http://hl7.org/fhir/ValueSet/medication-request-status + Status from http://hl7.org/fhir/ValueSet/medication-request-status PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority 0..1 NumberOfRefillsAllowed 0..1 QuantityPerDispense diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index 0dce77c6..ea561041 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -32,7 +32,7 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ // fix taken to #y Reason maps to reasonForUse[x] OccurrenceTimeOrPeriod maps to effective[x] - ResourceStatus maps to status + Status maps to status // DSTU 2 change (added Dosage as in-line element) Dosage.DoseAmount maps to dosage.quantity[x] Dosage.TimingOfDoses maps to dosage.timing @@ -62,7 +62,7 @@ MedicationAdministered maps to MedicationAdministration: // DSTU 2 change (name change) Reason maps to reasonGiven OccurrenceTimeOrPeriod maps to effectiveTime[x] - ResourceStatus maps to status + Status maps to status // DSTU 2 change (more restrictive type) Participation.Participant maps to practitioner // DSTU 2 change (no such attribute) @@ -98,7 +98,7 @@ MedicationRequested maps to http://fhir.org/guides/argonaut/StructureDefinition/ constrain dosageInstruction to 0..1 // DSTU 2 change (name change) Reason maps to reason[x] - ResourceStatus maps to status + Status maps to status ExpectedPerformanceTime maps to dispenseRequest.validityPeriod // DSTU 2 change (no such attribute) // PriorityRank maps to priority diff --git a/spec/shr_medication_map_stu3.txt b/spec/shr_medication_map_stu3.txt index d292611e..afe039a3 100644 --- a/spec/shr_medication_map_stu3.txt +++ b/spec/shr_medication_map_stu3.txt @@ -26,7 +26,7 @@ MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c fix taken to #y Reason maps to reasonCode OccurrenceTimeOrPeriod maps to effective[x] - ResourceStatus maps to status + Status maps to status Encounter maps to context RelatedRequest maps to basedOn @@ -42,7 +42,7 @@ MedicationAdministered maps to MedicationAdministration: Category maps to category Reason maps to reasonCode OccurrenceTimeOrPeriod maps to effective[x] - ResourceStatus maps to status + Status maps to status Participation maps to performer Participation.Participant maps to performer.actor // Participation.ParticipationType maps to performer.role (no role in med administration!) @@ -69,7 +69,7 @@ MedicationRequested maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c constrain dosageInstruction to 0..1 Dosage maps to dosageInstruction Reason maps to reasonCode - ResourceStatus maps to status + Status maps to status ExpectedPerformanceTime maps to dispenseRequest.validityPeriod PriorityRank maps to priority PerformerInstructions maps to note.text diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 4b711de5..12d30cc9 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -34,7 +34,7 @@ A person's Employment Status could change over time, for example, a person could Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 Code is LNC#74165-2 "HistoryOfEmploymentStatus" -0..0 ObservationComponent +0..0 Components 0..0 Focus EntryElement: RetirementDate @@ -45,19 +45,19 @@ A person can be both retired and employed (an Employment Status); most often, a Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." DataValue value is type dateTime Code is LNC#87510-4 "Date of Retirement" -0..0 ObservationComponent +0..0 Components 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. 0..0 Focus EntryElement: CombatZonePeriod Based on: SocialHistoryObservation -Concept: LNC#87511-2 +Concept: LNC#87511-2 "Combat zone AndOr hazardous duty work dates" Description: "Self-reported date range(s) when a person worked in what is considered a combat zone; sometimes called a hazardous duty work. Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones. Multiple periods in combat zone should be recorded using multiple FHIR resources." -Value: TimePeriod - Code is LNC#87511-2 -0..0 ObservationComponent -0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. + DataValue value is type TimePeriod + Code is LNC#87511-2 "Combat zone AndOr hazardous duty work dates" +0..0 Components +0..0 RelevantTime // Since the result data value contains the time period of combat zone activity, the relevant time is redundant 0..0 Focus EntryElement: UsualWork @@ -166,6 +166,7 @@ includes 0..1 IsCurrentJob Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " DataValue value is type string Code is LNC#63761-1 + 0..0 ReferenceRange Element: OccupationalHazard Based on: ObservationComponent @@ -173,6 +174,7 @@ includes 0..1 IsCurrentJob Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." DataValue value is type string Code is LNC#87729-0 + 0..0 ReferenceRange Element: WorkSchedule Based on: CodedObservationComponent @@ -207,7 +209,7 @@ includes 0..1 IsCurrentJob Element: SocialHistoryObservation Based on: Observation Description: "A simplified observation for social histories." - Category is OBSCAT#social-history + Category is OBSCAT#social-history "Social History" 0..0 Method 0..0 BodySite 0..0 ReferenceRange @@ -235,7 +237,7 @@ Description: "The result of social history questions, whose answer is expressed EntryElement: MilitaryServiceHistory Based on: CodedSocialHistoryObservation Description: "History of service in the US military." - Category is OBSCAT#social-history + Category is OBSCAT#social-history "Social History" Code is MTH#C3714797 Components.ObservationComponent includes 1..1 MilitaryStatus diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt index 816d06cf..e91e2225 100644 --- a/spec/shr_occupation_map_dstu2.txt +++ b/spec/shr_occupation_map_dstu2.txt @@ -3,7 +3,7 @@ Namespace: odh Target: FHIR_DSTU_2 SocialHistoryObservation maps to Observation: - Identifier maps to identifier +/* Identifier maps to identifier Patient maps to subject Code maps to code Category maps to category @@ -11,12 +11,13 @@ SocialHistoryObservation maps to Observation: Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason - //ObservationComponent.Interpretation maps to component.interpretation + //Components.ObservationComponent.Interpretation maps to component.interpretation Components.ObservationComponent.ReferenceRange maps to component.referenceRange DataValue maps to value[x] DataAbsentReason maps to dataAbsentReason RelevantTime maps to effective[x] Encounter maps to context +*/ constrain implicitRules to 0..0 constrain contained to 0..0 constrain modifierExtension to 0..0 diff --git a/spec/shr_occupation_map_stu3.txt b/spec/shr_occupation_map_stu3.txt index 57eea296..642b250d 100644 --- a/spec/shr_occupation_map_stu3.txt +++ b/spec/shr_occupation_map_stu3.txt @@ -12,7 +12,7 @@ SocialHistoryObservation maps to Observation: Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason - //ObservationComponent.Interpretation maps to component.interpretation + //Components.ObservationComponent.Interpretation maps to component.interpretation Components.ObservationComponent.ReferenceRange maps to component.referenceRange // constrain related to 0..0 DataValue maps to value[x] diff --git a/spec/shr_oncocore.txt b/spec/shr_oncocore.txt index 599f0a19..53d32849 100644 --- a/spec/shr_oncocore.txt +++ b/spec/shr_oncocore.txt @@ -56,7 +56,7 @@ Concept: SCT#246453008 "Course of illness (attribute)" 0..0 BodySite 0..0 Device 0..0 PanelMembers -0..0 ObservationComponent +0..0 Components Element: CancerProgressionEvidence Description: "The type of evidence considered in determining disease progression." diff --git a/spec/shr_oncocore_stage.txt b/spec/shr_oncocore_stage.txt index 7fd587aa..72d14282 100644 --- a/spec/shr_oncocore_stage.txt +++ b/spec/shr_oncocore_stage.txt @@ -39,7 +39,7 @@ Description: "Abstract parent class for members of cancer staging panels. Can 0..1 Method is type CancerStagingSystem 0..0 BodySite 0..0 ReferenceRange -0..0 ObservationComponent +0..0 Components 0..0 PanelMembers 0..0 Device diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index a0a7c57c..a4f0365a 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -20,9 +20,9 @@ Description: "A procedure that has been performed." //0..* Indication 0..* ref(Device) Participation.OnBehalfOf value is type ref(Organization) - ResourceStatus from http://hl7.org/fhir/ValueSet/event-status + Status from http://hl7.org/fhir/ValueSet/event-status // Participation.Participant.EntityOrRole is type ref(Practitioner) - Participation.Participant is type FHIRProcedureParticipant + Participation.Participant value is type PersonOrOrganizationOrDevice RelatedRequest value is type ref(ProcedureRequested) //0..* OutputFinding // in CIMI, this is part of ProcedureTopic, but the definition hinges on performance, so it belongs here, not there. @@ -48,14 +48,14 @@ Based on: ActionNotPerformed //0..1 PartOf value is type ref(ProcedurePerformed or Not Performed) ??? 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation -1..1 ResourceStatus // must be from http://hl7.org/fhir/ValueSet/event-status // DSTU 2 change (different required value sets in v2 and v3) +1..1 Status // must be from http://hl7.org/fhir/ValueSet/event-status // DSTU 2 change (different required value sets in v2 and v3) RelatedRequest value is type ref(ProcedureRequested) EntryElement: ProcedureRequested Based on: ActionRequested PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) - ResourceStatus from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) -0..1 Requester is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. + Status from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) +0..1 Requester value is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. 1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite 0..1 PartOf value is type ref(ProcedurePerformed) diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 13ac8db1..5252cb1e 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -28,13 +28,13 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a Participation.ParticipationType maps to performer.role // DSTU 2 change (no such attribute) // Participation.OnBehalfOf maps to performer.onBehalfOf - ResourceStatus maps to status + Status maps to status // TODO The following statement is failing it might be a bug // Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method RelatedRequest.Value maps to request // RelatedPlan maps to definition Outcome maps to outcome - Facility maps to location + Location maps to location ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) @@ -87,7 +87,7 @@ ProcedureRequested maps to ProcedureRequest: BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to encounter Reason maps to reason[x] - ResourceStatus maps to status + Status maps to status // DSTU 2 change (no such attribute) // RequestIntent maps to intent // DSTU 2 change (name change) diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index 6f0bda2c..96a1d7d0 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -20,13 +20,13 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Participation.Participant maps to performer.actor Participation.ParticipationType maps to performer.role Participation.OnBehalfOf maps to performer.onBehalfOf - ResourceStatus maps to status + Status maps to status // TODO The following statement is failing it might be a bug // Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method RelatedRequest.Value maps to basedOn // RelatedPlan maps to definition Outcome maps to outcome - Facility maps to location + Location maps to location ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: @@ -76,7 +76,7 @@ ProcedureRequested maps to ProcedureRequest: BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to context Reason maps to reasonCode - ResourceStatus maps to status + Status maps to status RequestIntent maps to intent ExpectedPerformanceTime maps to occurrence[x] ExpectedPerformerType maps to performerType diff --git a/spec/shr_research.txt b/spec/shr_research.txt index 7afd70b6..3d991b64 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -18,11 +18,12 @@ Description: "A clinical trial or similar research study. Reference: list of FDA 0..1 Jurisdiction 0..* ContactDetail 0..1 PrincipalInvestigator -0..* Facility +0..* Location 0..1 TerminationReason 0..* Annotation 0..* StudyArm -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/research-study-status + StatusOrActive is type Status +1..1 Status from http://hl7.org/fhir/ValueSet/research-study-status Element: Enrollment Concept: MTH#C4041024 @@ -57,6 +58,7 @@ Description: "Record of a subject's enrollment and participation in a research s 0..1 Identifier // cardinality constraint 1..1 ref(Patient) 1..1 ref(ResearchStudy) -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/research-subject-status + StatusOrActive is type Status +1..1 Status from http://hl7.org/fhir/ValueSet/research-subject-status 1..1 ParticipationPeriod 0..1 TerminationReason from ResearchSubjectTerminationReasonVS diff --git a/spec/shr_research_map_stu3.txt b/spec/shr_research_map_stu3.txt index 3a839239..e18a3728 100644 --- a/spec/shr_research_map_stu3.txt +++ b/spec/shr_research_map_stu3.txt @@ -3,19 +3,18 @@ Namespace: shr.research Target: FHIR_STU_3 - ResearchStudy maps to ResearchStudy: Identifier maps to identifier Title maps to title PartOf maps to partOf - ResourceStatus maps to status + Status maps to status Enrollment maps to enrollment EffectiveTimePeriod maps to period Sponsor maps to sponsor Jurisdiction maps to jurisdiction ContactDetail maps to contact PrincipalInvestigator maps to principalInvestigator - Facility maps to site + Location maps to site TerminationReason maps to reasonStopped Annotation maps to note StudyArm.Title maps to arm.name @@ -26,5 +25,5 @@ ResearchSubject maps to ResearchSubject: Identifier maps to identifier Patient maps to individual ResearchStudy maps to study - ResourceStatus maps to status + Status maps to status ParticipationPeriod maps to period From dfb276c0e3b31f91fa09cb37c60b1cdabe17a4df Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 4 Feb 2019 17:25:54 -0500 Subject: [PATCH 183/289] Minor doc refinements --- spec/shr_base_finding.txt | 2 +- spec/shr_core.txt | 11 +---------- spec/shr_entity.txt | 6 +++--- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 2ef2acec..b92416e8 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -57,7 +57,7 @@ Description: "A non-independent finding whose result is a quantity." Abstract Element: ConditionOrObservation Based on: ClinicalStatement Description: "An assertion, determination, opinion, evaluation, result, observation, or measurement made by a person or device." -1..1 Code // cardinality constraint on existing property +1..1 Code 0..1 DataValue 0..1 DataAbsentReason 0..1 Focus diff --git a/spec/shr_core.txt b/spec/shr_core.txt index a0d92310..e7d80355 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -107,7 +107,7 @@ Description: "A set of codes drawn from different coding systems, representing t 0..1 DisplayText Element: Code -Description: "The main identifier for the lab, procedure, condition, etc." +Description: "The main type identifier for a lab, procedure, condition, etc., usually drawn from a controlled vocabulary." Value: CodeableConcept Element: Range @@ -335,19 +335,16 @@ Description: "An address expressed using postal conventions (as opposed to GP Value: string Element: City - Based on: GeopoliticalLocation Concept: MTH#C1555315 Description: "The name of a municipality, city, town, village or other community or delivery center. (Source: HL7 FHIR)." Value: string Element: District - Based on: GeopoliticalLocation Concept: MTH#C0079170 Description: "The name of the administrative area at a level below that of a state but above that of a city or town. In the US, a county. Outside the US, a district or the equivalent. (Source: HL7 FHIR)." Value: string Element: State - Based on: GeopoliticalLocation Concept: MTH#C1552743 Description: "Sub-unit of a country with limited sovereignty in a federally organized country. A code may be used if codes are in common use (i.e. US 2 letter state codes). (Source: HL7 FHIR)." Value: string @@ -358,7 +355,6 @@ Description: "An address expressed using postal conventions (as opposed to GP Value: string Element: Country - Based on: GeopoliticalLocation Concept: MTH#C0454664 Description: "Country - a nation as commonly understood or generally accepted, expressed in ISO 3166 Alpha-2 (2-letter) codes." Value: string @@ -542,11 +538,6 @@ Value: Duration //--------------- Locations and Addresses ----------------- -Element: GeopoliticalLocation -Concept: MTH#C0017446 -Description: "The countries of the world and major geopolitical subregions, such as US states." - - Element: Geoposition Concept: TBD Description: "The location on the surface of the Earth, described by a latitude and longitude (and optional altitude)." diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 3995f686..269c28b9 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -5,7 +5,7 @@ Uses: shr.core, shr.base, shr.medication, shr.procedure Abstract Element: EntityOrRole Based on: DomainResource -Description: "Parent class for both Entity and Role." +Description: "Abstract parent class for both Entity and Role." Abstract Element: Role Based on: EntityOrRole @@ -288,9 +288,9 @@ Description: "A type of prescription drug or over-the-counter drug that is used Description: "The kind of container the medication comes in." Value: CodeableConcept -EntryElement: Person +EntryElement: Person Concept: MTH#C0027361 -Description: "A person relevant to the health or social situation of the subject (including the person of record him or herself)." +Description: "A person relevant to the health or social situation of the subject (including the subject him- or herself)." 1..* HumanName //0..1 AnonymizedFlag //0..1 FictionalPersonFlag From da5526df4bae65bfd6bbb8e130d89f8df5e59956 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 4 Feb 2019 19:02:54 -0500 Subject: [PATCH 184/289] Fixed numerous mapping errors that I missed Replaced the default config with the shr config so I don't miss compiling half the code accidentally when using the default config. Renamed ig-shr-config.json to config.json --- spec/config.json | 35 +++++++++++++++++++++--------- spec/ig-shr-config.json | 36 ------------------------------- spec/shr_allergy.txt | 6 ++++-- spec/shr_allergy_map_dstu2.txt | 4 ++-- spec/shr_base.txt | 6 ++++-- spec/shr_base_action.txt | 3 ++- spec/shr_base_map_dstu2.txt | 5 ++--- spec/shr_base_map_stu3.txt | 4 ++-- spec/shr_encounter.txt | 3 ++- spec/shr_entity.txt | 4 +++- spec/shr_entity_map_dstu2.txt | 8 +++---- spec/shr_familyhistory.txt | 4 +++- spec/shr_financial.txt | 21 ++++++++++++------ spec/shr_financial_map_dstu2.txt | 11 +++++----- spec/shr_financial_map_stu3.txt | 7 ++++-- spec/shr_medication.txt | 4 +++- spec/shr_medication_map_dstu2.txt | 4 ++-- spec/shr_occupation_map_dstu2.txt | 4 +--- spec/shr_occupation_map_stu3.txt | 6 ++++-- spec/shr_procedure.txt | 9 +++++--- spec/shr_procedure_map_dstu2.txt | 4 ++-- 21 files changed, 97 insertions(+), 91 deletions(-) delete mode 100644 spec/ig-shr-config.json diff --git a/spec/config.json b/spec/config.json index 6118857e..bdb258ac 100644 --- a/spec/config.json +++ b/spec/config.json @@ -1,21 +1,36 @@ { - "projectName": "Example Project", - "projectShorthand": "EXAMPLE", - "projectURL": "http://example.com", - "fhirURL": "http://example.com/fhir", - "fhirTarget": "FHIR_STU_3", - "implementationGuide": { - "indexContent": "exampleIndexContent.html" + "projectName": "Standard Health Record", + "projectShorthand": "SHR", + "projectURL": "http://hl7.org/fhir/us/projectURL/", + "fhirURL": "http://hl7.org/fhir/us/fhirURL/", + "entryTypeURL": "http://hl7.org/fhir/us/entryTypeURL/spec", + "fhirTarget": "FHIR_DSTU_2", + "implementationGuide": + { + "npmName": "hl7.fhir.us.shr", + "version": "0.1.0", + "includeLogicalModels": true, + "includeModelDoc": true, + "indexContent": "LandingPageShr.html", + "historyLink": "http://hl7.org/fhir/us/shr/history.html", + "primarySelectionStrategy": + { + "strategy": "entry" + } }, - "publisher": "Example Publisher", + "filterStrategy": + { + "filter": false + }, + "publisher": "The MITRE Corporation: Standard Health Record Collaborative", "contact": [ { "telecom": [ { "system": "url", - "value": "http://example.com" + "value": "http://standardhealthrecord.org" } ] } ] -} +} \ No newline at end of file diff --git a/spec/ig-shr-config.json b/spec/ig-shr-config.json deleted file mode 100644 index bdb258ac..00000000 --- a/spec/ig-shr-config.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "projectName": "Standard Health Record", - "projectShorthand": "SHR", - "projectURL": "http://hl7.org/fhir/us/projectURL/", - "fhirURL": "http://hl7.org/fhir/us/fhirURL/", - "entryTypeURL": "http://hl7.org/fhir/us/entryTypeURL/spec", - "fhirTarget": "FHIR_DSTU_2", - "implementationGuide": - { - "npmName": "hl7.fhir.us.shr", - "version": "0.1.0", - "includeLogicalModels": true, - "includeModelDoc": true, - "indexContent": "LandingPageShr.html", - "historyLink": "http://hl7.org/fhir/us/shr/history.html", - "primarySelectionStrategy": - { - "strategy": "entry" - } - }, - "filterStrategy": - { - "filter": false - }, - "publisher": "The MITRE Corporation: Standard Health Record Collaborative", - "contact": [ - { - "telecom": [ - { - "system": "url", - "value": "http://standardhealthrecord.org" - } - ] - } - ] -} \ No newline at end of file diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index 849d33c5..b2c1ebc2 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -15,10 +15,12 @@ Description: "A finding related to the presence of an individual's risk or sensi Asserter value is type PatientOrPractitionerOrRelatedPerson Recorder value is type PatientOrPractitioner // FHIR only allows Patient or Practitioner as recorder 1..1 Patient -1..1 Status from http://hl7.org/fhir/ValueSet/allergy-verification-status +1..1 Status // from http://hl7.org/fhir/ValueSet/allergy-verification-status + // Conflict between V2 and V3 -- Cannot override value set constraint from http://hl7.org/fhir/ValueSet/allergy-intolerance-status to http://hl7.org/fhir/ValueSet/allergy-verification-status 0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status 0..0 Focus // always the patient -1..1 DataValue from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered // DSTU 2 change different required value sets) + DataValue value is type CodeableConcept +1..1 DataValue // from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered // DSTU 2 change different required value sets 0..1 SubstanceCategory // DSTU 2 change (restrict upper cardinality to 1) 0..1 Onset 0..1 Type from http://hl7.org/fhir/ValueSet/allergy-intolerance-type diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index 95e4b1cc..53ad6ca7 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -6,9 +6,9 @@ Target: FHIR_DSTU_2 AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: Identifier maps to identifier Patient maps to patient - Asserter maps to asserter + Asserter maps to reporter Recorder maps to recorder - CreationDate maps to assertedDate + CreationDate maps to recordedDate DataValue maps to substance Type maps to type SubstanceCategory maps to category diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 253d6e9a..bab58fb0 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -38,7 +38,8 @@ Description: "Obsolete. Use DomainResource" Abstract Element: Resource Description: "Parent class for any item in clinical or administrative health-related system. Contains metadata attributes that apply to any item represented in the standard health record. An DomainResource can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." 0..1 Metadata -0..1 Language from http://hl7.org/fhir/ValueSet/languages if covered // DSTU 2 change -- language has required binding in Argonaut +0..1 Language // from http://hl7.org/fhir/ValueSet/languages +// language has required binding in Argonaut in DSTU 2 that is different than the extensible binding in us-core-patient. Not able to resolve this. 0..1 ImplicitRules Element: Language @@ -79,7 +80,8 @@ Description: "Parent class for any item in clinical or administrative health-rel Element: Status Based on: StatusOrActive Description: "A state that relates to the workflow or interpretation of this resource. Certain status values can modify the meaning of the resource, for example, entered-in-error. When a boolean value is used, Status of true indicates the record is active, false means inactive." - Value: CodeableConcept should be from http://hl7.org/fhir/ValueSet/resource-status + Value: CodeableConcept // should be from http://hl7.org/fhir/ValueSet/resource-status + // cannot specify the preferred value set here because there are conflicting required value sets in some status attributes, particularly Encounter. It will generate an error to map preferred to required. Element: Active Based on: StatusOrActive diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index ac13cb09..2d938439 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -77,7 +77,8 @@ Based on: ActionStatement Description: "Abstract class representing a request for any type of action to be performed." 0..1 Requester 1..1 RequestIntent -1..1 Status should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) +1..1 Status // should be from http://hl7.org/fhir/ValueSet/request-status + // DSTU2 change (conflicting required value sets in MedicationRequest between argo and us-core) 0..1 ExpectedPerformanceTime 0..1 ExpectedPerformerType 0..1 ExpectedPerformer diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 78141537..7ee99ccd 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -52,9 +52,8 @@ Observation maps to Observation: // ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo // dstu 2 change (no such attribute) // ReferenceRange.ApplicableAgeRange maps to referenceRange.age - Components maps to component - Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - Components.ObservationComponent.Code maps to component.code + Components maps to component + Components.ObservationComponent.Code maps to component.code (slice on = code.coding.code; slice strategy = includes) Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason // dstu 2 change (no such attribute) diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index acc52ddc..2c61595f 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -52,8 +52,8 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.Type maps to referenceRange.type ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age - Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - Components.ObservationComponent.Code maps to component.code + Components maps to component + Components.ObservationComponent.Code maps to component.code (slice on = code.coding.code; slice strategy = includes) Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //Components.ObservationComponent.Interpretation maps to component.interpretation diff --git a/spec/shr_encounter.txt b/spec/shr_encounter.txt index 0979d5bb..37d2d368 100644 --- a/spec/shr_encounter.txt +++ b/spec/shr_encounter.txt @@ -12,7 +12,8 @@ Description: "A description of an interaction between a patient and healthcare p 0..* EncounterType 0..1 TimePeriod StatusOrActive is type Status -1..1 Status from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 +1..1 Status // from http://hl7.org/fhir/ValueSet/encounter-status +// Required value set in STU 3 is incompatible with DSTU 2 0..1 PartOf value is type ref(Encounter) 0..* Diagnosis // SHR Extension diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 269c28b9..a376bdc3 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -528,7 +528,9 @@ EntryElement: Device Based on: Entity Description: "A specific durable physical device used in diagnosis or treatment. The value is the coding for a type of device, for example, a CPAP machine. The same device might be used on multiple patients." StatusOrActive is type Status -1..1 Type from DeviceVS // currently (4/2018) called 'key' in CIMI + Status + // from http://hl7.org/fhir/ValueSet/devicestatus in V2 argo; from http://hl7.org/fhir/ValueSet/device-status in V3 us-core +1..1 Type from DeviceVS 1..1 DeviceUdi // DSTU 2 change -- Argonaut requires 1..1 Udi (see http://build.fhir.org/ig/Healthedata1/Argo-DSTU2/StructureDefinition-argo-device.html) 0..1 VendorModelNumber // called 'model' in CIMI 0..1 ManufacturerName // string, not ref(Organization) - only because of mapping to FHIR diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index 513027a2..086daab7 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -82,9 +82,9 @@ Group maps to Group: Location maps to Location: Identifier maps to identifier Status maps to status - OperationalStatus maps to operationalStatus + OperationalStatus maps to extension LocationName maps to name - Alias maps to alias + Alias maps to extension CommentOrDescription maps to description Mode maps to mode Type maps to type @@ -99,7 +99,7 @@ Location maps to Location: Substance maps to Substance: Identifier maps to identifier - Status maps to status + Status maps to extension Type maps to code Ingredient maps to ingredient Ingredient.IngredientAmount maps to ingredient.quantity @@ -107,7 +107,7 @@ Substance maps to Substance: Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medication: Identifier maps to extension - Status maps to status + Status maps to extension Type maps to code // dstu 2 change (different attribute) DoseForm maps to product.form diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index 64dc0fcf..28ebfb8a 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -7,7 +7,9 @@ Uses: shr.core, shr.base, shr.entity EntryElement: FamilyMember Based on: RelatedPerson Description: "A related person that is a family member of the patient. This includes biological and non-biological family, as well as extended family." -1..1 RelationshipToPersonOfRecord from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion // Family member value VS used in CCDA. 2015 Ed ONC Cert Criteria indicate relationship to patient should be coded in SCT, and allows for pre- or post-coordination with condition. TODO: consider SCT value set (maybe allow both?) +1..1 RelationshipToPersonOfRecord // from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion +// Family member value VS used in CCDA. 2015 Ed ONC Cert Criteria indicate relationship to patient should be coded in SCT, and allows for pre- or post-coordination with condition. TODO: consider SCT value set (maybe allow both?) +// Not feasible. Cannot override value set constraint from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype to https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion. ERROR_CODE:13029 EntryElement: FamilyMemberHealthHistory diff --git a/spec/shr_financial.txt b/spec/shr_financial.txt index b7b24e0a..6acbfdde 100644 --- a/spec/shr_financial.txt +++ b/spec/shr_financial.txt @@ -13,19 +13,28 @@ Concept: MTH#C0021682 "HealthInsurance" Description: "Health insurance coverage available (even if not used for payment for a given encounter)." StatusOrActive is type Status 0..1 Status from http://hl7.org/fhir/ValueSet/fm-status -1..1 CoverageType should be from http://hl7.org/fhir/ValueSet/coverage-type -0..1 InsuranceMemberId +0..1 CoverageType should be from http://hl7.org/fhir/ValueSet/coverage-type +0..1 Subscriber +0..1 SubscriberId +0..1 Beneficiary 0..1 PolicyHolder 0..1 EffectiveTimePeriod -// TODO: complete this! Element: CoverageType Description: "Coverage category such as medical or accident." Value: CodeableConcept - Element: InsuranceMemberId - Description: "Patient identifier at a healthcare provider, insurer, or other related organization." - Value: string // should be id, but FHIR uses string + Element: Subscriber + Description: "The party who has signed-up for or 'owns' the contractual relationship to the policy or to whom the benefit of the policy for services rendered to them or their family is due." + Value: ref(Patient) or ref(RelatedPerson) + + Element: SubscriberId + Description: "The insurer assigned ID for the Subscriber." + Value: string or Identifier // string in STU3, Identifier in STU2 + + Element: Beneficiary + Description: "The party who benefits from the insurance coverage., the patient when services are provided." + Value: ref(Patient) Element: PolicyHolder Description: "Owner of the policy" diff --git a/spec/shr_financial_map_dstu2.txt b/spec/shr_financial_map_dstu2.txt index 5fab2084..6c8106fc 100644 --- a/spec/shr_financial_map_dstu2.txt +++ b/spec/shr_financial_map_dstu2.txt @@ -4,10 +4,11 @@ Target: FHIR_DSTU_2 Coverage maps to Coverage: -// dstu 2 change (no such attribute) Identifier maps to identifier - Status maps to status + Status maps to extension CoverageType maps to type - InsuranceMemberId maps to subscriberId - EffectiveTimePeriod maps to period - PolicyHolder[Patient] maps to policyHolder // dstu 2 change (more restricted type) \ No newline at end of file + Subscriber maps to subscriber + SubscriberId maps to subscriberId + Beneficiary maps to extension + PolicyHolder maps to extension + EffectiveTimePeriod maps to period \ No newline at end of file diff --git a/spec/shr_financial_map_stu3.txt b/spec/shr_financial_map_stu3.txt index 19234968..cef15e82 100644 --- a/spec/shr_financial_map_stu3.txt +++ b/spec/shr_financial_map_stu3.txt @@ -7,6 +7,9 @@ Coverage maps to Coverage: Identifier maps to identifier Status maps to status CoverageType maps to type - InsuranceMemberId maps to subscriberId + Subscriber maps to subscriber + SubscriberId maps to subscriberId + Beneficiary maps to beneficiary + PolicyHolder maps to policyHolder EffectiveTimePeriod maps to period - PolicyHolder maps to policyHolder \ No newline at end of file + \ No newline at end of file diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 2c5109d7..44c9027e 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -133,7 +133,9 @@ Description: "An order for a medication to be dispensed and instructions for use 1..1 Medication 0..1 Dosage 1..1 Requester value is type ref(Practitioner) - Status from http://hl7.org/fhir/ValueSet/medication-request-status + Status //from http://hl7.org/fhir/ValueSet/medication-request-status + // incompatible value sets between DSTU2 Argonaut and STU3 + // Cannot override value set constraint from http://hl7.org/fhir/ValueSet/medication-order-status to http://hl7.org/fhir/ValueSet/medication-request-status PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority 0..1 NumberOfRefillsAllowed 0..1 QuantityPerDispense diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index ea561041..be3c297b 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -77,7 +77,7 @@ MedicationAdministered maps to MedicationAdministration: MedicationNotAdministered maps to MedicationAdministration: Identifier maps to identifier - constrain performer to 0..0 + constrain practitioner to 0..0 Medication maps to medication[x] // DSTU 2 change (no such attribute) // Category maps to category @@ -86,7 +86,7 @@ MedicationNotAdministered maps to MedicationAdministration: constrain reasonGiven to 0..0 constrain dosage to 0..0 Reason maps to reasonNotGiven - NonOccurrenceTimeOrPeriod maps to effective[x] + NonOccurrenceTimeOrPeriod maps to effectiveTime[x] MedicationRequested maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationorder: diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt index e91e2225..11bb1d26 100644 --- a/spec/shr_occupation_map_dstu2.txt +++ b/spec/shr_occupation_map_dstu2.txt @@ -17,11 +17,9 @@ SocialHistoryObservation maps to Observation: DataAbsentReason maps to dataAbsentReason RelevantTime maps to effective[x] Encounter maps to context -*/ - constrain implicitRules to 0..0 +*/ constrain contained to 0..0 constrain modifierExtension to 0..0 - constrain basedOn to 0..0 constrain bodySite to 0..0 constrain specimen to 0..0 constrain device to 0..0 diff --git a/spec/shr_occupation_map_stu3.txt b/spec/shr_occupation_map_stu3.txt index 642b250d..82b75db7 100644 --- a/spec/shr_occupation_map_stu3.txt +++ b/spec/shr_occupation_map_stu3.txt @@ -4,11 +4,12 @@ Target: FHIR_STU_3 // do not map to US Core Results -- Brett says that's only for labs SocialHistoryObservation maps to Observation: - Identifier maps to identifier +/* Identifier maps to identifier Patient maps to subject Code maps to code Category maps to category - Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) + Components maps to component + Components.ObservationComponent.Code maps to component.code (slice on = code.coding.code; slice strategy = includes) Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason @@ -19,6 +20,7 @@ SocialHistoryObservation maps to Observation: // DataAbsentReason maps to dataAbsentReason RelevantTime maps to effective[x] // Encounter maps to context +*/ // constrain implicitRules to 0..0 // constrain contained to 0..0 // constrain modifierExtension to 0..0 diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index a4f0365a..4e2ea383 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -20,7 +20,8 @@ Description: "A procedure that has been performed." //0..* Indication 0..* ref(Device) Participation.OnBehalfOf value is type ref(Organization) - Status from http://hl7.org/fhir/ValueSet/event-status + Status // from http://hl7.org/fhir/ValueSet/event-status + // Conflict V2 V3: Cannot override value set constraint from http://hl7.org/fhir/ValueSet/procedure-status to http://hl7.org/fhir/ValueSet/event-status // Participation.Participant.EntityOrRole is type ref(Practitioner) Participation.Participant value is type PersonOrOrganizationOrDevice RelatedRequest value is type ref(ProcedureRequested) @@ -53,8 +54,10 @@ Based on: ActionNotPerformed EntryElement: ProcedureRequested Based on: ActionRequested - PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) - Status from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) + PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority + // DSTU 2 change (different required value sets in v2 and v3) + Status // from http://hl7.org/fhir/ValueSet/request-status + // DSTU 2 change(different required value sets in v2 and v3) 0..1 Requester value is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. 1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 5252cb1e..3075865c 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -44,7 +44,7 @@ ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinitio Category maps to category // TODO the following is causing a crash // fix notDone to true - Reason maps to notDoneReason + Reason maps to reasonNotPerformed BodySite.BodySiteCode maps to bodySite BodySite.Laterality maps to bodySite.extension BodySite.AnatomicalDirection maps to bodySite.extension @@ -58,7 +58,7 @@ ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinitio // FHIR is lacking a not-done status (see Gforge issue #14256) fix status to http://hl7.org/fhir/ValueSet/procedure-status#aborted // Encounter maps to context - RelatedRequest.Value maps to basedOn + RelatedRequest.Value maps to request // RelatedPlan maps to definition constrain outcome to 0..0 constrain location to 0..0 From 8519d45980a1243bf627bbd67edeb2921176cb43 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 4 Feb 2019 21:05:29 -0500 Subject: [PATCH 185/289] Small doc change --- spec/shr_core.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/shr_core.txt b/spec/shr_core.txt index e7d80355..e5ca8590 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -159,7 +159,7 @@ Description: "An electronic means of contacting an organization or individual." Element: Type Concept: MTH#C0332307 - Description: "The most specific code (lowest level term) describing the kind or sort of thing being represented." + Description: "A code describing the item at a greater level of detail." Value: CodeableConcept Element: Purpose From 36027aa8c87d63d49e650216a7e9f205a76fa177 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Tue, 5 Feb 2019 11:20:45 -0500 Subject: [PATCH 186/289] Class name alignment --- spec/shr_adverse.txt | 8 +++--- spec/shr_base_action.txt | 5 ---- spec/shr_base_finding.txt | 18 ++++++++------ spec/shr_base_map_dstu2.txt | 2 +- spec/shr_base_map_stu3.txt | 2 +- spec/shr_entity.txt | 7 ------ spec/shr_entity_map_dstu2.txt | 12 ++++----- spec/shr_entity_map_stu3.txt | 12 ++++----- spec/shr_familyhistory.txt | 4 +-- spec/shr_intervention.txt | 14 +++++------ spec/shr_intervention_vs.txt | 2 +- spec/shr_medication.txt | 29 +++++++--------------- spec/shr_medication_map_dstu2.txt | 18 ++------------ spec/shr_medication_map_stu3.txt | 4 +-- spec/shr_occupation.txt | 7 +++--- spec/shr_oncocore.txt | 4 +-- spec/shr_procedure.txt | 41 +++++++++++-------------------- spec/shr_procedure_map_dstu2.txt | 32 +++--------------------- spec/shr_procedure_map_stu3.txt | 31 +++-------------------- spec/shr_research.txt | 2 +- spec/shr_wound.txt | 4 +-- 21 files changed, 81 insertions(+), 177 deletions(-) diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt index cdeddd67..77ba5feb 100644 --- a/spec/shr_adverse.txt +++ b/spec/shr_adverse.txt @@ -35,10 +35,10 @@ Description: "A record of an untoward or unexpected event in a patient under tre Element: AdverseEventCondition Concept: MTH#C1280464 Description: "The condition, sign or symptom triggering the adverse event report." - 1..1 ref(ConditionPresent) + 1..1 ref(Condition) Element: CausalAttribution - Concept: MTH#C1510821 "Adverse Event Attribution to Product or ProcedurePerformed" + Concept: MTH#C1510821 "Adverse Event Attribution to Product or Procedure" Description: "A possible cause of an observed adverse event, known or theorized. There can be more than one possible cause." 1..1 PossibleCause 1..1 CauseCategory @@ -48,7 +48,7 @@ Description: "A record of an untoward or unexpected event in a patient under tre Element: PossibleCause Concept: TBD Description: "The possible cause of the adverse event." - Value: CodeableConcept should be from http://hl7.org/fhir/ValueSet/substance-code or ref(Substance) or ref(Medication) or ref(MedicationAdministered) or ref(MedicationStatement) or ref(Device) + Value: CodeableConcept should be from http://hl7.org/fhir/ValueSet/substance-code or ref(Substance) or ref(Medication) or ref(MedicationAdministration) or ref(MedicationStatement) or ref(Device) Element: CauseCategory Concept: TBD @@ -80,7 +80,7 @@ Description: "A noxious and unintended response to a medicinal product. To be co Based on: PossibleCause Concept: TBD Description: "Drug suspected as possible cause of the adverse event." - Value: ref(Medication) or ref(MedicationAdministered) or ref(MedicationStatement) + Value: ref(Medication) or ref(MedicationAdministration) or ref(MedicationStatement) // In truth, this should be a filter on AdverseDrugReaction, not a separate class EntryElement: ToxicAdverseDrugReaction diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 2d938439..0f6568c3 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -133,11 +133,6 @@ Description: "Abstract class representing a request for any type of action to b Description: "This is the method the provider used to communicate. Examples include: Written, Telephoned, Verbal, Electronically Entered, Policy, Service Correction, Duplicate, etc. 'Code indicating the origin of the prescription.' - NCPDP Telecommunication (Field 419-DJ, Data Dictionary 201104). Possible values include: Written; Telephone; Electronic; Facsimile; Pharmacy; Not Known." Value: CodeableConcept -Abstract Element: ActionNotPerformed -Based on: ActionStatement -Description: "Abstract class representing non-performance of any type of action." -0..1 RelatedRequest -1..1 NonOccurrenceTimeOrPeriod Abstract Element: ActionRequestedAgainst Based on: ActionStatement diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index b92416e8..7424dfa4 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -175,24 +175,28 @@ Description: "A coded finding based on a specimen collected from a patient." EntryElement: CodedLaboratoryObservation Based on: LaboratoryObservation -Description: "A coded finding from a laboratory test." +Description: "A coded result from a laboratory test." DataValue value is type CodeableConcept 0..0 ReferenceRange EntryElement: SimpleLaboratoryObservation Based on: LaboratoryObservation -Description: "A coded finding from a laboratory test without further panel members or components." +Description: "A coded result from a laboratory test without further panel members or components." 0..0 Components 0..0 PanelMembers EntryElement: SimpleCodedLaboratoryObservation Based on: CodedLaboratoryObservation -Description: "A coded finding from a laboratory test without further panel members or components." +Description: "A coded result from a laboratory test without further panel members or components." 0..0 Components 0..0 PanelMembers +EntryElement: QuantitativeLaboratoryObservation +Based on: LaboratoryObservation +Description: "A quantiative result from a laboratory test." + DataValue value is type Quantity -Abstract Element: Panel +EntryElement: Panel Based on: Observation Description: "A set of independent but related observations that are often presented together to facilitate interpretation, such as a lipid panel." 0..0 Components @@ -201,7 +205,7 @@ Description: "A set of independent but related observations that are often pr 0..0 Device -Abstract Element: HeadlessPanel +EntryElement: HeadlessPanel Based on: Panel Description: "A panel that does not have an overall value that summarizes the entire panel." 0..0 DataValue @@ -227,7 +231,7 @@ Description: "An assertion of a condition being present or absent. Description: "Clinical symptoms/signs." Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/clinical-findings -EntryElement: ConditionPresent +EntryElement: Condition Based on: ConditionPresentOrAbsent Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." //TODO: 0..1 DataValue is SCT#52101004 "Present (qualifier value)" @@ -336,7 +340,7 @@ Description: "An entry concerning a patient where the result is a narrative text //1..1 CommentOrDescription // put into DataValue EntryElement: BodyStructurePresent -Based on: ConditionPresent +Based on: Condition Description: "A body structure such as wound or tumor, observed to be present in a patient. The body structure is a condition that persists over time. The Code will represent the body structure, and the BodySiteCode the location of that structure. This corresponds to FHIR R4, where the BodyStructure resource has morphology (corresponding to Code) and location (corresponding to BodySite.BodySiteCode). For example, the Code could be blunt force injury (SCT 3821009) and location left knee." 1..1 Patient 0..1 BodySite diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 7ee99ccd..cc5d22e5 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -78,7 +78,7 @@ NonLaboratoryObservation maps to Observation: LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-observationresults: Specimen maps to specimen -ConditionPresent maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-condition: +Condition maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-condition: // dstu 2 change (different mapping target) Identifier maps to identifier CreationDate maps to dateRecorded diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 2c61595f..563ae69d 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -77,7 +77,7 @@ NonLaboratoryObservation maps to Observation: LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults: Specimen maps to specimen -ConditionPresent maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: +Condition maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: Identifier maps to identifier CreationDate maps to assertedDate Asserter maps to asserter diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index a376bdc3..84089d6e 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -28,13 +28,6 @@ Description: "A person in the role of a patient." 1..* Identifier 1..1 Person 1..1 StatusOrActive is type Active -//0..* ref(ExternalHealthRecord) - -EntryElement: ExternalHealthRecord -Based on: Entity // TODO: change to information item -Concept: TBD -Description: "A health record other than the current health record; may have been used to help populate the current record." -1..1 AccessTime Element: AccessTime Concept: TBD diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index 086daab7..3984d646 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -137,12 +137,12 @@ Specimen maps to Specimen: CollectionSource maps to subject SourceSpecimen maps to parent ReceivedTime maps to receivedTime -// SpecimenCollectionPerformed.AmountOrSize maps to collection.quantity -// SpecimenCollectionPerformed.BodySite maps to collection.bodySite -// SpecimenCollectionPerformed.OccurrenceTimeOrPeriod maps to collection.collected[x] -// SpecimenCollectionPerformed.Participation.Participant maps to collection.collector -// SpecimenCollectionPerformed.Method maps to collection.method -// SpecimenCollectionPerformed.RelatedRequest.Value maps to request +// SpecimenCollection.AmountOrSize maps to collection.quantity +// SpecimenCollection.BodySite maps to collection.bodySite +// SpecimenCollection.OccurrenceTimeOrPeriod maps to collection.collected[x] +// SpecimenCollection.Participation.Participant maps to collection.collector +// SpecimenCollection.Method maps to collection.method +// SpecimenCollection.RelatedRequest.Value maps to request SpecimenContainer.Identifier maps to container.identifier SpecimenContainer.CommentOrDescription maps to container.description SpecimenContainer.Type maps to container.type diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index ea04d4cd..46953356 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -129,12 +129,12 @@ Specimen maps to Specimen: CollectionSource maps to subject SourceSpecimen maps to parent ReceivedTime maps to receivedTime -// SpecimenCollectionPerformed.AmountOrSize maps to collection.quantity -// SpecimenCollectionPerformed.BodySite maps to collection.bodySite -// SpecimenCollectionPerformed.OccurrenceTimeOrPeriod maps to collection.collected[x] -// SpecimenCollectionPerformed.Participation.Participant maps to collection.collector -// SpecimenCollectionPerformed.Method maps to collection.method -// SpecimenCollectionPerformed.RelatedRequest.Value maps to request +// SpecimenCollection.AmountOrSize maps to collection.quantity +// SpecimenCollection.BodySite maps to collection.bodySite +// SpecimenCollection.OccurrenceTimeOrPeriod maps to collection.collected[x] +// SpecimenCollection.Participation.Participant maps to collection.collector +// SpecimenCollection.Method maps to collection.method +// SpecimenCollection.RelatedRequest.Value maps to request SpecimenContainer.Identifier maps to container.identifier SpecimenContainer.CommentOrDescription maps to container.description SpecimenContainer.Type maps to container.type diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index 28ebfb8a..e4857275 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -12,7 +12,7 @@ Description: "A related person that is a family member of the patient. This incl // Not feasible. Cannot override value set constraint from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype to https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion. ERROR_CODE:13029 -EntryElement: FamilyMemberHealthHistory +EntryElement: FamilyMemberHistory Based on: ClinicalStatement Concept: LNC#54114-4 "Family member health history [USSG-FHT] Family member" //This is part of a US General Surgeon general family health LOINC panel Description: "The health history of a patient's family member." @@ -24,7 +24,7 @@ Description: "The health history of a patient's family member." EntryElement: FamilyMemberConditionPresent -Based on: ConditionPresent +Based on: Condition Concept: LNC#8670-2 "History of family member diseases" 0..1 Onset 0..1 ConditionOutcome diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index a9ec3788..06bcfbdd 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -14,16 +14,16 @@ CodeSystem: RXN = http://www.nlm.nih.gov/research/umls/rxnorm /* Not needed yet in MCODE 0.5 EntryElement: CourseOfTreatmentPerformed -Based on: ProcedurePerformed // mlt: questionable to call CourseOfTreatment a procedure. It is modeled as a series of activities including medications administered and procedures. +Based on: Procedure // mlt: questionable to call CourseOfTreatment a procedure. It is modeled as a series of activities including medications administered and procedures. Description: "A series of coordinated treatment actions taken with a certain treatment intention." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" Code is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" 0..1 TreatmentIntent 0..1 LineOfTherapy 0..* MedicationStatement // mlt: to cover patient-asserted medications taken at home. - 0..* MedicationAdministered // mlt: to cover clinician-administered meds in a clinical setting. - 0..* SurgicalProcedurePerformed - 0..* RadiationProcedurePerformed + 0..* MedicationAdministration // mlt: to cover clinician-administered meds in a clinical setting. + 0..* SurgicalProcedure + 0..* RadiationProcedure 0..* BodySite // anatomical location is given in the individual actions 0..0 Device 0..0 Location @@ -40,11 +40,11 @@ Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure Value: CodeableConcept from LineOfTherapyVS */ -EntryElement: RadiationProcedurePerformed -Based on: ProcedurePerformed +EntryElement: RadiationProcedure +Based on: Procedure Description: "A radiation oncology procedure. If the treatment is part of a course of treatment, the PartOf attribute should indicate the CourseOfTreatment." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - Code from RadiationProcedurePerformedVS + Code from RadiationProcedureVS 0..1 RadiationDosePerFraction 0..1 RadiationFractionsDelivered 0..1 TotalRadiationDoseDelivered diff --git a/spec/shr_intervention_vs.txt b/spec/shr_intervention_vs.txt index 84885fe6..f155ea29 100644 --- a/spec/shr_intervention_vs.txt +++ b/spec/shr_intervention_vs.txt @@ -22,7 +22,7 @@ Includes codes descending from SCT#363675004 "Intents (nature of procedure value //SCT#363676003 "Palliative - procedure intent (qualifier value)" -ValueSet: RadiationProcedurePerformedVS +ValueSet: RadiationProcedureVS Description: "Radiation oncology AND/OR radiotherapy (procedure)" Includes codes descending from SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 44c9027e..d668726d 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -83,9 +83,9 @@ Description: "A record of the use of a medication. If the medication is given as 0..1 Reason // Upper cardinality imposed by DSTU 2 0..0 Participation 0..0 Location - RelatedRequest value is type ref(MedicationRequested) // or CarePlan or ProcedureRequest or ReferralRequest + RelatedRequest value is type ref(MedicationRequest) // or CarePlan or ProcedureRequest or ReferralRequest -EntryElement: MedicationAdministered +EntryElement: MedicationAdministration Based on: MedicationExposure Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category @@ -93,12 +93,13 @@ Description: "A record of the use of a medication. If the medication is given as 0..1 Participation Participation.Participant value is type PatientOrPractitionerOrRelatedPerson // DSTU 2 change (max cardinality = 1), also, DSTU 2 participant excludes Device 0..0 Participation.ParticipationType - RelatedRequest value is type ref(MedicationRequested) + RelatedRequest value is type ref(MedicationRequest) -Element: MedicationDispensed +Element: MedicationDispense Based on: MedicationExposure Description: "Indicates that a medication product has been dispensed for a named person/patient. This includes a description of the medication product (supply) provided and the instructions for administering the medication. The medication dispense is the result of a pharmacy system responding to a medication order." -// Attributes from FHIR needed +// TODO: Attributes from FHIR needed +// TODO: Mapping needed EntryElement: MedicationAdherence @@ -118,15 +119,8 @@ includes 0..* MedicationNonAdherenceReason DataValue from MedicationNonAdherenceReasonVS Code is TBD#TBD -EntryElement: MedicationNotAdministered -Based on: ActionNotPerformed -Concept: TBD -Description: "A record of a medication NOT used. Although usually not required, a medication not used is sometimes reported when deviating from normal expectation or care plan." -1..1 Medication -0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category - Reason from MedicationNotUsedReasonVS -EntryElement: MedicationRequested +EntryElement: MedicationRequest Based on: ActionRequested Concept: TBD Description: "An order for a medication to be dispensed and instructions for use." @@ -172,11 +166,6 @@ Description: "A record of a medication NOT being prescribed. Recorded only when Reason from MedicationNotUsedReasonVS -Element: MedicationNotDispensed -Based on: ActionNotPerformed -Concept: TBD -Description: "Indicates that a medication product has NOT been dispensed for a named person/patient. This may be a result of the timing out of an order or detection of pharmacist of duplicate prescription or other reason." -// Attributes needed EntryElement: MedicationChange @@ -190,10 +179,10 @@ Description: "Description of a modification or change of a medication or dosage, Element: MedicationBeforeChange Concept: TBD Description: "The medication taken, prior to the change." - Value: ref(MedicationRequested) or ref(MedicationStatement) or ref(MedicationAdministered) + Value: ref(MedicationRequest) or ref(MedicationStatement) or ref(MedicationAdministration) Element: MedicationAfterChange Concept: TBD Description: "The medication taken, prior to the change." - Value: ref(MedicationRequested) or ref(MedicationStatement) or ref(MedicationAdministered) + Value: ref(MedicationRequest) or ref(MedicationStatement) or ref(MedicationAdministration) diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index be3c297b..b26d157c 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -45,7 +45,7 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ Dosage.DosageBodySite.BodySiteCode maps to dosage.site[x] Dosage.MaximumDosePerTimePeriod maps to dosage.maxDosePerPeriod -MedicationAdministered maps to MedicationAdministration: +MedicationAdministration maps to MedicationAdministration: Identifier maps to identifier Patient maps to patient // DSTU 2 change (name change) @@ -75,21 +75,7 @@ MedicationAdministered maps to MedicationAdministration: // TODO - represent rate and DosageBodySite ref(BodySite) -MedicationNotAdministered maps to MedicationAdministration: - Identifier maps to identifier - constrain practitioner to 0..0 - Medication maps to medication[x] - // DSTU 2 change (no such attribute) -// Category maps to category - fix wasNotGiven to true - // new - constrain reasonGiven to 0..0 - constrain dosage to 0..0 - Reason maps to reasonNotGiven - NonOccurrenceTimeOrPeriod maps to effectiveTime[x] - - -MedicationRequested maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationorder: +MedicationRequest maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationorder: Identifier maps to identifier Medication maps to medication[x] NumberOfRefillsAllowed maps to dispenseRequest.numberOfRepeatsAllowed diff --git a/spec/shr_medication_map_stu3.txt b/spec/shr_medication_map_stu3.txt index afe039a3..3fd22f81 100644 --- a/spec/shr_medication_map_stu3.txt +++ b/spec/shr_medication_map_stu3.txt @@ -30,7 +30,7 @@ MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c Encounter maps to context RelatedRequest maps to basedOn -MedicationAdministered maps to MedicationAdministration: +MedicationAdministration maps to MedicationAdministration: Identifier maps to identifier Patient maps to subject Encounter maps to context @@ -59,7 +59,7 @@ MedicationNotAdministered maps to MedicationAdministration: NonOccurrenceTimeOrPeriod maps to effective[x] -MedicationRequested maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest: +MedicationRequest maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest: Identifier maps to identifier Requester maps to requester Medication maps to medication[x] diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 12d30cc9..cac09746 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -207,7 +207,7 @@ includes 0..1 IsCurrentJob DataValue from YesNoVS Element: SocialHistoryObservation -Based on: Observation +Based on: NonLaboratoryObservation Description: "A simplified observation for social histories." Category is OBSCAT#social-history "Social History" 0..0 Method @@ -215,10 +215,9 @@ Description: "A simplified observation for social histories." 0..0 ReferenceRange 0..0 PanelMembers 0..0 Device -0..0 Specimen 0..0 DataAbsentReason -0..0 Interpretation -0..0 Encounter +//0..0 Interpretation +//0..0 Encounter //0..0 DeltaFlag 0..0 CommentOrDescription diff --git a/spec/shr_oncocore.txt b/spec/shr_oncocore.txt index 53d32849..370e5e78 100644 --- a/spec/shr_oncocore.txt +++ b/spec/shr_oncocore.txt @@ -10,7 +10,7 @@ CodeSystem: UCUM = http://unitsofmeasure.org EntryElement: CancerDisorderPresent -Based on: ConditionPresent +Based on: Condition Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" Description: "The presence of malignant neoplastic disease, in which abnormal cells divide without control and can invade nearby tissues." Code from CancerDisorderVS @@ -65,7 +65,7 @@ Concept: SCT#246453008 "Course of illness (attribute)" /**** replaced by Onset of CancerDisorderPresent EntryElement: EarliestDateOfCancerDiagnosis -//TODO_discussion: added, but not convinced we need a separate element for this given the WhenClinicallyRecognized property of ConditionPresent. +//TODO_discussion: added, but not convinced we need a separate element for this given the WhenClinicallyRecognized property of Condition. Based on: SimpleNonLaboratoryObservation Concept: LNC#77975-1 "Earliest date of diagnosis" Description: "The earliest date of diagnosis (clinical or laboratory) of an illness or condition (Source: LOINC). This element is the same as the WhenClinicallyRecognized property in CancerDiagnosis." diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 4e2ea383..11853ccb 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -6,12 +6,12 @@ Uses: shr.core, shr.base, shr.entity CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category -EntryElement: ProcedurePerformed +EntryElement: Procedure Based on: ActionPerformed Description: "A procedure that has been performed." 1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite -0..1 PartOf value is type ref(ProcedurePerformed) +0..1 PartOf value is type ref(Procedure) 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation 0..1 Reason @@ -24,7 +24,7 @@ Description: "A procedure that has been performed." // Conflict V2 V3: Cannot override value set constraint from http://hl7.org/fhir/ValueSet/procedure-status to http://hl7.org/fhir/ValueSet/event-status // Participation.Participant.EntityOrRole is type ref(Practitioner) Participation.Participant value is type PersonOrOrganizationOrDevice - RelatedRequest value is type ref(ProcedureRequested) + RelatedRequest value is type ref(ProcedureRequest) //0..* OutputFinding // in CIMI, this is part of ProcedureTopic, but the definition hinges on performance, so it belongs here, not there. @@ -41,18 +41,7 @@ Description: "A procedure that has been performed." Value: ref(ConditionOrObservation) -EntryElement: ProcedureNotPerformed -Based on: ActionNotPerformed -0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason -1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered -0..* BodySite -//0..1 PartOf value is type ref(ProcedurePerformed or Not Performed) ??? -0..1 Category // this is a constraint on the cardinality of Action.Category -0..* Annotation -1..1 Status // must be from http://hl7.org/fhir/ValueSet/event-status // DSTU 2 change (different required value sets in v2 and v3) - RelatedRequest value is type ref(ProcedureRequested) - -EntryElement: ProcedureRequested +EntryElement: ProcedureRequest Based on: ActionRequested PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) @@ -61,7 +50,7 @@ Based on: ActionRequested 0..1 Requester value is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. 1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite -0..1 PartOf value is type ref(ProcedurePerformed) +0..1 PartOf value is type ref(Procedure) 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation 0..1 Reason @@ -80,8 +69,8 @@ Based on: ActionRequestedAgainst //---------- Specialized Types of Procedure Topics ---------------- -EntryElement: ImagingProcedurePerformed -Based on: ProcedurePerformed +EntryElement: ImagingProcedure +Based on: Procedure Concept: TBD Description: "Experimental class for an imaging procedure. This class is still incomplete at this time." 0..* ImagingSubstance @@ -92,8 +81,8 @@ Description: "Experimental class for an imaging procedure. This class is still i Value: CodeableConcept -EntryElement: LaboratoryProcedurePerformed -Based on: ProcedurePerformed +EntryElement: LaboratoryProcedure +Based on: Procedure Concept: MTH#C0456984 Description: "A procedure performed on a collected specimen such as a blood panel or a biopsy." 1..1 Code from http://hl7.org/fhir/ValueSet/observation-codes @@ -102,8 +91,8 @@ Description: "A procedure performed on a collected specimen such as a blood pane //0..1 ref(Device) // constraint from 0..* -EntryElement: SurgicalProcedurePerformed -Based on: ProcedurePerformed +EntryElement: SurgicalProcedure +Based on: Procedure Concept: TBD Description: "A surgical action, independent of action context." Code from SurgicalProcedureVS @@ -168,8 +157,8 @@ Description: "A surgical action, independent of action context." Description: "An indirect device used for this procedure." Value: CodeableConcept -Element: SpecimenCollectionPerformed -Based on: ProcedurePerformed +Element: SpecimenCollection +Based on: Procedure Description: "Base class for actions related to the collection of a specimen." 0..* AmountOrSize 0..1 BodySite @@ -179,8 +168,8 @@ Description: "Base class for actions related to the collection of a specimen." Value: SimpleQuantity -EntryElement: DiagnosticImagingPerformed -Based on: ProcedurePerformed +EntryElement: DiagnosticImaging +Based on: ImagingProcedure Description: "Diagnostic imaging procedure performed." Concept: SCT#363679005 "Imaging (procedure)" 0..0 Focus diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 3075865c..a6039cc6 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -2,7 +2,7 @@ Grammar: Map 5.1 Namespace: shr.procedure Target: FHIR_DSTU_2 -ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) +Procedure maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) Identifier maps to identifier Code maps to code Patient maps to subject @@ -37,39 +37,13 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a Location maps to location -ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) - Identifier maps to identifier - Code maps to code - Patient maps to subject - Category maps to category -// TODO the following is causing a crash -// fix notDone to true - Reason maps to reasonNotPerformed - BodySite.BodySiteCode maps to bodySite - BodySite.Laterality maps to bodySite.extension - BodySite.AnatomicalDirection maps to bodySite.extension - BodySite.CommentOrDescription maps to bodySite.extension - BodySite.Media maps to bodySite.extension - BodySite.DistanceFromLandmark maps to bodySite.extension - // DSTU 2 change (attribute name change) - Annotation maps to notes - constrain performed[x] to 0..0 - constrain performer to 0..0 - // FHIR is lacking a not-done status (see Gforge issue #14256) - fix status to http://hl7.org/fhir/ValueSet/procedure-status#aborted -// Encounter maps to context - RelatedRequest.Value maps to request -// RelatedPlan maps to definition - constrain outcome to 0..0 - constrain location to 0..0 - -SurgicalProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) +SurgicalProcedure maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) DirectSite maps to http://hl7.org/fhir/StructureDefinition/procedure-targetBodySite IndirectSite maps to http://hl7.org/fhir/StructureDefinition/procedure-approachBodySite SurgicalApproach maps to http://hl7.org/fhir/StructureDefinition/procedure-approachBodySite -ProcedureRequested maps to ProcedureRequest: +ProcedureRequest maps to ProcedureRequest: Identifier maps to identifier CreationDate maps to orderedOn Requester maps to orderer diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index 96a1d7d0..d6a151f4 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -3,7 +3,7 @@ Namespace: shr.procedure Target: FHIR_STU_3 -ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: +Procedure maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: Identifier maps to identifier Code maps to code Patient maps to subject @@ -29,38 +29,13 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Location maps to location -ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: - Identifier maps to identifier - Code maps to code - Patient maps to subject - Category maps to category -// TODO the following is causing a crash -// fix notDone to true - Reason maps to notDoneReason - BodySite.BodySiteCode maps to bodySite - BodySite.Laterality maps to bodySite.extension - BodySite.AnatomicalDirection maps to bodySite.extension - BodySite.CommentOrDescription maps to bodySite.extension - BodySite.Media maps to bodySite.extension - BodySite.DistanceFromLandmark maps to bodySite.extension -// PartOf maps to partOf - Annotation maps to note - constrain performed[x] to 0..0 - constrain performer to 0..0 - fix status to http://hl7.org/fhir/event-status#suspended // FHIR is lacking a not-done status (see Gforge issue #14256) -// Encounter maps to context - RelatedRequest.Value maps to basedOn -// RelatedPlan maps to definition - constrain outcome to 0..0 - constrain location to 0..0 - -SurgicalProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: +SurgicalProcedure maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: DirectSite maps to http://hl7.org/fhir/StructureDefinition/procedure-targetBodySite IndirectSite maps to http://hl7.org/fhir/StructureDefinition/procedure-approachBodySite SurgicalApproach maps to http://hl7.org/fhir/StructureDefinition/procedure-approachBodySite -ProcedureRequested maps to ProcedureRequest: +ProcedureRequest maps to ProcedureRequest: Identifier maps to identifier CreationDate maps to authoredOn Requester maps to requester.agent diff --git a/spec/shr_research.txt b/spec/shr_research.txt index 3d991b64..82058221 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -53,7 +53,7 @@ Description: "A clinical trial or similar research study. Reference: list of FDA 0..1 CommentOrDescription EntryElement: ResearchSubject -Based on: Entity +Based on: Role Description: "Record of a subject's enrollment and participation in a research study." 0..1 Identifier // cardinality constraint 1..1 ref(Patient) diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index d15a8135..481003d3 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -65,7 +65,7 @@ See https://s.details.loinc.org/LOINC/39135-9.html?sections=Comprehensive //------------- Wound Absence or Presence --------------- EntryElement: WoundPresent -Based on: ConditionPresent +Based on: Condition // TODO: change to BodyStructure? Concept: SCT#416462003 "Wound (disorder)" // LNC#72300-7 Wound Type? Description: "A determination that a particular type of wound that exists at a particular body site. The WoundIdentifier serves as a link between this assertion and assessments of the wound that might occur at later times. Multiple wound assessments can be associated with a single wound." @@ -100,7 +100,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t 0..0 ClockDirection -EntryElement: WoundAbsenct +EntryElement: WoundAbsent Based on: ConditionAbsent Description: "Documents the absence of a wound at a given body site. No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundBodySite." From b2bbc24f9bab2d80948d793b3af0fd8b6133617f Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sat, 2 Feb 2019 12:15:11 -0500 Subject: [PATCH 187/289] Aligned status attributes --- spec/shr_adverse.txt | 2 +- spec/shr_allergy.txt | 2 +- spec/shr_allergy_map_dstu2.txt | 5 +--- spec/shr_allergy_map_stu3.txt | 2 +- spec/shr_base.txt | 39 +++++++++++++++++-------------- spec/shr_base_action.txt | 13 ++--------- spec/shr_base_finding.txt | 11 +++------ spec/shr_base_map_dstu2.txt | 4 ++-- spec/shr_base_map_stu3.txt | 4 ++-- spec/shr_encounter.txt | 6 ++--- spec/shr_encounter_map_dstu2.txt | 4 ++-- spec/shr_encounter_map_stu3.txt | 4 ++-- spec/shr_entity.txt | 24 +++++-------------- spec/shr_entity_map_dstu2.txt | 17 ++++++++------ spec/shr_entity_map_stu3.txt | 14 +++++------ spec/shr_familyhistory.txt | 2 +- spec/shr_financial.txt | 6 +---- spec/shr_financial_map_dstu2.txt | 2 +- spec/shr_financial_map_stu3.txt | 2 +- spec/shr_medication.txt | 38 +++++++++++++----------------- spec/shr_medication_map_dstu2.txt | 6 ++--- spec/shr_medication_map_stu3.txt | 6 ++--- spec/shr_procedure.txt | 6 ++--- spec/shr_procedure_map_dstu2.txt | 4 ++-- spec/shr_procedure_map_stu3.txt | 5 ++-- spec/shr_research.txt | 18 ++++---------- spec/shr_research_map_dstu2.txt | 28 +++------------------- spec/shr_research_map_stu3.txt | 8 +++---- spec/shr_research_vs.txt | 2 +- 29 files changed, 110 insertions(+), 174 deletions(-) diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt index 46508fb8..74d6fadb 100644 --- a/spec/shr_adverse.txt +++ b/spec/shr_adverse.txt @@ -66,7 +66,7 @@ Description: "A record of an untoward or unexpected event in a patient under tre Element: AssociatedStudy Description: "The related clinical trial or other formal study." - Value: ref(Study) + Value: ref(ResearchStudy) EntryElement: AdverseDrugReaction Based on: AdverseEvent diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index 8da94757..22014419 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -15,7 +15,7 @@ Description: "A finding related to the presence of an individual's risk or sensi Asserter value is type PatientOrPractitionerOrRelatedPerson Recorder value is type PatientOrPractitioner // FHIR only allows Patient or Practitioner as recorder 1..1 Patient -1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status 0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status 0..0 Focus // always the patient 1..1 TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index ff05422e..7f005d95 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -11,10 +11,7 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a DataValue maps to substance AllergyIntoleranceType maps to type SubstanceCategory maps to category -/* DSTU 2: VerificationStatus and ClinicalStatus map to one attribute, status. This is a problem. For now, eliminating mappings so native DSTU 2 status is supported. - VerificationStatus maps to verificationStatus - ClinicalStatus maps to status -*/ + ResourceStatus maps to status Criticality maps to criticality // DSTU 2 change (onset only dateTime, not a choice [x]) Onset maps to onset diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index 3fa65dec..e918008a 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -11,7 +11,7 @@ AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co DataValue maps to code TopicCode maps to type SubstanceCategory maps to category - VerificationStatus maps to verificationStatus + ResourceStatus maps to verificationStatus ClinicalStatus maps to clinicalStatus Criticality maps to criticality Onset maps to onset[x] diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 87e168f5..3191c447 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -56,7 +56,7 @@ Based on: Resource Description: "Parent class for any item in clinical or administrative health-related system. A DomainResource can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." 1..1 TopicCode 0..1 Narrative -//0..1 RecordStatus +0..1 ResourceStatus Element: TopicCode Description: "A code describing what the domain resource concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist (present) or not exist (absent)." @@ -76,10 +76,9 @@ Description: "Parent class for any item in clinical or administrative health-rel Description: "Additional information on how the narrative was generated, and the scope of information contained." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/narrative-status - Element: RecordStatus - Description: "Concept indicating the state of this record, e.g., active, inactive, entered in error. The record status is often spread aournd in different places, including validation status and active flags." - Value: CodeableConcept - + Element: ResourceStatus + Description: "The status that relates to the interpretation of this resource. Certain status values can modify the meaning of the resource, for example, entered-in-error. When a boolean value is used, ResourceStatus of true indicates the record is active, false means inactive." + Value: boolean or CodeableConcept should be from http://hl7.org/fhir/ValueSet/resource-status Element: Metadata Description: "Elements that belong to all information items." @@ -119,7 +118,6 @@ Description: "Elements that belong to all information items." Abstract Element: ClinicalStatement Based on: DomainResource Description: "This abstract class provides properties and behaviors common to entries in a medical record. Patient and Encounter are ubiquitous in clinical statements. This class also allows for common representation of simple data provenance elements asserter, recorder, and creation date." -//0..1 RecordStatus 0..1 Patient 0..1 Encounter 0..1 CreationDate @@ -146,6 +144,23 @@ Description: "This abstract class provides properties and behaviors common to en Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." Value: ref(EntityOrRole) + + +EntryElement: Composition +Based on: DomainResource +Description: "A composition represents a set of Entries sharing common provenance, a document such as an extract from a patient record, a knowledge artifact, or a catalog definition." +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/composition-status +1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes +0..* Section + + Element: Section + Description: "Represents a section containing entries in a composition." + //0..1 Title + 0..* DomainResource + 0..* Section + +// Combined participant roles + Element: PatientOrPractitioner Based on: Participant Description: "A choice of Patient or Practitioner. Needed for mapping to FHIR." @@ -173,18 +188,6 @@ Description: "This abstract class provides properties and behaviors common to en -EntryElement: Composition -Based on: DomainResource -Description: "A composition represents a set of Entries sharing common provenance, a document such as an extract from a patient record, a knowledge artifact, or a catalog definition." -1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/composition-status -1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes -0..* Section - - Element: Section - Description: "Represents a section containing entries in a composition." - //0..1 Title - 0..* DomainResource - 0..* Section /* diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 86961830..8dae8694 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -22,7 +22,7 @@ Based on: ActionStatement Description: "Abstract class representing performance of any type of action." 1..1 OccurrenceTimeOrPeriod // when the action took place 0..* Participation -1..1 PerformanceStatus // should be from http://hl7.org/fhir/ValueSet/event-status DSTU 2 change (conflict in required data sets) +1..1 ResourceStatus // change to required... should be from http://hl7.org/fhir/ValueSet/event-status DSTU 2 change (conflict in required data sets) 0..1 Method 0..1 RelatedRequest //0..1 EnactsPlan @@ -46,11 +46,6 @@ Description: "Abstract class representing performance of any type of action." Concept: TBD Description: "The point in time or span of time the participant is involved." Value: TimePeriod - - Element: PerformanceStatus - Concept: TBD - Description: "Indicates whether the finding is preliminary, amended, final, etc." - Value: CodeableConcept Element: Method Concept: TBD @@ -80,7 +75,7 @@ Based on: ActionStatement Description: "Abstract class representing a request for any type of action to be performed." 0..1 Requester 1..1 RequestIntent -1..1 RequestStatus //should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) +1..1 ResourceStatus should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) 0..1 ExpectedPerformanceTime 0..1 ExpectedPerformerType 0..1 ExpectedPerformer @@ -98,10 +93,6 @@ Description: "Abstract class representing a request for any type of action to b Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/request-intent - Element: RequestStatus - Description: "A code identifying the lifecycle stage of a request." - Value: CodeableConcept - Element: ExpectedPerformanceTime Concept: TBD Description: "When an action should be done. If the action is a series or recurs (e.g. daily blood sugar testing in the morning) then a Timing can be used to describe the periodicity." diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 07ef2aa2..8bca360e 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -82,7 +82,7 @@ For an Observation, the TopicCode describes the aspect or property of the subjec 0..1 Method 0..1 RelevantTime 0..* ObservationComponent -1..1 PerformanceStatus from http://hl7.org/fhir/ValueSet/observation-status +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 Category from http://hl7.org/fhir/ValueSet/observation-category if covered // MK Category cardinality from 0..* to 0..1 to be compatible with DSTU 2 0..1 BodySite 0..1 CommentOrDescription @@ -216,7 +216,6 @@ Description: "An assertion of a condition being present or absent. DataValue value is type CodeableConcept DataValue from PresentAbsentVS 0..* Identifier -0..1 VerificationStatus 0..1 Evidence Element: ConditionOrDiagnosisCode @@ -224,10 +223,6 @@ Description: "An assertion of a condition being present or absent. Description: "A specific code for the condition being determined to be present or absent." Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make the binding weaker because US Core requires an extensible binding - Element: VerificationStatus - Description: "The verification status to support the clinical status of the condition (ref: http://hl7.org/fhir/R4/condition-definitions.html#Condition.verificationStatus)" - Value: CodeableConcept - Element: Evidence Description: "Supporting evidence / manifestations that are the basis of the Condition's verification status, such as evidence that confirmed or refuted the condition." 0..* Manifestation @@ -248,7 +243,7 @@ Description: "A condition that is or may be present in a subject. 'Condition' i 0..0 Focus // maybe a family member? 1..1 Category from ConditionCategoryVS // DSTU 2 change - category is 1..1 in Argonaut 0..* BodySite -1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/condition-ver-status +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/condition-ver-status 1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical 0..1 Severity from http://hl7.org/fhir/ValueSet/condition-severity 0..1 StageInformation @@ -333,7 +328,7 @@ Description: "A finding that a condition is or was not present in the subject at //TODO: 1..1 DataValue is SCT#2667000 "Absent (qualifier value)" 0..0 DataAbsentReason 1..* Category from ConditionCategoryVS - VerificationStatus is #refuted + ResourceStatus.CodeableConcept is #refuted // Maybe not right since refuted implies the condition was considered 0..* BodySite EntryElement: ClinicalNote diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 9a686062..1317f825 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -62,7 +62,7 @@ Observation maps to Observation: DataAbsentReason maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued - PerformanceStatus maps to status + ResourceStatus maps to status RelevantTime maps to effective[x] // dstu 2 change (name change) Encounter maps to encounter @@ -90,7 +90,7 @@ ConditionPresent maps to http://fhir.org/guides/argonaut/StructureDefinition/arg BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to encounter ClinicalStatus maps to clinicalStatus - VerificationStatus maps to verificationStatus + ResourceStatus maps to verificationStatus Onset maps to onset[x] Abatement maps to abatement[x] Severity maps to severity diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 3ac468fc..dbf40a54 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -59,7 +59,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs DataAbsentReason maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued - PerformanceStatus maps to status + ResourceStatus maps to status RelevantTime maps to effective[x] Encounter maps to context // DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta @@ -85,7 +85,7 @@ ConditionPresent maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to context ClinicalStatus maps to clinicalStatus - VerificationStatus maps to verificationStatus + ResourceStatus maps to verificationStatus Onset maps to onset[x] Abatement maps to abatement[x] Severity maps to severity diff --git a/spec/shr_encounter.txt b/spec/shr_encounter.txt index e51ded84..4aa82261 100644 --- a/spec/shr_encounter.txt +++ b/spec/shr_encounter.txt @@ -11,7 +11,7 @@ Description: "A description of an interaction between a patient and healthcare p 0..1 EncounterClass 0..* EncounterType 0..1 TimePeriod -1..1 PerformanceStatus //from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 0..1 PartOf value is type ref(Encounter) 0..* Diagnosis // SHR Extension @@ -120,13 +120,13 @@ Description: "A detailed description of an interaction between a patient and hea Element: EncounterRequestedContext Based on: RequestedContext Description: "Context for encounter requests." - RequestStatus from http://hl7.org/fhir/ValueSet/request-status + ResourceStatus from http://hl7.org/fhir/ValueSet/request-status PriorityRank from http://hl7.org/fhir/ValueSet/request-priority Element: EncounterPerformedContext Based on: PerformedContext Description: "Context for encounters performed." - EncounterStatus from http://hl7.org/fhir/ValueSet/encounter-status + ResourceStatus from http://hl7.org/fhir/ValueSet/encounter-status OccurrenceTimeOrPeriod is type OccurrencePeriod Reason should be from http://hl7.org/fhir/ValueSet/encounter-reason // RelatedRequest value is type ref(EncounterRequested) diff --git a/spec/shr_encounter_map_dstu2.txt b/spec/shr_encounter_map_dstu2.txt index 97b874f8..469369d6 100644 --- a/spec/shr_encounter_map_dstu2.txt +++ b/spec/shr_encounter_map_dstu2.txt @@ -8,7 +8,7 @@ Encounter maps to Encounter: Patient maps to patient EncounterType maps to type // ServiceProvider maps to serviceProvider - PerformanceStatus maps to status + ResourceStatus maps to status TimePeriod maps to period // Participation.Participant maps to participant // Participation.Participant[Entity] maps to participant.individual ??? @@ -30,7 +30,7 @@ EncounterRequested maps to ReferralRequest: EncounterTopic.??? maps to type //TreatmentCooperation //PaymentSource - PerformanceStatus maps to status + ResourceStatus maps to status //RequestIntent EncounterExpectedPerformanceTime maps to occurrence[x] EncounterExpectedPerformerType maps to specialty diff --git a/spec/shr_encounter_map_stu3.txt b/spec/shr_encounter_map_stu3.txt index 5df83681..d805efdd 100644 --- a/spec/shr_encounter_map_stu3.txt +++ b/spec/shr_encounter_map_stu3.txt @@ -7,7 +7,7 @@ Encounter maps to Encounter: Patient maps to subject EncounterType maps to type // ServiceProvider maps to serviceProvider - PerformanceStatus maps to status + ResourceStatus maps to status TimePeriod maps to period // Participation.Participant maps to participant // Participation.Participant[Entity] maps to participant.individual ??? @@ -29,7 +29,7 @@ EncounterRequested maps to ReferralRequest: EncounterTopic.??? maps to type //TreatmentCooperation //PaymentSource - PerformanceStatus maps to status + ResourceStatus maps to status //RequestIntent EncounterExpectedPerformanceTime maps to occurrence[x] EncounterExpectedPerformerType maps to specialty diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 7dad2faa..0f8e9641 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -6,7 +6,6 @@ Uses: shr.core, shr.base, shr.medication, shr.procedure Abstract Element: EntityOrRole Based on: DomainResource Description: "Parent class for both Entity and Role." -//Identifier Abstract Element: Role Based on: EntityOrRole @@ -27,14 +26,8 @@ Based on: Role Concept: MTH#C1299487 Description: "A person in the role of a patient." 1..1 ref(Person) -0..1 ActiveFlag //0..* ref(ExternalHealthRecord) - Element: ActiveFlag - Concept: TBD - Description: "If the ActiveFlag is false, it indicates the record or item is no longer to be used and should generally be hidden for the user in the UI." - Value: boolean - EntryElement: ExternalHealthRecord Based on: Entity // TODO: change to information item Concept: TBD @@ -53,7 +46,7 @@ Based on: Role Concept: MTH#C2220264 Description: "A person who practices a healing art." 1..1 ref(Person) -0..1 ActiveFlag +0..1 ResourceStatus 1..1 Person.HumanName // only one (limitation imposed by us-core) // 0..* Affiliation // handled by ProviderRelationship in FHIR 1..1 NationalProviderIdentifier @@ -82,7 +75,7 @@ EntryElement: RelatedPerson Based on: Role Description: "A person in a role defined in relationship to a patient" 0..1 ref(Person) -0..1 ActiveFlag +0..1 ResourceStatus 0..1 RelationshipToPersonOfRecord 0..1 EffectiveTimePeriod 1..1 Person.HumanName // DSTU 2 change (max cardinality of 1 imposed by DSTU 2) @@ -96,7 +89,7 @@ EntryElement: Group Based on: Entity Concept: MTH#C0441833 Description: "A set of entities (personnel, material, or places) to be considered together. May be a pool of like-type resources, a team, or combination of personnel, material and places." -0..1 ActiveFlag +0..1 ResourceStatus 1..1 Type from http://hl7.org/fhir/ValueSet/group-type 0..1 Title // name 1..1 Actual @@ -180,7 +173,7 @@ Concept: MTH#C0439861 Description: "Any matter of defined composition that has discrete existence, whose origin may be biological, mineral or chemical." 1..1 Type should be from http://hl7.org/fhir/ValueSet/substance-code 0..* Category from http://hl7.org/fhir/ValueSet/substance-category if covered -0..1 RecordStatus from http://hl7.org/fhir/ValueSet/substance-status +0..1 ResourceStatus from http://hl7.org/fhir/ValueSet/substance-status 0..1 CommentOrDescription 0..* Ingredient @@ -495,7 +488,7 @@ Description: "A social or legal structure formed by human beings." 0..1 Type could be from http://hl7.org/fhir/ValueSet/organization-type 1..* Address 1..* ContactPoint -1..1 ActiveFlag +1..1 ResourceStatus 0..1 PartOf value is type ref(Organization) Element: OrganizationName @@ -556,7 +549,7 @@ EntryElement: Specimen Based on: Entity Description: "A specimen is a substance, physical object, or collection of objects, that the laboratory considers a single discrete, uniquely identified unit that is the subject of one or more steps in the laboratory workflow. A specimen may include multiple physical pieces as long as they are considered a single unit within the laboratory workflow. A specimen results from one to many specimen collection procedures, and may be contained in multiple specimen containers. Specimen may have one or more processing activities." 0..1 AccessionIdentifier -0..1 SpecimenStatus from http://hl7.org/fhir/ValueSet/specimen-status +0..1 ResourceStatus from http://hl7.org/fhir/ValueSet/specimen-status 1..1 Type from http://hl7.org/fhir/ValueSet/v2-0487 0..1 CollectionSource 0..1 CollectionTime @@ -593,11 +586,6 @@ Description: "A specimen is a substance, physical object, or collection of objec Based on: Identifier Concept: TBD Description: "Identifier assigned by the lab" - - Element: SpecimenStatus - Concept: MTH#C0449438 - Description: "State of the specimen, such as obtained, processed, used." - Value: CodeableConcept Element: SourceSpecimen Concept: TBD diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index a4a354dc..62806a89 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -3,7 +3,7 @@ Namespace: shr.entity Target: FHIR_DSTU_2 Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient: // dstu 2 change (different mapping target) - ActiveFlag maps to active + ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -28,7 +28,7 @@ Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient // Deceased.DateOfDeath maps to deceased[x].dateTime Practitioner maps to Practitioner: // dstu 2 change (different mapping target) - ActiveFlag maps to active + ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -42,7 +42,7 @@ Practitioner maps to Practitioner: // dstu 2 change (different mapping target) Qualification.Issuer maps to qualification.issuer RelatedPerson maps to RelatedPerson: - ActiveFlag maps to extension + ResourceStatus maps to extension Person.HumanName maps to name Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender @@ -53,16 +53,16 @@ RelatedPerson maps to RelatedPerson: EffectiveTimePeriod maps to period Organization maps to Organization: + ResourceStatus maps to active OrganizationName maps to name Type maps to type OrganizationIdentifier maps to identifier Address maps to address ContactPoint maps to telecom - ActiveFlag maps to active PartOf maps to partOf Group maps to Group: - ActiveFlag maps to extension + ResourceStatus maps to extension Type maps to type Actual maps to actual constrain code to 0..0 // why? @@ -77,6 +77,7 @@ Group maps to Group: Count maps to quantity Facility maps to Location: + ResourceStatus maps to status FacilityName maps to name Location[Address] maps to address Location[Geoposition].Latitude maps to position.latitude @@ -87,13 +88,14 @@ Facility maps to Location: Type maps to type Substance maps to Substance: + ResourceStatus maps to status Type maps to code - RecordStatus maps to status Ingredient maps to ingredient Ingredient.IngredientAmount maps to ingredient.quantity Ingredient.SubstanceOrCode[Substance] maps to ingredient.substance Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medication: + ResourceStatus maps to status Type maps to code // dstu 2 change (different attribute) DoseForm maps to product.form @@ -116,8 +118,8 @@ Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medi Package maps to package.container Specimen maps to Specimen: + ResourceStatus maps to status AccessionIdentifier maps to accessionIdentifier - SpecimenStatus maps to status Type maps to type CollectionSource maps to subject SourceSpecimen maps to parent @@ -136,6 +138,7 @@ Specimen maps to Specimen: SpecimenContainer.Additive maps to container.additive[x] Device maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-device: + ResourceStatus maps to status Type maps to type // dstu 2 change (different attribute) DeviceUdi maps to udi diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index e56673af..2617103f 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -3,7 +3,7 @@ Namespace: shr.entity Target: FHIR_STU_3 Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: - ActiveFlag maps to active + ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -28,7 +28,7 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: // Deceased.DateOfDeath maps to deceased[x].dateTime Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner: - ActiveFlag maps to active + ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -43,7 +43,7 @@ Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-pra Qualification.Issuer maps to qualification.issuer RelatedPerson maps to RelatedPerson: - ActiveFlag maps to active + ResourceStatus maps to active Person.HumanName maps to name Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender @@ -54,16 +54,16 @@ RelatedPerson maps to RelatedPerson: EffectiveTimePeriod maps to period Organization maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization: + ResourceStatus maps to active OrganizationName maps to name Type maps to type OrganizationIdentifier maps to identifier Address maps to address ContactPoint maps to telecom - ActiveFlag maps to active PartOf maps to partOf Group maps to Group: - ActiveFlag maps to active + ResourceStatus maps to active Type maps to type Actual maps to actual constrain code to 0..0 @@ -89,7 +89,7 @@ Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-locatio Substance maps to Substance: Type maps to code - RecordStatus maps to status + ResourceStatus maps to status Ingredient maps to ingredient Ingredient.IngredientAmount maps to ingredient.quantity Ingredient.SubstanceOrCode maps to ingredient.substance[x] @@ -110,7 +110,7 @@ Medication maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medic Specimen maps to Specimen: AccessionIdentifier maps to accessionIdentifier - SpecimenStatus maps to status + ResourceStatus maps to status Type maps to type CollectionSource maps to subject SourceSpecimen maps to parent diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index eb94afc2..0bfe51dd 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -16,7 +16,7 @@ Concept: LNC#54114-4 "Family member health history [USSG-FHT] Family member" // Description: "The health history of a patient's family member." 1..1 Patient 1..1 FamilyMember -1..1 VerificationStatus from http://hl7.org/fhir/ValueSet/history-status +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/history-status 0..* FamilyMemberConditionPresent diff --git a/spec/shr_financial.txt b/spec/shr_financial.txt index 8d9ee1d5..f56d0d37 100644 --- a/spec/shr_financial.txt +++ b/spec/shr_financial.txt @@ -11,17 +11,13 @@ EntryElement: Coverage Based on: DomainResource Concept: MTH#C0021682 "HealthInsurance" Description: "Health insurance coverage available (even if not used for payment for a given encounter)." -0..1 CoverageStatus from http://hl7.org/fhir/ValueSet/fm-status +0..1 ResourceStatus from http://hl7.org/fhir/ValueSet/fm-status 1..1 CoverageType should be from http://hl7.org/fhir/ValueSet/coverage-type 0..1 InsuranceMemberId 0..1 PolicyHolder 0..1 EffectiveTimePeriod // TODO: complete this! - Element: CoverageStatus - Description: "The financial account status of the coverage." - Value: CodeableConcept - Element: CoverageType Description: "Coverage category such as medical or accident." Value: CodeableConcept diff --git a/spec/shr_financial_map_dstu2.txt b/spec/shr_financial_map_dstu2.txt index 5ac5787d..a3cdcbde 100644 --- a/spec/shr_financial_map_dstu2.txt +++ b/spec/shr_financial_map_dstu2.txt @@ -5,7 +5,7 @@ Target: FHIR_DSTU_2 Coverage maps to Coverage: // dstu 2 change (no such attribute) - CoverageStatus maps to status + ResourceStatus maps to status CoverageType maps to type InsuranceMemberId maps to subscriberId EffectiveTimePeriod maps to period diff --git a/spec/shr_financial_map_stu3.txt b/spec/shr_financial_map_stu3.txt index 5c25b95b..e55a1a0f 100644 --- a/spec/shr_financial_map_stu3.txt +++ b/spec/shr_financial_map_stu3.txt @@ -4,7 +4,7 @@ Target: FHIR_STU_3 Coverage maps to Coverage: - CoverageStatus maps to status + ResourceStatus maps to status CoverageType maps to type InsuranceMemberId maps to subscriberId EffectiveTimePeriod maps to period diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index b0d373ac..900e7d79 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -64,33 +64,33 @@ Description: "The dosage of the medication. The data structure is flexible and c Value: Ratio +0..0 Method // because of Dosage.Method + EntryElement: MedicationStatement -Based on: ActionPerformed +Based on: MedicationExposure Concept: SCT#416608005 "Drug therapy (procedure)" // TODO: investigate whether we need a new code or use a drug concept. Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." Asserter value is type PersonOrOrganization 1..1 CreationDate // us-core required -1..1 Medication -0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category - PerformanceStatus from http://hl7.org/fhir/ValueSet/medication-statement-status -0..0 Method // because of Dosage.Method -0..1 Reason // DSTU 2 change (upper card imposed by DSTU 2) + ResourceStatus from http://hl7.org/fhir/ValueSet/medication-statement-status +0..1 Reason // Upper cardinality imposed by DSTU 2 EntryElement: MedicationAdministered -Based on: ActionPerformed -Concept: TBD +Based on: MedicationExposure Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." -1..1 Medication -0..1 Dosage 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category - PerformanceStatus from http://hl7.org/fhir/ValueSet/medication-admin-status -0..0 Method // because of Dosage.Method + ResourceStatus from http://hl7.org/fhir/ValueSet/medication-admin-status 0..1 Participation Participation.Participant is type PatientOrPractitionerOrRelatedPerson // DSTU 2 change (max cardinality = 1), also, DSTU 2 participant excludes Device 0..0 Participation.ParticipationType RelatedRequest value is type ref(MedicationRequested) +Element: MedicationDispensed +Based on: MedicationExposure +Description: "Indicates that a medication product has been dispensed for a named person/patient. This includes a description of the medication product (supply) provided and the instructions for administering the medication. The medication dispense is the result of a pharmacy system responding to a medication order." +// Attributes from FHIR needed + EntryElement: MedicationAdherence Based on: CodedNonLaboratoryObservation @@ -121,16 +121,16 @@ EntryElement: MedicationRequested Based on: ActionRequested Concept: TBD Description: "An order for a medication to be dispensed and instructions for use." -1..1 Requester value is type ref(Practitioner) - RequestStatus //from http://hl7.org/fhir/ValueSet/medication-request-status DSTU 2 change (incompatible required value sets) - PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority 1..1 Medication 0..1 Dosage +1..1 Requester value is type ref(Practitioner) + ResourceStatus from http://hl7.org/fhir/ValueSet/medication-request-status + PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority 0..1 NumberOfRefillsAllowed 0..1 QuantityPerDispense 0..1 SupplyDuration 0..1 SubstitutionAllowed -0..1 Reason // DSTU 2 change (upper cardinality of 1 imposed by DSTU 2) +0..1 Reason // Upper cardinality of 1 imposed by DSTU 2 Element: NumberOfRefillsAllowed Concept: TBD @@ -160,12 +160,6 @@ Description: "A record of a medication NOT being prescribed. Recorded only when 1..1 Medication Reason from MedicationNotUsedReasonVS -Element: MedicationDispensed -Based on: ActionPerformed -Concept: TBD -Description: "Indicates that a medication product has been dispensed for a named person/patient. This includes a description of the medication product (supply) provided and the instructions for administering the medication. The medication dispense is the result of a pharmacy system responding to a medication order." -// Attributes from FHIR needed - Element: MedicationNotDispensed Based on: ActionNotPerformed diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index a683711a..50c638d0 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -31,7 +31,7 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ // fix taken to #y Reason maps to reasonForUse[x] OccurrenceTimeOrPeriod maps to effective[x] - PerformanceStatus maps to status + ResourceStatus maps to status // DSTU 2 change (added Dosage as in-line element) Dosage.DoseAmount maps to dosage.quantity[x] Dosage.TimingOfDoses maps to dosage.timing @@ -60,7 +60,7 @@ MedicationAdministered maps to MedicationAdministration: // DSTU 2 change (name change) Reason maps to reasonGiven OccurrenceTimeOrPeriod maps to effectiveTime[x] - PerformanceStatus maps to status + ResourceStatus maps to status // DSTU 2 change (more restrictive type) Participation.Participant maps to practitioner // DSTU 2 change (no such attribute) @@ -94,7 +94,7 @@ MedicationRequested maps to http://fhir.org/guides/argonaut/StructureDefinition/ constrain dosageInstruction to 0..1 // DSTU 2 change (name change) Reason maps to reason[x] - RequestStatus maps to status + ResourceStatus maps to status ExpectedPerformanceTime maps to dispenseRequest.validityPeriod // DSTU 2 change (no such attribute) // PriorityRank maps to priority diff --git a/spec/shr_medication_map_stu3.txt b/spec/shr_medication_map_stu3.txt index d38ffcf4..57733fa2 100644 --- a/spec/shr_medication_map_stu3.txt +++ b/spec/shr_medication_map_stu3.txt @@ -25,7 +25,7 @@ MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c fix taken to #y Reason maps to reasonCode OccurrenceTimeOrPeriod maps to effective[x] - PerformanceStatus maps to status + ResourceStatus maps to status MedicationAdministered maps to MedicationAdministration: Patient maps to subject @@ -38,7 +38,7 @@ MedicationAdministered maps to MedicationAdministration: Category maps to category Reason maps to reasonCode OccurrenceTimeOrPeriod maps to effective[x] - PerformanceStatus maps to status + ResourceStatus maps to status Participation maps to performer Participation.Participant maps to performer.actor // Participation.ParticipationType maps to performer.role (no role in med administration!) @@ -63,7 +63,7 @@ MedicationRequested maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c constrain dosageInstruction to 0..1 Dosage maps to dosageInstruction Reason maps to reasonCode - RequestStatus maps to status + ResourceStatus maps to status ExpectedPerformanceTime maps to dispenseRequest.validityPeriod PriorityRank maps to priority PerformerInstructions maps to note.text diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index cf9389ef..2a1a5cd5 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -20,7 +20,7 @@ Description: "A procedure that has been performed." //0..* Indication 0..* ref(Device) Participation.OnBehalfOf value is type ref(Organization) - PerformanceStatus // must be from http://hl7.org/fhir/ValueSet/event-status + ResourceStatus from http://hl7.org/fhir/ValueSet/event-status // Participation.Participant.EntityOrRole is type ref(Practitioner) Participation.Participant is type FHIRProcedureParticipant RelatedRequest value is type ref(ProcedureRequested) @@ -57,13 +57,13 @@ Based on: ActionNotPerformed //0..1 PartOf value is type ref(ProcedurePerformed or Not Performed) ??? 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation -1..1 PerformanceStatus // must be from http://hl7.org/fhir/ValueSet/event-status // DSTU 2 change (different required value sets in v2 and v3) +1..1 ResourceStatus // must be from http://hl7.org/fhir/ValueSet/event-status // DSTU 2 change (different required value sets in v2 and v3) RelatedRequest value is type ref(ProcedureRequested) EntryElement: ProcedureRequested Based on: ActionRequested PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) - RequestStatus // must be from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) + ResourceStatus from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) 0..1 Requester is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. 1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 53ab5c6f..88788c08 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -27,7 +27,7 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a Participation.ParticipationType maps to performer.role // DSTU 2 change (no such attribute) // Participation.OnBehalfOf maps to performer.onBehalfOf - PerformanceStatus maps to status + ResourceStatus maps to status // TODO The following statement is failing it might be a bug // Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method RelatedRequest.Value maps to request @@ -84,7 +84,7 @@ ProcedureRequested maps to ProcedureRequest: BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to encounter Reason maps to reason[x] - RequestStatus maps to status + ResourceStatus maps to status // DSTU 2 change (no such attribute) // RequestIntent maps to intent // DSTU 2 change (name change) diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index 7d4e8d7d..a1345e58 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -10,7 +10,6 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co constrain notDone to 0..0 constrain notDoneReason to 0..0 BodySite.BodySiteCode maps to bodySite - PartOf maps to partOf Annotation maps to note Encounter maps to context @@ -20,7 +19,7 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Participation.Participant maps to performer.actor Participation.ParticipationType maps to performer.role Participation.OnBehalfOf maps to performer.onBehalfOf - PerformanceStatus maps to status + ResourceStatus maps to status // TODO The following statement is failing it might be a bug // Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method RelatedRequest.Value maps to basedOn @@ -74,7 +73,7 @@ ProcedureRequested maps to ProcedureRequest: BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to context Reason maps to reasonCode - RequestStatus maps to status + ResourceStatus maps to status RequestIntent maps to intent ExpectedPerformanceTime maps to occurrence[x] ExpectedPerformerType maps to performerType diff --git a/spec/shr_research.txt b/spec/shr_research.txt index c74004dd..9d856f7b 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -4,15 +4,14 @@ Description: "The SHR research domain contains definitions related to the clinic Uses: shr.core, shr.base, shr.entity -EntryElement: Study +EntryElement: ResearchStudy Based on: Entity Concept: TBD Description: "A clinical trial or similar research study. Reference: list of FDA data elements describing a research study: prsinfo.clinicaltrials.gov/definitions.html " 1..1 Title 1..1 Identifier 0..1 CommentOrDescription -0..1 PartOf value is type Study -1..1 ResearchStudyStatus +0..1 PartOf value is type ResearchStudy 0..* Enrollment 0..1 EffectiveTimePeriod 0..1 Sponsor @@ -23,10 +22,7 @@ Description: "A clinical trial or similar research study. Reference: list of FDA 0..1 TerminationReason 0..* Annotation 0..* StudyArm - - Element: ResearchStudyStatus - Description: "The status of the study, at the time of the last update of this record." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/research-study-status +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/research-study-status Element: Enrollment Concept: MTH#C4041024 @@ -59,11 +55,7 @@ EntryElement: ResearchSubject Based on: Entity Description: "Record of a subject's enrollment and participation in a research study." 1..1 ref(Patient) -1..1 ref(Study) -1..1 ResearchSubjectStatus +1..1 ref(ResearchStudy) +1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/research-subject-status 1..1 ParticipationPeriod 0..1 TerminationReason from ResearchSubjectTerminationReasonVS - - Element: ResearchSubjectStatus - Description: "The current state of the subject with respect to participation in the research study." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/research-subject-status \ No newline at end of file diff --git a/spec/shr_research_map_dstu2.txt b/spec/shr_research_map_dstu2.txt index 497accac..ca30cbaa 100644 --- a/spec/shr_research_map_dstu2.txt +++ b/spec/shr_research_map_dstu2.txt @@ -3,30 +3,8 @@ Namespace: shr.research Target: FHIR_DSTU_2 -Study maps to Basic: -/* dstu 2 change (no suitable target) - Title maps to title - Identifier maps to identifier - PartOf maps to partOf - ResearchStudyStatus maps to status - Enrollment maps to enrollment - EffectiveTimePeriod maps to period - Sponsor maps to sponsor - Jurisdiction maps to jurisdiction - ContactDetail maps to contact - PrincipalInvestigator maps to principalInvestigator - Facility maps to site - TerminationReason maps to reasonStopped - Annotation maps to note - StudyArm.Title maps to arm.name - StudyArm.Type maps to arm.code - StudyArm.CommentOrDescription maps to arm.description -*/ +ResearchStudy maps to Basic: +// dstu 2 change (no suitable target) ResearchSubject maps to Basic: -/* dstu 2 change (no suitable target) - Patient maps to individual - Study maps to study - ResearchSubjectStatus maps to status - ParticipationPeriod maps to period -*/ \ No newline at end of file +// dstu 2 change (no suitable target) diff --git a/spec/shr_research_map_stu3.txt b/spec/shr_research_map_stu3.txt index 5bda12a8..15a151ac 100644 --- a/spec/shr_research_map_stu3.txt +++ b/spec/shr_research_map_stu3.txt @@ -4,11 +4,11 @@ Target: FHIR_STU_3 -Study maps to ResearchStudy: +ResearchStudy maps to ResearchStudy: Title maps to title Identifier maps to identifier PartOf maps to partOf - ResearchStudyStatus maps to status + ResourceStatus maps to status Enrollment maps to enrollment EffectiveTimePeriod maps to period Sponsor maps to sponsor @@ -24,6 +24,6 @@ Study maps to ResearchStudy: ResearchSubject maps to ResearchSubject: Patient maps to individual - Study maps to study - ResearchSubjectStatus maps to status + ResearchStudy maps to study + ResourceStatus maps to status ParticipationPeriod maps to period diff --git a/spec/shr_research_vs.txt b/spec/shr_research_vs.txt index 5fa1a1e9..92c8ad8d 100644 --- a/spec/shr_research_vs.txt +++ b/spec/shr_research_vs.txt @@ -14,7 +14,7 @@ ValueSet: ResearchSubjectTerminationReasonVS Description: "The reason for a research subject leaving a research study." #moved "Subject relocated" #died "Suject passed away" -#ended "Study ended" +#ended "ResearchStudy ended" #adverse "Subject could not tolerate treatement" #protocol "Subject could not follow protocol, e.g. required appointments, dosing schedule, etc." #other "Other reason" From c6366545b5dd3e630557036e7ce76e23a6890bca Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sat, 2 Feb 2019 12:30:59 -0500 Subject: [PATCH 188/289] Restored MedicationExposure --- spec/shr_medication.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 900e7d79..f7bdfe74 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -64,6 +64,11 @@ Description: "The dosage of the medication. The data structure is flexible and c Value: Ratio +Abstract Element: MedicationExposure +Based on: ActionPerformed +Description: "Abstract class representing medication exposure, independent of whether reported in a medication statement or medication administration. Does not include medication requests (prescriptions)." +1..1 Medication +0..1 Dosage 0..0 Method // because of Dosage.Method EntryElement: MedicationStatement From aa9afd39590e5dd38ea8e5edfdfaaa23ac5139c6 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sun, 3 Feb 2019 11:16:00 -0500 Subject: [PATCH 189/289] Unified Identifier --- spec/shr_adverse.txt | 1 + spec/shr_adverse_map_dstu2.txt | 1 + spec/shr_adverse_map_stu3.txt | 1 + spec/shr_allergy_map_dstu2.txt | 1 + spec/shr_allergy_map_stu3.txt | 2 +- spec/shr_base.txt | 27 +++++++++++++++--------- spec/shr_base_action.txt | 2 ++ spec/shr_base_finding.txt | 13 +++--------- spec/shr_base_map_dstu2.txt | 3 +++ spec/shr_base_map_stu3.txt | 9 ++++++-- spec/shr_encounter_map_dstu2.txt | 1 + spec/shr_encounter_map_stu3.txt | 1 + spec/shr_entity.txt | 34 +++++++++++++------------------ spec/shr_entity_map_dstu2.txt | 12 +++++++++-- spec/shr_entity_map_stu3.txt | 17 +++++++++++----- spec/shr_financial_map_dstu2.txt | 1 + spec/shr_financial_map_stu3.txt | 1 + spec/shr_intervention.txt | 4 ++-- spec/shr_medication.txt | 4 ++++ spec/shr_medication_map_dstu2.txt | 4 ++++ spec/shr_medication_map_stu3.txt | 6 ++++++ spec/shr_occupation.txt | 23 ++++++++------------- spec/shr_occupation_map_dstu2.txt | 6 +----- spec/shr_occupation_map_stu3.txt | 6 +----- spec/shr_procedure.txt | 23 +++++++-------------- spec/shr_procedure_map_dstu2.txt | 11 ++++++---- spec/shr_procedure_map_stu3.txt | 12 +++++++---- spec/shr_research.txt | 1 + spec/shr_research_map_stu3.txt | 3 ++- 29 files changed, 128 insertions(+), 102 deletions(-) diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt index 74d6fadb..bd6660e6 100644 --- a/spec/shr_adverse.txt +++ b/spec/shr_adverse.txt @@ -12,6 +12,7 @@ CodeSystem: MTH = http://ncimeta.nci.nih.gov Element: AdverseEvent Based on: ClinicalStatement Description: "A record of an untoward or unexpected event in a patient under treatment, and which does not necessarily have to have a causal relationship with that treatment. Adverse events may capture either a workflow breach that may or may not result in harm, but must be documented for quality improvement purposes, or an adverse finding whether or not it can be traceable to an actual workflow breach." +0..1 Identifier Recorder value is type PatientOrPractitionerOrRelatedPerson 1..1 Patient 1..1 OccurrenceTime diff --git a/spec/shr_adverse_map_dstu2.txt b/spec/shr_adverse_map_dstu2.txt index 8df6549f..79184205 100644 --- a/spec/shr_adverse_map_dstu2.txt +++ b/spec/shr_adverse_map_dstu2.txt @@ -3,6 +3,7 @@ Namespace: shr.adverse Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: + Identifier maps to identifier Recorder maps to recorder // Type maps to type // TOPIC CODE??? Type doesn't exist in AdverseEvent CommentOrDescription maps to description diff --git a/spec/shr_adverse_map_stu3.txt b/spec/shr_adverse_map_stu3.txt index a37bff94..155f8a23 100644 --- a/spec/shr_adverse_map_stu3.txt +++ b/spec/shr_adverse_map_stu3.txt @@ -3,6 +3,7 @@ Namespace: shr.adverse Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: + Identifier maps to identifier Recorder maps to recorder // Type maps to type // TOPIC CODE??? CommentOrDescription maps to description diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index 7f005d95..77b58e4b 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -4,6 +4,7 @@ Target: FHIR_DSTU_2 AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: + Identifier maps to identifier Patient maps to patient Asserter maps to asserter Recorder maps to recorder diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index e918008a..1b490d6c 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -3,7 +3,7 @@ Namespace: shr.allergy Target: FHIR_STU_3 AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance: - Patient maps to patient + Identifier maps to identifier Patient maps to patient Asserter maps to asserter Recorder maps to recorder diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 3191c447..534cf7c0 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -57,6 +57,7 @@ Description: "Parent class for any item in clinical or administrative health-rel 1..1 TopicCode 0..1 Narrative 0..1 ResourceStatus +0..* Identifier Element: TopicCode Description: "A code describing what the domain resource concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist (present) or not exist (absent)." @@ -127,28 +128,28 @@ Description: "This abstract class provides properties and behaviors common to en Element: Asserter Concept: TBD Description: "The origin or source of the information or request: a practitioner, patient, related person, organization, an algorithm, device, etc." - Value: Participant // TODO: might have to change to Participation + Value: Participant Element: Recorder Concept: TBD Description: "The recorder of the information, if other than the information originator. For example, the nurse taking a list of medications reported by the patient." - Value: Participant // TODO: might have to change to Participation + Value: Participant + + Element: Participant + Concept: MTH#C1550369 + Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity. A code can be used to indicate a generic type of participant, e.g., mother, EMT, or social worker." + Value: ref(EntityOrRole) or CodeableConcept Element: CreationDate Concept: TBD Description: "The date/time the information was asserted or created; usually, when the clinical statement was initially recorded." Value: dateTime - Element: Participant - Concept: MTH#C1550369 - Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity." - Value: ref(EntityOrRole) - - EntryElement: Composition Based on: DomainResource Description: "A composition represents a set of Entries sharing common provenance, a document such as an extract from a patient record, a knowledge artifact, or a catalog definition." +0..1 Identifier // FHIR inconsistency -- usually 0..* 1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/composition-status 1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes 0..* Section @@ -186,9 +187,15 @@ Description: "A composition represents a set of Entries sharing common provenanc Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Device) + Element: FHIRProcedureParticipant + Based on: Participant + Description: "Constrains participants to classes that are accepted by FHIR as actors in procedures in STU 3." + Value: ref(Practitioner) or ref(Organization) or ref(Patient) or ref(RelatedPerson) or ref(Device) - - + Element: ParticipantType + Based on: Participant + Description: "A participant who is not a specific individual or device, identified only by a type code. This could be a type of practitioner, a type of relative (e.g., mother), a type of device, etc. The type is distinct from the role; the mother (type) could play different roles (caregiver, organ donor, healthcare proxy, etc.)" + Value: CodeableConcept /* Element: HealthRecordId diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 8dae8694..72f4e895 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -47,6 +47,7 @@ Description: "Abstract class representing performance of any type of action." Description: "The point in time or span of time the participant is involved." Value: TimePeriod + Element: Method Concept: TBD Description: "The technique used to carry out an action, for example, the specific imaging technical or assessment vehicle." @@ -133,6 +134,7 @@ Description: "Abstract class representing a request for any type of action to b Description: "A choice of Practitioner or Device. Needed for mapping to FHIR." Value: ref(Practitioner) or ref(Device) + Abstract Element: ActionNotPerformed Based on: ActionStatement Description: "Abstract class representing non-performance of any type of action." diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 8bca360e..4d000c8a 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -63,8 +63,8 @@ Description: "An assertion, determination, opinion, evaluation, result, observat 0..1 Focus Element: Focus - Description: "The specific person or condition this resource relates to. The Focus is only required if the person or thing observed is different than the patient. Focus should not be an anatomical location. The focus for cancer progression would be the cancer condition. If the observed property is wound length, the focus would be an instance of a wound. In the case of an assertion of existence, the focus is the larger entity that the asserted item is a portion of. For example, a wound tunnel is part of a wound; an organization part of a larger organization, or an encounter with a hospitalist might be part of a larger hospitalization encounter." - Value: ref(DomainResource) // or CodeableConcept or string or CodeableConcept or Identifier + Description: "The entity this condition or observation relates to, for example, a related person. The Focus is only required if the person or thing observed is different than the patient. Focus should not be an anatomical location. Examples: The focus for cancer progression would be the cancer condition; for wound length, an instance of a wound (a condition)." + Value: ref(DomainResource) or CodeableConcept // or string or Identifier Element: RelevantTime Concept: TBD @@ -90,15 +90,9 @@ For an Observation, the TopicCode describes the aspect or property of the subjec 0..1 Device 0..1 PanelMembers 0..1 ReferenceRange + Asserter value is type PersonOrOrganization //0..1 DeltaFlag -// TODO --- this is redundant with Asserter - Element: Observer - Concept: MTH#C0449416 - Description: "The person or entity that provided the information in the entry, e.g. the subject (patient), medical professional, family member, device or software program, as distinct from who recorded the entry." - 1..1 ref(EntityOrRole) - 0..1 RelationshipToPersonOfRecord - Element: Interpretation Concept: MTH#C0420833 Description: "A clinical interpretation of a finding (applies to both assertions and observation)." @@ -215,7 +209,6 @@ Description: "An assertion of a condition being present or absent. TopicCode is type ConditionOrDiagnosisCode DataValue value is type CodeableConcept DataValue from PresentAbsentVS -0..* Identifier 0..1 Evidence Element: ConditionOrDiagnosisCode diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 1317f825..7f80b806 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -15,6 +15,7 @@ DomainResource maps to DomainResource: Metadata.Tag maps to meta.tag Composition maps to Composition: + Identifier maps to identifier TopicCode maps to type Section maps to section Section.DomainResource maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) @@ -25,6 +26,7 @@ Narrative maps to Narrative: NarrativeQualifier maps to status Observation maps to Observation: + Identifier maps to identifier Patient maps to subject // Asserter maps to performer TopicCode maps to code @@ -76,6 +78,7 @@ LaboratoryObservation maps to http://fhir.org/guides/argonaut/StructureDefinitio ConditionPresent maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-condition: // dstu 2 change (different mapping target) + Identifier maps to identifier CreationDate maps to dateRecorded Asserter maps to asserter Patient maps to patient diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index dbf40a54..b2b3f4fd 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 //Entry maps to DomainResource: DomainResource maps to DomainResource: - _Entry.EntryId maps to id +// _Entry.EntryId maps to id Language maps to language Narrative maps to text Metadata.VersionId maps to meta.versionId @@ -17,6 +17,7 @@ DomainResource maps to DomainResource: Metadata.Tag maps to meta.tag Composition maps to Composition: + Identifier maps to identifier TopicCode maps to type Section maps to section Section.DomainResource maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) @@ -28,7 +29,9 @@ Narrative maps to Narrative: // do not map Observation to US Core Results -- Brett says that's only for labs Observation maps to Observation: // TODO: observationresults is only for labs + Identifier maps to identifier Patient maps to subject + Asserter maps to performer TopicCode maps to code Method maps to method CommentOrDescription maps to comment @@ -62,6 +65,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs ResourceStatus maps to status RelevantTime maps to effective[x] Encounter maps to context + Focus maps to extension // DeltaFlag maps to http://hl7.org/fhir/StructureDefinition/observation-delta NonLaboratoryObservation maps to Observation: @@ -71,6 +75,7 @@ LaboratoryObservation maps to http://hl7.org/fhir/us/core/StructureDefinition/us Specimen maps to specimen ConditionPresent maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition: + Identifier maps to identifier CreationDate maps to assertedDate Asserter maps to asserter Patient maps to subject @@ -99,8 +104,8 @@ ConditionAbsent maps to Basic: Abnormal lung sounds absent? */ BodyStructurePresent maps to BodySite: - Patient maps to patient Identifier maps to identifier + Patient maps to patient TopicCode maps to extension BodySite.BodySiteCode maps to code BodySite.Laterality maps to qualifier (slice on = coding.code) diff --git a/spec/shr_encounter_map_dstu2.txt b/spec/shr_encounter_map_dstu2.txt index 469369d6..598f22b8 100644 --- a/spec/shr_encounter_map_dstu2.txt +++ b/spec/shr_encounter_map_dstu2.txt @@ -5,6 +5,7 @@ Target: FHIR_DSTU_2 Encounter maps to Encounter: // dstu 2 change (name change) + Identifier maps to identifier Patient maps to patient EncounterType maps to type // ServiceProvider maps to serviceProvider diff --git a/spec/shr_encounter_map_stu3.txt b/spec/shr_encounter_map_stu3.txt index d805efdd..7530e770 100644 --- a/spec/shr_encounter_map_stu3.txt +++ b/spec/shr_encounter_map_stu3.txt @@ -4,6 +4,7 @@ Target: FHIR_STU_3 Encounter maps to Encounter: + Identifier maps to identifier Patient maps to subject EncounterType maps to type // ServiceProvider maps to serviceProvider diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 0f8e9641..b1c73102 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -25,14 +25,14 @@ EntryElement: Patient Based on: Role Concept: MTH#C1299487 Description: "A person in the role of a patient." -1..1 ref(Person) +1..* Identifier +1..1 Person //0..* ref(ExternalHealthRecord) EntryElement: ExternalHealthRecord Based on: Entity // TODO: change to information item Concept: TBD Description: "A health record other than the current health record; may have been used to help populate the current record." -1..1 Identifier 1..1 AccessTime Element: AccessTime @@ -45,11 +45,13 @@ EntryElement: Practitioner Based on: Role Concept: MTH#C2220264 Description: "A person who practices a healing art." -1..1 ref(Person) +1..1 Person 0..1 ResourceStatus 1..1 Person.HumanName // only one (limitation imposed by us-core) // 0..* Affiliation // handled by ProviderRelationship in FHIR -1..1 NationalProviderIdentifier +1..* Identifier + Identifier +includes 1..1 NationalProviderIdentifier 0..* Qualification Element: Affiliation @@ -58,9 +60,9 @@ Description: "A person who practices a healing art." Value: Organization Element: NationalProviderIdentifier + Based on: Identifier Concept: MTH#C1549728 - Description: "A unique 10 digit number to allow US healthcare providers to identify themselves in a standard way throughout the healthcare industry." - Value: Identifier + Description: "NPI: a unique 10 digit number to allow US healthcare providers to identify themselves in a standard way throughout the healthcare industry." Element: Qualification Concept: MTH#C0037778 @@ -74,7 +76,7 @@ Description: "A person who practices a healing art." EntryElement: RelatedPerson Based on: Role Description: "A person in a role defined in relationship to a patient" -0..1 ref(Person) +0..1 Person 0..1 ResourceStatus 0..1 RelationshipToPersonOfRecord 0..1 EffectiveTimePeriod @@ -260,7 +262,6 @@ Description: "A type of prescription drug or over-the-counter drug that is used Value: CodeableConcept EntryElement: Person -Based on: Entity Concept: MTH#C0027361 Description: "A person relevant to the health or social situation of the subject (including the person of record him or herself)." 1..* HumanName @@ -484,7 +485,7 @@ Concept: MTH#C1561598 Description: "A social or legal structure formed by human beings." // Required attributes come from STU 3 mapping to us-core-organization 1..1 OrganizationName -1..* OrganizationIdentifier +1..* Identifier // cardinality constraint 0..1 Type could be from http://hl7.org/fhir/ValueSet/organization-type 1..* Address 1..* ContactPoint @@ -495,11 +496,6 @@ Description: "A social or legal structure formed by human beings." Concept: TBD Description: "The name of the organization." Value: string - - Element: OrganizationIdentifier - Based on: Identifier - Concept: TBD - Description: "An identifier of the organization. An NPI preferred, tax id is allowed, and a local id is allowed in addition to ‘authoritative’ identifier" EntryElement: Location @@ -557,7 +553,7 @@ Description: "A specimen is a substance, physical object, or collection of objec 0..1 CollectionSite 0..1 SourceSpecimen 0..1 ReceivedTime -0..* ref(SpecimenContainer) +0..* SpecimenContainer 0..* SpecimenTreatment 0..* HandlingRisk 0..* SpecialHandling @@ -608,12 +604,10 @@ Description: "A specimen is a substance, physical object, or collection of objec 0..* Additive -EntryElement: SpecimenContainer -Based on: Entity -Concept: TBD -Description: "Direct container of specimen (tube/slide, etc.)" +Element: SpecimenContainer +Description: "Direct container of specimen (slide, etc.)" +0..* Identifier 0..1 Type //"Kind of container holding the specimen - e.g. a vial or well." -0..1 Identifier 0..1 CommentOrDescription 0..1 Capacity 0..1 SpecimenQuantity diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index 62806a89..fb299d00 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -3,6 +3,7 @@ Namespace: shr.entity Target: FHIR_DSTU_2 Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient: // dstu 2 change (different mapping target) + Identifier maps to identifier ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender @@ -28,6 +29,7 @@ Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient // Deceased.DateOfDeath maps to deceased[x].dateTime Practitioner maps to Practitioner: // dstu 2 change (different mapping target) + Identifier maps to identifier ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender @@ -35,13 +37,13 @@ Practitioner maps to Practitioner: // dstu 2 change (different mapping target) Person.Address maps to address Person.ContactPoint maps to telecom Person.Communication.Language maps to communication - NationalProviderIdentifier maps to identifier Qualification maps to qualification Qualification.Type maps to qualification.code Qualification.EffectiveTimePeriod maps to qualification.period Qualification.Issuer maps to qualification.issuer RelatedPerson maps to RelatedPerson: + Identifier maps to identifier ResourceStatus maps to extension Person.HumanName maps to name Person.DateOfBirth maps to birthDate @@ -53,15 +55,16 @@ RelatedPerson maps to RelatedPerson: EffectiveTimePeriod maps to period Organization maps to Organization: + Identifier maps to identifier ResourceStatus maps to active OrganizationName maps to name Type maps to type - OrganizationIdentifier maps to identifier Address maps to address ContactPoint maps to telecom PartOf maps to partOf Group maps to Group: + Identifier maps to identifier ResourceStatus maps to extension Type maps to type Actual maps to actual @@ -77,6 +80,7 @@ Group maps to Group: Count maps to quantity Facility maps to Location: + Identifier maps to identifier ResourceStatus maps to status FacilityName maps to name Location[Address] maps to address @@ -88,6 +92,7 @@ Facility maps to Location: Type maps to type Substance maps to Substance: + Identifier maps to identifier ResourceStatus maps to status Type maps to code Ingredient maps to ingredient @@ -95,6 +100,7 @@ Substance maps to Substance: Ingredient.SubstanceOrCode[Substance] maps to ingredient.substance Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medication: + Identifier maps to extension ResourceStatus maps to status Type maps to code // dstu 2 change (different attribute) @@ -118,6 +124,7 @@ Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medi Package maps to package.container Specimen maps to Specimen: + Identifier maps to identifier ResourceStatus maps to status AccessionIdentifier maps to accessionIdentifier Type maps to type @@ -138,6 +145,7 @@ Specimen maps to Specimen: SpecimenContainer.Additive maps to container.additive[x] Device maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-device: + Identifier maps to identifier ResourceStatus maps to status Type maps to type // dstu 2 change (different attribute) diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index 2617103f..19f2ecb6 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -3,6 +3,7 @@ Namespace: shr.entity Target: FHIR_STU_3 Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: + Identifier maps to identifier ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender @@ -11,9 +12,9 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: Person.ContactPoint maps to telecom Person.Communication.Language maps to communication.language Person.Communication.Preferred maps to communication.preferred -// Person.Communication.SpokenLanguageProficiency maps to communication.extension -// Person.Communication.WrittenLanguageProficiency maps to communication.extension -// Person.Communication.LanguageQualifier maps to communication.extension + Person.Communication.SpokenLanguageProficiency maps to communication.extension + Person.Communication.WrittenLanguageProficiency maps to communication.extension + Person.Communication.LanguageQualifier maps to communication.extension Person.DateOfBirth maps to birthDate Person.MaritalStatus maps to maritalStatus // PlaceOfBirth maps to http://hl7.org/fhir/StructureDefinition/birthPlace @@ -28,6 +29,7 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: // Deceased.DateOfDeath maps to deceased[x].dateTime Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner: + Identifier maps to identifier ResourceStatus maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender @@ -36,13 +38,13 @@ Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-pra Person.ContactPoint maps to telecom Person.Communication.Language maps to communication // Person.Communication.Preferred - NationalProviderIdentifier maps to identifier Qualification maps to qualification Qualification.Type maps to qualification.code Qualification.EffectiveTimePeriod maps to qualification.period Qualification.Issuer maps to qualification.issuer RelatedPerson maps to RelatedPerson: + Identifier maps to identifier ResourceStatus maps to active Person.HumanName maps to name Person.DateOfBirth maps to birthDate @@ -54,15 +56,16 @@ RelatedPerson maps to RelatedPerson: EffectiveTimePeriod maps to period Organization maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization: + Identifier maps to identifier ResourceStatus maps to active OrganizationName maps to name Type maps to type - OrganizationIdentifier maps to identifier Address maps to address ContactPoint maps to telecom PartOf maps to partOf Group maps to Group: + Identifier maps to identifier ResourceStatus maps to active Type maps to type Actual maps to actual @@ -78,6 +81,7 @@ Group maps to Group: Count maps to quantity Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-location: + Identifier maps to identifier FacilityName maps to name Location[Address] maps to address Location[Geoposition].Latitude maps to position.latitude @@ -88,6 +92,7 @@ Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-locatio Type maps to type Substance maps to Substance: + Identifier maps to identifier Type maps to code ResourceStatus maps to status Ingredient maps to ingredient @@ -95,6 +100,7 @@ Substance maps to Substance: Ingredient.SubstanceOrCode maps to ingredient.substance[x] Medication maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medication: + Identifier maps to extension Type maps to code DoseForm maps to form Ingredient.SubstanceOrCode maps to ingredient.item[x] @@ -109,6 +115,7 @@ Medication maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medic Package maps to package.container Specimen maps to Specimen: + Identifier maps to identifier AccessionIdentifier maps to accessionIdentifier ResourceStatus maps to status Type maps to type diff --git a/spec/shr_financial_map_dstu2.txt b/spec/shr_financial_map_dstu2.txt index a3cdcbde..c5ca8e74 100644 --- a/spec/shr_financial_map_dstu2.txt +++ b/spec/shr_financial_map_dstu2.txt @@ -5,6 +5,7 @@ Target: FHIR_DSTU_2 Coverage maps to Coverage: // dstu 2 change (no such attribute) + Identifier maps to identifier ResourceStatus maps to status CoverageType maps to type InsuranceMemberId maps to subscriberId diff --git a/spec/shr_financial_map_stu3.txt b/spec/shr_financial_map_stu3.txt index e55a1a0f..669c4b2e 100644 --- a/spec/shr_financial_map_stu3.txt +++ b/spec/shr_financial_map_stu3.txt @@ -4,6 +4,7 @@ Target: FHIR_STU_3 Coverage maps to Coverage: + Identifier maps to identifier ResourceStatus maps to status CoverageType maps to type InsuranceMemberId maps to subscriberId diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index 6cccf0e7..f10ed6ea 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -17,7 +17,7 @@ EntryElement: CourseOfTreatmentPerformed Based on: ProcedurePerformed // mlt: questionable to call CourseOfTreatment a procedure. It is modeled as a series of activities including medications administered and procedures. Description: "A series of coordinated treatment actions taken with a certain treatment intention." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - ProcedureCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" + TopicCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" 0..1 TreatmentIntent 0..1 LineOfTherapy 0..* MedicationStatement // mlt: to cover patient-asserted medications taken at home. @@ -44,7 +44,7 @@ EntryElement: RadiationProcedurePerformed Based on: ProcedurePerformed Description: "A radiation oncology procedure. If the treatment is part of a course of treatment, the PartOf attribute should indicate the CourseOfTreatment." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - ProcedureCode from RadiationProcedurePerformedVS + TopicCode from RadiationProcedurePerformedVS 0..1 RadiationDosePerFraction 0..1 RadiationFractionsDelivered 0..1 TotalRadiationDoseDelivered diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index f7bdfe74..6a8e8bde 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -71,6 +71,7 @@ Description: "Abstract class representing medication exposure, independent of wh 0..1 Dosage 0..0 Method // because of Dosage.Method + EntryElement: MedicationStatement Based on: MedicationExposure Concept: SCT#416608005 "Drug therapy (procedure)" // TODO: investigate whether we need a new code or use a drug concept. @@ -80,6 +81,9 @@ Description: "A record of the use of a medication. If the medication is given as 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category ResourceStatus from http://hl7.org/fhir/ValueSet/medication-statement-status 0..1 Reason // Upper cardinality imposed by DSTU 2 +0..0 Participation +0..0 Facility + RelatedRequest value is type ref(MedicationRequested) // or CarePlan or ProcedureRequest or ReferralRequest EntryElement: MedicationAdministered Based on: MedicationExposure diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index 50c638d0..0dce77c6 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -16,6 +16,7 @@ Dosage maps to Dosage: */ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationstatement: + Identifier maps to identifier Asserter maps to informationSource CreationDate maps to dateAsserted // slight semantic difference? Patient maps to patient @@ -45,6 +46,7 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ Dosage.MaximumDosePerTimePeriod maps to dosage.maxDosePerPeriod MedicationAdministered maps to MedicationAdministration: + Identifier maps to identifier Patient maps to patient // DSTU 2 change (name change) Encounter maps to encounter @@ -74,6 +76,7 @@ MedicationAdministered maps to MedicationAdministration: MedicationNotAdministered maps to MedicationAdministration: + Identifier maps to identifier constrain performer to 0..0 Medication maps to medication[x] // DSTU 2 change (no such attribute) @@ -87,6 +90,7 @@ MedicationNotAdministered maps to MedicationAdministration: MedicationRequested maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationorder: + Identifier maps to identifier Medication maps to medication[x] NumberOfRefillsAllowed maps to dispenseRequest.numberOfRepeatsAllowed QuantityPerDispense maps to dispenseRequest.quantity diff --git a/spec/shr_medication_map_stu3.txt b/spec/shr_medication_map_stu3.txt index 57733fa2..d292611e 100644 --- a/spec/shr_medication_map_stu3.txt +++ b/spec/shr_medication_map_stu3.txt @@ -14,6 +14,7 @@ Dosage maps to Dosage: MaximumDosePerTimePeriod maps to maxDosePerPeriod MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationstatement: + Identifier maps to identifier Asserter maps to informationSource CreationDate maps to dateAsserted Patient maps to subject @@ -26,8 +27,11 @@ MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c Reason maps to reasonCode OccurrenceTimeOrPeriod maps to effective[x] ResourceStatus maps to status + Encounter maps to context + RelatedRequest maps to basedOn MedicationAdministered maps to MedicationAdministration: + Identifier maps to identifier Patient maps to subject Encounter maps to context RelatedRequest maps to prescription @@ -45,6 +49,7 @@ MedicationAdministered maps to MedicationAdministration: Participation.OnBehalfOf maps to performer.onBehalfOf MedicationNotAdministered maps to MedicationAdministration: + Identifier maps to identifier constrain performer to 0..0 Medication maps to medication[x] Category maps to category @@ -55,6 +60,7 @@ MedicationNotAdministered maps to MedicationAdministration: MedicationRequested maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest: + Identifier maps to identifier Requester maps to requester Medication maps to medication[x] NumberOfRefillsAllowed maps to dispenseRequest.numberOfRepeatsAllowed diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 7c35818a..d431d524 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -35,7 +35,7 @@ Outside of ODH, the employment arrangement between an employer and a person (one DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" 0..0 ObservationComponent -0..0 FocalSubjectModifier +0..0 Focus EntryElement: RetirementDate Based on: SocialHistoryObservation @@ -47,7 +47,7 @@ Outside of ODH, a characterization of the employment arrangement between an empl TopicCode is LNC#87510-4 "Date of Retirement" 0..0 ObservationComponent 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. -0..0 FocalSubjectModifier +0..0 Focus EntryElement: CombatZonePeriod Based on: SocialHistoryObservation @@ -58,7 +58,7 @@ Value: TimePeriod TopicCode is LNC#87511-2 0..0 ObservationComponent 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. -0..0 FocalSubjectModifier // only patient +0..0 Focus EntryElement: UsualWork Based on: CodedSocialHistoryObservation @@ -69,6 +69,8 @@ Example: a person has worked for a total of 30 years as a 'secretary' (Occupatio Usual Work does not include work that was unpaid or voluntary." DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 TopicCode is LNC#21843-8 + Focus value is type CodeableConcept + Focus from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion // family member value set ObservationComponent includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration @@ -101,6 +103,8 @@ A person's job can be a social determinant of their health and information about At a minimum, it is important to have a record of a person's current job(s); i.e., the job(s) in which a person is engaged at the time that he or she presents to a health care provider, regardless of duration, and to retain that information over time. In the event a person recently stopped working (e.g. retired without another job, became unemployed or disabled and unable to work), the most recent job(s) is used instead of the current job(s)." 0..0 DataValue 0..0 DataAbsentReason + Focus value is type CodeableConcept + Focus from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion TopicCode is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization ObservationComponent @@ -124,17 +128,13 @@ includes 0..1 IsCurrentJob Element: Employer Based on: Role - Concept: SCT#394571004 "Employer (person)" Description: "A person or organization that hires the services of another." - Value: ref(EmployerPerson) or ref(EmployerOrganization) + Value: ref(EmployerPerson) or ref(Organization) Element: EmployerPerson Description: "A related person who is an employer" 1..1 RelationshipToPersonOfRecord is V2#E - Element: EmployerOrganization - Description: "An Organization as defined in FHIR" - Element: PastOrPresentIndustry Based on: CodedObservationComponent Concept: LNC#86188-0 @@ -207,7 +207,6 @@ Element: SocialHistoryObservation Based on: Observation Description: "A simplified observation for social histories." Category is OBSCAT#social-history -0..1 FocalSubjectModifier 0..0 Method 0..0 BodySite 0..0 ReferenceRange @@ -220,12 +219,6 @@ Description: "A simplified observation for social histories." //0..0 DeltaFlag 0..0 CommentOrDescription - -// TODO: Use Focus - Element: FocalSubjectModifier - Description: "The focus of the observation, if someone other than the person of record (subject), identified only by the relationship to the Patient." - Value: RelationshipToPersonOfRecord - Element: CodedSocialHistoryObservation Based on: SocialHistoryObservation Description: "The result of social history questions, whose answer is expressed as a code." diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt index dddb40dd..2d82387d 100644 --- a/spec/shr_occupation_map_dstu2.txt +++ b/spec/shr_occupation_map_dstu2.txt @@ -3,6 +3,7 @@ Namespace: odh Target: FHIR_DSTU_2 SocialHistoryObservation maps to Observation: + Identifier maps to identifier Patient maps to subject TopicCode maps to code Category maps to category @@ -25,10 +26,5 @@ SocialHistoryObservation maps to Observation: constrain device to 0..0 constrain referenceRange to 0..0 -EmployerOrganization maps to Organization: - EmployerPerson maps to RelatedPerson: RelationshipToPersonOfRecord maps to relationship - -//FocalSubjectModifier maps to RelatedPerson: -// RelationshipToPersonOfRecord maps to relationship \ No newline at end of file diff --git a/spec/shr_occupation_map_stu3.txt b/spec/shr_occupation_map_stu3.txt index a24cfcad..6ccdf49c 100644 --- a/spec/shr_occupation_map_stu3.txt +++ b/spec/shr_occupation_map_stu3.txt @@ -4,6 +4,7 @@ Target: FHIR_STU_3 // do not map to US Core Results -- Brett says that's only for labs SocialHistoryObservation maps to Observation: + Identifier maps to identifier Patient maps to subject TopicCode maps to code Category maps to category @@ -28,10 +29,5 @@ SocialHistoryObservation maps to Observation: constrain device to 0..0 // constrain referenceRange to 0..0 -EmployerOrganization maps to Organization: - EmployerPerson maps to RelatedPerson: RelationshipToPersonOfRecord maps to relationship - -//FocalSubjectModifier maps to RelatedPerson: -// RelationshipToPersonOfRecord maps to relationship \ No newline at end of file diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index 2a1a5cd5..d3dde8dc 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -9,7 +9,7 @@ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category EntryElement: ProcedurePerformed Based on: ActionPerformed Description: "A procedure that has been performed." -1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite 0..1 PartOf value is type ref(ProcedurePerformed) 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -26,10 +26,6 @@ Description: "A procedure that has been performed." RelatedRequest value is type ref(ProcedureRequested) //0..* OutputFinding // in CIMI, this is part of ProcedureTopic, but the definition hinges on performance, so it belongs here, not there. - Element: ProcedureCode - Concept: TBD - Description: "A code representing the procedure (not) requested or (not) performed." - Value: CodeableConcept Element: InputFinding Description: "Patient findings expected for the performance of the specified procedure. For instance, an x-ray of a fracture prior to a surgical procedure for a bone fracture." @@ -39,11 +35,6 @@ Description: "A procedure that has been performed." Description: "Conditions or situations where the procedure is recommended. In the Performed context, the actual indication should be reported." Value: CodeableConcept - Element: FHIRProcedureParticipant - Based on: Participant - Description: "Constraints participants to classes that are accepted by FHIR as actors in procedures in STU 3." - Value: ref(Practitioner) or ref(Organization) or ref(Patient) or ref(RelatedPerson) or ref(Device) - Element: OutputFinding Description: "Patient findings documented during the performance of the procedure." Value: ref(ConditionOrObservation) @@ -52,7 +43,7 @@ Description: "A procedure that has been performed." EntryElement: ProcedureNotPerformed Based on: ActionNotPerformed 0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason -1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite //0..1 PartOf value is type ref(ProcedurePerformed or Not Performed) ??? 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -65,7 +56,7 @@ Based on: ActionRequested PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) ResourceStatus from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) 0..1 Requester is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. -1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite 0..1 PartOf value is type ref(ProcedurePerformed) 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -79,7 +70,7 @@ Based on: ActionRequested EntryElement: ProcedureRequestedAgainst Based on: ActionRequestedAgainst -1..1 ProcedureCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite @@ -102,7 +93,7 @@ EntryElement: LaboratoryProcedurePerformed Based on: ProcedurePerformed Concept: MTH#C0456984 Description: "A procedure performed on a collected specimen such as a blood panel or a biopsy." -1..1 ProcedureCode from http://hl7.org/fhir/ValueSet/observation-codes +1..1 TopicCode from http://hl7.org/fhir/ValueSet/observation-codes Category is OBSCAT#laboratory 0..1 ref(Specimen) //0..1 ref(Device) // constraint from 0..* @@ -112,7 +103,7 @@ EntryElement: SurgicalProcedurePerformed Based on: ProcedurePerformed Concept: TBD Description: "A surgical action, independent of action context." - ProcedureCode from SurgicalProcedureVS + TopicCode from SurgicalProcedureVS 0..* DirectSite 0..* DirectSiteCode 0..* IndirectSite @@ -190,5 +181,5 @@ Based on: ProcedurePerformed Description: "Diagnostic imaging procedure performed." Concept: SCT#363679005 "Imaging (procedure)" 0..0 Focus - ProcedureCode from DiagnosticImagingVS + TopicCode from DiagnosticImagingVS \ No newline at end of file diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 88788c08..eedaee8f 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -3,7 +3,8 @@ Namespace: shr.procedure Target: FHIR_DSTU_2 ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) - ProcedureCode maps to code + Identifier maps to identifier + TopicCode maps to code Patient maps to subject Category maps to category // DSTU 2 change (name change) @@ -37,7 +38,8 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) - ProcedureCode maps to code + Identifier maps to identifier + TopicCode maps to code Patient maps to subject Category maps to category // TODO the following is causing a crash @@ -68,9 +70,10 @@ SurgicalProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefi ProcedureRequested maps to ProcedureRequest: + Identifier maps to identifier CreationDate maps to orderedOn Requester maps to orderer - ProcedureCode maps to code + TopicCode maps to code // DSTU 2 change (no such attribute) // Category maps to category // DSTU 2 change (no such attribute) @@ -99,7 +102,7 @@ ProcedureRequestedAgainst maps to Basic: fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal // who is the requester? - ProcedureCode maps to code + TopicCode maps to code Category maps to category Patient maps to subject BodySite.BodySiteCode maps to bodySite diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index a1345e58..bd194df0 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -4,7 +4,8 @@ Target: FHIR_STU_3 ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: - ProcedureCode maps to code + Identifier maps to identifier + TopicCode maps to code Patient maps to subject Category maps to category constrain notDone to 0..0 @@ -29,7 +30,8 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: - ProcedureCode maps to code + Identifier maps to identifier + TopicCode maps to code Patient maps to subject Category maps to category // TODO the following is causing a crash @@ -59,9 +61,10 @@ SurgicalProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefiniti ProcedureRequested maps to ProcedureRequest: + Identifier maps to identifier CreationDate maps to authoredOn Requester maps to requester.agent - ProcedureCode maps to code + TopicCode maps to code Category maps to category constrain doNotPerform to 0..0 Patient maps to subject @@ -81,11 +84,12 @@ ProcedureRequested maps to ProcedureRequest: PriorityRank maps to priority ProcedureRequestedAgainst maps to ProcedureRequest: + Identifier maps to identifier fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal CreationDate maps to authoredOn // who is the requester? - ProcedureCode maps to code + TopicCode maps to code Category maps to category Patient maps to subject BodySite.BodySiteCode maps to bodySite diff --git a/spec/shr_research.txt b/spec/shr_research.txt index 9d856f7b..7afd70b6 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -54,6 +54,7 @@ Description: "A clinical trial or similar research study. Reference: list of FDA EntryElement: ResearchSubject Based on: Entity Description: "Record of a subject's enrollment and participation in a research study." +0..1 Identifier // cardinality constraint 1..1 ref(Patient) 1..1 ref(ResearchStudy) 1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/research-subject-status diff --git a/spec/shr_research_map_stu3.txt b/spec/shr_research_map_stu3.txt index 15a151ac..3a839239 100644 --- a/spec/shr_research_map_stu3.txt +++ b/spec/shr_research_map_stu3.txt @@ -5,8 +5,8 @@ Target: FHIR_STU_3 ResearchStudy maps to ResearchStudy: - Title maps to title Identifier maps to identifier + Title maps to title PartOf maps to partOf ResourceStatus maps to status Enrollment maps to enrollment @@ -23,6 +23,7 @@ ResearchStudy maps to ResearchStudy: StudyArm.CommentOrDescription maps to arm.description ResearchSubject maps to ResearchSubject: + Identifier maps to identifier Patient maps to individual ResearchStudy maps to study ResourceStatus maps to status From f2fd6c76cb432c62296703597bc7ef4739af1ab0 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sun, 3 Feb 2019 13:07:08 -0500 Subject: [PATCH 190/289] Brought ObservationComponents in line with PanelMembers --- spec/shr_base_finding.txt | 12 +++++++++--- spec/shr_base_map_dstu2.txt | 10 +++++----- spec/shr_base_map_stu3.txt | 10 +++++----- spec/shr_brca.txt | 16 ++++++++-------- spec/shr_medication.txt | 2 +- spec/shr_occupation.txt | 7 ++++--- spec/shr_occupation_map_dstu2.txt | 10 +++++----- spec/shr_occupation_map_stu3.txt | 10 +++++----- spec/shr_tumor.txt | 4 ++-- spec/shr_wound.txt | 16 ++++++++-------- 10 files changed, 52 insertions(+), 45 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 4d000c8a..2d4d0fee 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -5,7 +5,7 @@ Uses: shr.core, shr.entity, shr.encounter Abstract Element: ObservationComponent -Description: "A finding that does not or cannot stand alone, or a component of another finding." +Description: "A sub-observation contributing to the parent observation, expressed as separate code value pairs that share the same attributes. Examples include systolic and diastolic component observations for blood pressure measurement and multiple component observations for genetics observations. Component observations share the same attributes in the Observation resource as the primary observation and are always treated a part of a single observation (they are not separable). However, the reference range for the primary observation value is not inherited by the component values and is required when appropriate for each component observation." // should an observation component have additional properties, such as protocol, circumstance, or interpretation? // how do we handle a normal? (physical exam normal) // exclusions? (diabetes excluded) @@ -81,15 +81,15 @@ Observation has a value representing the result (answer), or an DataAbsentReason For an Observation, the TopicCode describes the aspect or property of the subject being observed or measured. The TopicCode is the 'question code' that pairs to the 'answer' contained in the Value." 0..1 Method 0..1 RelevantTime -0..* ObservationComponent 1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/observation-status 0..1 Category from http://hl7.org/fhir/ValueSet/observation-category if covered // MK Category cardinality from 0..* to 0..1 to be compatible with DSTU 2 0..1 BodySite 0..1 CommentOrDescription 0..1 Interpretation 0..1 Device -0..1 PanelMembers 0..1 ReferenceRange +0..1 Components +0..1 PanelMembers Asserter value is type PersonOrOrganization //0..1 DeltaFlag @@ -104,6 +104,12 @@ For an Observation, the TopicCode describes the aspect or property of the subjec Examples are the measurements that compose a complete blood count (CBC), or the elements of a pathology report. Each member is an independent evaluation, but the grouping reflects a composite lab order, shared specimen, or a single report author. Typically the Category and Reason are not given for individual findings that are part of the panel, but rather given at the level of the panel itself." 0..* ref(Observation) + Element: Components + Concept: TBD + Description: "Sub-observations that are part of this observation. A sub-observation contributs to the parent observation and are always treated a part of a single observation (they are not separable). However, the reference range for the primary observation value is not inherited by the component values and is required when appropriate for each component observation." + 0..* ref(ObservationComponent) + + /* commented out but it might need to come back, so please save Element: Precondition Concept: TBD diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 7f80b806..a049d0e4 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -50,13 +50,13 @@ Observation maps to Observation: // ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo // dstu 2 change (no such attribute) // ReferenceRange.ApplicableAgeRange maps to referenceRange.age - ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - ObservationComponent.TopicCode maps to component.code - ObservationComponent.DataValue maps to component.value[x] - ObservationComponent.DataAbsentReason maps to component.dataAbsentReason + Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) + Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.DataValue maps to component.value[x] + Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason // dstu 2 change (no such attribute) //ObservationComponent.Interpretation maps to component.interpretation - ObservationComponent.ReferenceRange maps to component.referenceRange + Components.ObservationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index b2b3f4fd..bbdf9d86 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -50,12 +50,12 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.Type maps to referenceRange.type ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age - ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - ObservationComponent.TopicCode maps to component.code - ObservationComponent.DataValue maps to component.value[x] - ObservationComponent.DataAbsentReason maps to component.dataAbsentReason + Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) + Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.DataValue maps to component.value[x] + Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation - ObservationComponent.ReferenceRange maps to component.referenceRange + Components.ObservationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) DataValue maps to value[x] diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 2676ba1d..a92ee7a1 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -89,7 +89,7 @@ Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (I TopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" 0..0 Method // pre-coordinated in the TopicCode Specimen is type BreastSpecimen - ObservationComponent + Components.ObservationComponent includes 0..1 CompleteMembraneStainingPercent 0..0 PanelMembers @@ -110,7 +110,7 @@ Description: "HER2 receptor status as determined by single-probe or dual-probe F Method from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS Specimen is type BreastSpecimen - ObservationComponent + Components.ObservationComponent includes 0..1 AverageHER2SignalsPerCell includes 0..1 AverageCEP17SignalsPerCell includes 0..1 HER2toCEP17Ratio @@ -142,7 +142,7 @@ The current approach is that positive/negative designation is a value, even thou TopicCode is LNC#16112-5 DataValue from PositiveNegativeVS Specimen is type BreastSpecimen - ObservationComponent + Components.ObservationComponent includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers @@ -155,7 +155,7 @@ Based on discussion with Cancer Interoperability Group subject matter experts, t TopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" DataValue from PositiveNegativeVS Specimen is type BreastSpecimen - ObservationComponent + Components.ObservationComponent includes 0..1 NuclearPositivity includes 0..1 AverageStainingIntensity 0..0 PanelMembers @@ -190,7 +190,7 @@ Description: "The Elston Grade/Nottingham Score, representative of the aggressiv DataValue from NottinghamCombinedGradeVS DataAbsentReason from NottinghamNullVS Specimen is type BreastSpecimen - ObservationComponent + Components.ObservationComponent includes 0..1 TubuleFormationScore includes 0..1 NuclearPleomorphismScore includes 0..1 MitoticCountScore @@ -364,7 +364,7 @@ includes 0..1 OtherReceptorScoringSystem Description: "Ki-67 is a protein phosphatase whose expression is strongly associated with cell proliferation and encoded by the MKI67 gene. The Ki67 labeling index is the fraction of Ki-67-positive cells to total cells in a tumor specimen and may be useful for determining prognosis with respect to survival and disease recurrence. The more positive cells there are, the more quickly they are dividing and forming new cells. ReferenceRange: Low <10, Intermediate 10-20, >20 High" Value: Quantity with units UCUM#% TopicCode is LNC#29593-1 - ObservationComponent + Components.ObservationComponent includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered Element: S-PhaseFraction @@ -383,7 +383,7 @@ Value: CodeableConcept from PositiveNegativeVS 0..0 ReferenceRange //0..0 DeltaFlag 0..0 BodySited - ObservationComponent + Components.ObservationComponent includes 0..1 Refseq Element: Refseq @@ -398,7 +398,7 @@ Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." Observation.TopicCode is TBD#TBD 0..0 ObservationComponent - PanelMembers.EvaluationresultRecorded + PanelMembers.Observation includes 1..1 BRCA1Variant includes 1..1 BRCA2Variant diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 6a8e8bde..6bb58668 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -109,7 +109,7 @@ Modeling note: MedicationAdherence could be attached to MedicationStatement dire DataValue from QualitativeFrequencyVS TopicCode is MTH#C2364172 1..1 Focus value is type ref(Medication) - ObservationComponent + Components.ObservationComponent includes 0..* MedicationNonAdherenceReason Element: MedicationNonAdherenceReason diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index d431d524..f5325590 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -71,7 +71,7 @@ Usual Work does not include work that was unpaid or voluntary." TopicCode is LNC#21843-8 Focus value is type CodeableConcept Focus from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion // family member value set - ObservationComponent + Components.ObservationComponent includes 1..1 UsualIndustry includes 0..1 UsualOccupationDuration 1..1 RelevantTime @@ -107,7 +107,7 @@ At a minimum, it is important to have a record of a person's current job(s); i.e Focus from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion TopicCode is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization - ObservationComponent + Components.ObservationComponent includes 0..1 Occupation includes 0..1 PastOrPresentIndustry includes 0..1 WorkClassification @@ -132,6 +132,7 @@ includes 0..1 IsCurrentJob Value: ref(EmployerPerson) or ref(Organization) Element: EmployerPerson + Based on: RelatedPerson Description: "A related person who is an employer" 1..1 RelationshipToPersonOfRecord is V2#E @@ -236,7 +237,7 @@ Based on: CodedSocialHistoryObservation Description: "History of service in the US military." Category is OBSCAT#social-history TopicCode is MTH#C3714797 - ObservationComponent + Components.ObservationComponent includes 1..1 MilitaryStatus includes 0..1 MilitaryServiceDischargeStatus includes 0..1 MilitaryBranch diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt index 2d82387d..cce53f2d 100644 --- a/spec/shr_occupation_map_dstu2.txt +++ b/spec/shr_occupation_map_dstu2.txt @@ -7,12 +7,12 @@ SocialHistoryObservation maps to Observation: Patient maps to subject TopicCode maps to code Category maps to category - ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - ObservationComponent.TopicCode maps to component.code - ObservationComponent.DataValue maps to component.value[x] - ObservationComponent.DataAbsentReason maps to component.dataAbsentReason + Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) + Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.DataValue maps to component.value[x] + Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation - ObservationComponent.ReferenceRange maps to component.referenceRange + Components.ObservationComponent.ReferenceRange maps to component.referenceRange DataValue maps to value[x] DataAbsentReason maps to dataAbsentReason RelevantTime maps to effective[x] diff --git a/spec/shr_occupation_map_stu3.txt b/spec/shr_occupation_map_stu3.txt index 6ccdf49c..ef1f47fc 100644 --- a/spec/shr_occupation_map_stu3.txt +++ b/spec/shr_occupation_map_stu3.txt @@ -8,12 +8,12 @@ SocialHistoryObservation maps to Observation: Patient maps to subject TopicCode maps to code Category maps to category - ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - ObservationComponent.TopicCode maps to component.code - ObservationComponent.DataValue maps to component.value[x] - ObservationComponent.DataAbsentReason maps to component.dataAbsentReason + Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) + Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.DataValue maps to component.value[x] + Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation - ObservationComponent.ReferenceRange maps to component.referenceRange + Components.ObservationComponent.ReferenceRange maps to component.referenceRange // constrain related to 0..0 DataValue maps to value[x] // DataAbsentReason maps to dataAbsentReason diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt index 015b58af..3df3051d 100644 --- a/spec/shr_tumor.txt +++ b/spec/shr_tumor.txt @@ -26,7 +26,7 @@ Concept: SCT#263605001 "Tumor size (observable entity)" Focus value is type ref(TumorPresent) TopicCode is SCT#263605001 "Tumor size (observable entity)" 0..0 PanelMembers - ObservationComponent + Components.ObservationComponent includes 0..1 TumorDimension1 includes 0..1 TumorDimension2 includes 0..1 TumorDimension3 @@ -68,7 +68,7 @@ Description: "The edge or border of the tissue removed in cancer surgery. The ma DataValue from PositiveNegativeVS TopicCode is MTH#C4086369 0..0 PanelMembers - ObservationComponent + Components.ObservationComponent includes 0..1 TumorMarginDescription includes 0..1 Cellularity // not sure this belongs here includes 0..1 PercentageInSituCarcinoma // not sure this belongs here diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 83a4fb11..71557a5c 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -123,7 +123,7 @@ Description: "Group of observations regarding the properties and severity of a w TopicCode is LNC#39135-9 0..0 ReferenceRange 0..* Media is type PhotographicImage // 72170-4 Photographic image [Media] - ObservationComponent + Components.ObservationComponent includes 0..1 WoundEpisode // very similar to Episodicity or ClinicalStatus, but value set is different. includes 0..1 WoundTrend includes 0..1 WoundPeriwoundDescription // 72301-5 Description of Periwound @@ -208,7 +208,7 @@ Description: "The appearance of the base (bed) of the wound, together with the p TopicCode is LNC#89254-7 0..0 BodySite // location is given by the wound assertion 0..0 Device - ObservationComponent + Components.ObservationComponent includes 1..1 WoundBedAppearance includes 1..1 WoundBedAppearancePercentage @@ -233,7 +233,7 @@ Description: "Color of part or all of the wound base (bed), and the percentage o TopicCode is TBD#TBD 0..0 BodySite // location is given by the wound assertion 0..0 Device - ObservationComponent + Components.ObservationComponent includes 1..1 WoundBedColor includes 1..1 WoundBedColorAreaPercentage @@ -260,7 +260,7 @@ Description: "The state of the tissue at the edge of the wound." TopicCode is LNC#89256-2 0..0 BodySite // location is given by the wound assertion 0..0 Device - ObservationComponent + Components.ObservationComponent includes 1..1 WoundEdgeDescription includes 0..1 WoundEdgeColor // LOINC:Is the entire edge of the wound described by one color? Or should it be by percentage, similar to the wound bed? @@ -286,7 +286,7 @@ Description: "A discharging blind-ended track that extends from the surface of a TopicCode is LNC#89257-0 0..0 BodySite // location is given by the wound assertion 0..0 Device - ObservationComponent + Components.ObservationComponent includes 0..1 WoundTunnelLength includes 0..1 WoundTunnelClockDirection @@ -316,7 +316,7 @@ Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage aro 1..1 WoundIdentifier 0..0 BodySite // location is given by the wound assertion 0..0 Device - ObservationComponent + Components.ObservationComponent includes 0..1 WoundUnderminingLength includes 0..1 WoundUnderminingClockDirection @@ -342,7 +342,7 @@ Description: "Description of the fluid produced by a wound." 1..1 WoundIdentifier 0..0 BodySite // location is given by the wound assertion 0..0 Device - ObservationComponent + Components.ObservationComponent includes 0..1 WoundExudateAmount includes 0..1 WoundExudateVolume includes 1..1 WoundExudateAppearance @@ -392,7 +392,7 @@ Description: "The estimated or measured dimensions of a wound." 1..1 WoundIdentifier 0..0 BodySite // location is given by the wound assertion 0..0 Device - ObservationComponent + Components.ObservationComponent includes 1..1 WoundLength includes 1..1 WoundWidth includes 0..1 WoundDepth From b2b227df851d91e2ebb60351ea8602a0dedd3cb9 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Sun, 3 Feb 2019 14:39:50 -0500 Subject: [PATCH 191/289] Aligned Code with FHIR --- spec/ig-shr-config.json | 2 +- spec/shr_adverse.txt | 3 ++- spec/shr_adverse_map_dstu2.txt | 2 +- spec/shr_adverse_map_stu3.txt | 2 +- spec/shr_allergy.txt | 28 ++++++------------------ spec/shr_allergy_map_dstu2.txt | 16 ++------------ spec/shr_allergy_map_stu3.txt | 2 +- spec/shr_base.txt | 5 ----- spec/shr_base_finding.txt | 29 ++++++++++++------------- spec/shr_base_map_dstu2.txt | 10 ++++----- spec/shr_base_map_stu3.txt | 10 ++++----- spec/shr_brca.txt | 36 +++++++++++++++---------------- spec/shr_core.txt | 12 ++++++----- spec/shr_core_map_dstu2.txt | 8 +++---- spec/shr_core_map_stu3.txt | 10 ++++----- spec/shr_core_vs.txt | 8 +++---- spec/shr_entity_map_dstu2.txt | 6 +++--- spec/shr_entity_map_stu3.txt | 5 +++-- spec/shr_familyhistory.txt | 2 +- spec/shr_genetics.txt | 8 +++---- spec/shr_intervention.txt | 4 ++-- spec/shr_medication.txt | 4 ++-- spec/shr_occupation.txt | 32 +++++++++++++-------------- spec/shr_occupation_map_dstu2.txt | 4 ++-- spec/shr_occupation_map_stu3.txt | 4 ++-- spec/shr_oncocore.txt | 8 +++---- spec/shr_oncocore_stage.txt | 20 ++++++++--------- spec/shr_procedure.txt | 14 ++++++------ spec/shr_procedure_map_dstu2.txt | 8 +++---- spec/shr_procedure_map_stu3.txt | 8 +++---- spec/shr_tumor.txt | 14 ++++++------ spec/shr_wound.txt | 20 ++++++++--------- 32 files changed, 158 insertions(+), 186 deletions(-) diff --git a/spec/ig-shr-config.json b/spec/ig-shr-config.json index ae16aba0..bdb258ac 100644 --- a/spec/ig-shr-config.json +++ b/spec/ig-shr-config.json @@ -20,7 +20,7 @@ }, "filterStrategy": { - "filter": false, + "filter": false }, "publisher": "The MITRE Corporation: Standard Health Record Collaborative", "contact": [ diff --git a/spec/shr_adverse.txt b/spec/shr_adverse.txt index bd6660e6..cdeddd67 100644 --- a/spec/shr_adverse.txt +++ b/spec/shr_adverse.txt @@ -16,6 +16,7 @@ Description: "A record of an untoward or unexpected event in a patient under tre Recorder value is type PatientOrPractitionerOrRelatedPerson 1..1 Patient 1..1 OccurrenceTime +0..1 Type from MedDRAVS 1..1 Seriousness from SeriousnessVS // to be replaced with http://hl7.org/fhir/ValueSet/adverse-event-seriousness in FHIR 4 //0..1 TBD "PatternOfEvent" // from STDM 0..1 Outcome from http://hl7.org/fhir/ValueSet/adverse-event-outcome @@ -24,7 +25,7 @@ Description: "A record of an untoward or unexpected event in a patient under tre 0..* CausalAttribution 0..* ActionTaken 0..1 AssociatedStudy - TopicCode from MedDRAVS + Element: Seriousness Concept: MTH#C2985911 diff --git a/spec/shr_adverse_map_dstu2.txt b/spec/shr_adverse_map_dstu2.txt index 79184205..752178ce 100644 --- a/spec/shr_adverse_map_dstu2.txt +++ b/spec/shr_adverse_map_dstu2.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: Identifier maps to identifier Recorder maps to recorder -// Type maps to type // TOPIC CODE??? Type doesn't exist in AdverseEvent + Type maps to event CommentOrDescription maps to description Patient maps to subject AssociatedStudy maps to study diff --git a/spec/shr_adverse_map_stu3.txt b/spec/shr_adverse_map_stu3.txt index 155f8a23..bbc459e9 100644 --- a/spec/shr_adverse_map_stu3.txt +++ b/spec/shr_adverse_map_stu3.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 AdverseEvent maps to AdverseEvent: Identifier maps to identifier Recorder maps to recorder -// Type maps to type // TOPIC CODE??? + Type maps to extension CommentOrDescription maps to description Patient maps to subject AssociatedStudy maps to study diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index 22014419..abfc7eeb 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -18,11 +18,10 @@ Description: "A finding related to the presence of an individual's risk or sensi 1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status 0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status 0..0 Focus // always the patient -1..1 TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" -1..1 DataValue // from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered // DSTU 2 change different required value sets) +1..1 DataValue from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered // DSTU 2 change different required value sets) 0..1 SubstanceCategory // DSTU 2 change (restrict upper cardinality to 1) 0..1 Onset -0..1 AllergyIntoleranceType +0..1 Type from http://hl7.org/fhir/ValueSet/allergy-intolerance-type 0..1 Criticality 0..1 MostRecentOccurrenceTime 0..* AllergyIntoleranceReaction @@ -32,10 +31,6 @@ Description: "A finding related to the presence of an individual's risk or sensi Description: "Categorization of the risk substance as a food, drug, or environmental agent. For difficult-to-classify substances, one can leave this field empty or choose the most typical category." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/allergy-intolerance-category // change to code? - Element: AllergyIntoleranceType - Description: "Whether the sensitivity is an allergy or intolerance, in other words, high level information on the mechanism of the adverse reaction." - Value: CodeableConcept from http://hl7.org/fhir/ValueSet/allergy-intolerance-type - Element: MostRecentOccurrenceTime Description: "The time of the last or latest of a series of events." Value: dateTime @@ -58,15 +53,6 @@ Description: "A finding related to the presence of an individual's risk or sensi /* Probably the most consistent way to define the absence (no known) allergy is to use an absence assertion, but this is not the way US Core has decided to go. Comments here are for reference only. - -EntryElement: AllergyIntoleranceAbsent -Based on: ConditionAbsent -Description: "Used to record that a particular substance or class of substances does not pose a known elevated risk to the subject. The certainly of absence is always 'no known' because definitively ruling out an allergy intolerance is not possible." - TopicCode is SCT#473010000 "Hypersensitivity condition (disorder)" // We don't use a code that represents the absence of the condition and whose DataValue would therefore be true or false (rather than present/absent) -1..1 AllergenIrritant -0..* SubstanceCategory -1..1 Certainty is SCT#443508001 "No history of clinical finding in subject (situation)" // no known - EntryElement: NoKnownDrugAllergy Based on: AllergyIntoleranceAbsent @@ -96,9 +82,9 @@ Description: "Statement expressings no known allergies or hypersensitivity to an 0..0 SubstanceCategory -// TopicCode from NoKnownAllergyVS -// TopicCode is SCT#716186003 "No known allergy (situation)" -// TopicCode is SCT#428607008 "No known environmental allergy (situation)" -// TopicCode is SCT#429625007 "No known food allergy (situation)" -// TopicCode is SCT#409137002 "No known drug allergy (situation)" +// DataValue from NoKnownAllergyVS +// DataValue is SCT#716186003 "No known allergy (situation)" +// DataValue is SCT#428607008 "No known environmental allergy (situation)" +// DataValue is SCT#429625007 "No known food allergy (situation)" +// DataValue is SCT#409137002 "No known drug allergy (situation)" */ \ No newline at end of file diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index 77b58e4b..7db84a87 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -10,7 +10,7 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a Recorder maps to recorder CreationDate maps to assertedDate DataValue maps to substance - AllergyIntoleranceType maps to type + Type maps to type SubstanceCategory maps to category ResourceStatus maps to status Criticality maps to criticality @@ -26,19 +26,7 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a AllergyIntoleranceReaction.CommentOrDescription maps to reaction.description /* -NoAdverseSensitivityToSubstance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: - Patient maps to patient - Asserter maps to asserter - Recorder maps to recorder - CreationDate maps to assertedDate - AdverseSensitivityTopic.TopicCode maps to code - constrain type to 0..0 - constrain category to 0..0 - constrain clinicalStatus to 0..0 - constrain criticality to 0..0 - constrain onset[x] to 0..0 - constrain lastOccurrence to 0..0 - constrain reaction to 0..0 + NoKnownAllergy maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: constrain clinicalStatus to 0..0 diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index 1b490d6c..a1d8a5b0 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -9,7 +9,7 @@ AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Recorder maps to recorder CreationDate maps to assertedDate DataValue maps to code - TopicCode maps to type + Type maps to type SubstanceCategory maps to category ResourceStatus maps to verificationStatus ClinicalStatus maps to clinicalStatus diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 534cf7c0..6fe5c521 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -54,15 +54,10 @@ Description: "Parent class for any item in clinical or administrative health-rel Abstract Element: DomainResource Based on: Resource Description: "Parent class for any item in clinical or administrative health-related system. A DomainResource can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." -1..1 TopicCode 0..1 Narrative 0..1 ResourceStatus 0..* Identifier - Element: TopicCode - Description: "A code describing what the domain resource concerns, such as a condition, lab test, property, or an item. In an observation, the code represents the 'question': the aspect or property being observed or measured. In an existence assertion, the code represents the type of event, condition, or phenomenon that is being asserted to exist (present) or not exist (absent)." - Value: CodeableConcept - Element: Narrative Concept: TBD Description: "A human-readable narrative, potentially including images, that contains a summary of the resource, and may be used to represent the content of the resource to a human." diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 2d4d0fee..f7fb5d93 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -9,7 +9,7 @@ Description: "A sub-observation contributing to the parent observation, express // should an observation component have additional properties, such as protocol, circumstance, or interpretation? // how do we handle a normal? (physical exam normal) // exclusions? (diabetes excluded) -1..1 TopicCode +1..1 Code 0..1 DataValue 0..1 DataAbsentReason 0..1 ReferenceRange @@ -57,7 +57,7 @@ Description: "A non-independent finding whose result is a quantity." Abstract Element: ConditionOrObservation Based on: ClinicalStatement Description: "An assertion, determination, opinion, evaluation, result, observation, or measurement made by a person or device." -1..1 TopicCode // cardinality constraint on existing property +1..1 Code // cardinality constraint on existing property 0..1 DataValue 0..1 DataAbsentReason 0..1 Focus @@ -78,7 +78,7 @@ Based on: ConditionOrObservation Concept: TBD Description: "Represents the result of evaluations (measurements, tests, or questions) that have been performed. Observation has a value representing the result (answer), or an DataAbsentReason indicating why the value is not present. The Focus can be the entire patient, or an entity such as a location body structure, intervention, or condition. Things observed about the subject can include social and behavioral factors, subjective and objective observations, and assessments. -For an Observation, the TopicCode describes the aspect or property of the subject being observed or measured. The TopicCode is the 'question code' that pairs to the 'answer' contained in the Value." +For an Observation, the Code describes the aspect or property of the subject being observed or measured. The Code is the 'question code' that pairs to the 'answer' contained in the Value." 0..1 Method 0..1 RelevantTime 1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/observation-status @@ -108,7 +108,7 @@ For an Observation, the TopicCode describes the aspect or property of the subjec Concept: TBD Description: "Sub-observations that are part of this observation. A sub-observation contributs to the parent observation and are always treated a part of a single observation (they are not separable). However, the reference range for the primary observation value is not inherited by the component values and is required when appropriate for each component observation." 0..* ref(ObservationComponent) - + /* commented out but it might need to come back, so please save Element: Precondition @@ -165,7 +165,7 @@ Description: "An observation with components, but without a result value or pane EntryElement: LaboratoryObservation Based on: Observation Description: "A coded finding based on a specimen collected from a patient." - TopicCode from LaboratoryCodeVS if covered + Code from LaboratoryCodeVS if covered 1..1 Category // MK changed from 1..* to 1..1 to be compatible with DSTU 2 1..1 Patient 0..1 Specimen @@ -211,17 +211,12 @@ Description: "A panel that does not have an overall value that summarizes the en Abstract Element: ConditionPresentOrAbsent Based on: ConditionOrObservation Description: "An assertion of a condition being present or absent. -'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble. The TopicCode represents the condition asserted to exist or not exist. DataAbsentReason can represent the case where the presence or absence of something was not evaluated." - TopicCode is type ConditionOrDiagnosisCode +'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble. The Code represents the condition asserted to exist or not exist. DataAbsentReason can represent the case where the presence or absence of something was not evaluated." + Code from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make the binding weaker because US Core requires an extensible binding DataValue value is type CodeableConcept DataValue from PresentAbsentVS 0..1 Evidence - Element: ConditionOrDiagnosisCode - Based on: TopicCode - Description: "A specific code for the condition being determined to be present or absent." - Value: CodeableConcept from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered // cannot make the binding weaker because US Core requires an extensible binding - Element: Evidence Description: "Supporting evidence / manifestations that are the basis of the Condition's verification status, such as evidence that confirmed or refuted the condition." 0..* Manifestation @@ -231,7 +226,6 @@ Description: "An assertion of a condition being present or absent. Description: "Clinical symptoms/signs." Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/clinical-findings - EntryElement: ConditionPresent Based on: ConditionPresentOrAbsent Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." @@ -334,7 +328,7 @@ EntryElement: ClinicalNote Based on: SimpleNonLaboratoryObservation Concept: MTH#C0747978 "Progress Note" Description: "An entry concerning a patient where the result is a narrative text. While all findings have a CommentOrDescription field, the clinical note should put the narrative in the DataValue field, since this is the first place to look for a result that is a narrative." - TopicCode is MTH#C0747978 "Progress Note" + Code is MTH#C0747978 "Progress Note" DataValue value is type string 0..0 ReferenceRange 1..1 Patient @@ -342,10 +336,15 @@ Description: "An entry concerning a patient where the result is a narrative text EntryElement: BodyStructurePresent Based on: ConditionPresent -Description: "A body structure such as wound or tumor, observed to be present in a patient. The body structure is a condition that persists over time. The TopicCode will represent the body structure, and the BodySiteCode the location of that structure. This corresponds to FHIR R4, where the BodyStructure resource has morphology (corresponding to TopicCode) and location (corresponding to BodySite.BodySiteCode). For example, the TopicCode could be blunt force injury (SCT 3821009) and location left knee." +Description: "A body structure such as wound or tumor, observed to be present in a patient. The body structure is a condition that persists over time. The Code will represent the body structure, and the BodySiteCode the location of that structure. This corresponds to FHIR R4, where the BodyStructure resource has morphology (corresponding to Code) and location (corresponding to BodySite.BodySiteCode). For example, the Code could be blunt force injury (SCT 3821009) and location left knee." 1..1 Patient 0..1 BodySite +0..1 Morphology 0..1 RelevantTime 0..0 Focus 0..0 ReferenceRange 0..0 DataAbsentReason + + Element: Morphology + Description: "The kind of structure being represented by the body structure at BodyStructure.location. This can define both normal and abnormal morphologies." + Value: CodeableConcept \ No newline at end of file diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index a049d0e4..a60729da 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -16,7 +16,7 @@ DomainResource maps to DomainResource: Composition maps to Composition: Identifier maps to identifier - TopicCode maps to type + Type maps to type Section maps to section Section.DomainResource maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) Section.Section maps to section.section @@ -29,7 +29,7 @@ Observation maps to Observation: Identifier maps to identifier Patient maps to subject // Asserter maps to performer - TopicCode maps to code + Code maps to code Method maps to method // dstu 2 change (name change) CommentOrDescription maps to comments @@ -51,7 +51,7 @@ Observation maps to Observation: // dstu 2 change (no such attribute) // ReferenceRange.ApplicableAgeRange maps to referenceRange.age Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason // dstu 2 change (no such attribute) @@ -84,7 +84,7 @@ ConditionPresent maps to http://fhir.org/guides/argonaut/StructureDefinition/arg Patient maps to patient Category maps to category Identifier maps to identifier - TopicCode maps to code + Code maps to code BodySite.BodySiteCode maps to bodySite BodySite.Laterality maps to bodySite.extension BodySite.AnatomicalDirection maps to bodySite.extension @@ -107,7 +107,7 @@ ConditionAbsent maps to Basic: BodyStructurePresent maps to BodySite: Patient maps to patient Identifier maps to identifier - TopicCode maps to extension + Morphology maps to extension BodySite.BodySiteCode maps to code // dstu 2 change (modifier <-> qualifier) BodySite.Laterality maps to modifier (slice on = coding.code) diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index bbdf9d86..567e24b3 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -18,7 +18,7 @@ DomainResource maps to DomainResource: Composition maps to Composition: Identifier maps to identifier - TopicCode maps to type + Type maps to type Section maps to section Section.DomainResource maps to section.entry (slice on = reference.resolve(); slice on type = profile; slice strategy = includes) Section.Section maps to section.section @@ -32,7 +32,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs Identifier maps to identifier Patient maps to subject Asserter maps to performer - TopicCode maps to code + Code maps to code Method maps to method CommentOrDescription maps to comment Category maps to category @@ -51,7 +51,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation @@ -81,7 +81,7 @@ ConditionPresent maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core Patient maps to subject Category maps to category Identifier maps to identifier - TopicCode maps to code + Code maps to code BodySite.BodySiteCode maps to bodySite BodySite.Laterality maps to bodySite.extension BodySite.AnatomicalDirection maps to bodySite.extension @@ -106,7 +106,7 @@ Abnormal lung sounds absent? */ BodyStructurePresent maps to BodySite: Identifier maps to identifier Patient maps to patient - TopicCode maps to extension + Morphology maps to extension BodySite.BodySiteCode maps to code BodySite.Laterality maps to qualifier (slice on = coding.code) BodySite.AnatomicalDirection maps to qualifier diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index a92ee7a1..902278d3 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -40,7 +40,7 @@ EntryElement: BreastCancerDisorderPresent Based on: CancerDisorderPresent Concept: SCT#126926005 "Neoplasm of breast (disorder)" Description: "Diagnosis of cancer originating in the tissues of the breast, and potentially spread to other organs of the body." - TopicCode from BreastCancerTypeVS + Code from BreastCancerTypeVS StageInformation.StageDetail value is type BreastCancerStagePanel 0..1 Evidence.Manifestation should be from BreastCancerDetectionVS // can't change to 'could be' because us-core uses preferred binding BodySite is type BreastSite @@ -56,7 +56,7 @@ EntryElement: BreastCancerStagePanel Based on: CancerStagePanel Concept: MTH#C2216702 "Malignant Neoplasm of Breast Staging" //Not LNC#21908-9 since that is AJCC-specific and also not breast cancer specific. We do however, give the LOINC list of stage values as the preferred codes. Description: "The stage of a breast cancer. The panel should not include both a DCISNuclearGrade and a BreastCancerHistologicGrade, since the latter implies an invasive cancer." - TopicCode is MTH#C2216702 "Malignant Neoplasm of Breast Staging" + Code is MTH#C2216702 "Malignant Neoplasm of Breast Staging" PanelMembers.Observation includes 0..1 HER2ReceptorStatus includes 0..1 EstrogenReceptorStatus @@ -70,9 +70,9 @@ Based on: TumorMarkerObservation Description: "HER2 receptor status. HER2 is a member of the human epidermal growth factor receptor family of proteins and is encoded by the ERBB2 oncogene. HER2 is overexpressed in 20-30% of breast tumors, and is associated with an aggressive clinical course and poor prognosis. HER2 status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options." DataValue value is type CodeableConcept DataValue from PositiveNegativeEquivocalVS - TopicCode is LNC#48676-1 "HER2 [Interpretation] in Tissue" + Code is LNC#48676-1 "HER2 [Interpretation] in Tissue" Specimen is type BreastSpecimen -0..0 Method // pre-coordinated in the TopicCode +0..0 Method // pre-coordinated in the Code 0..0 ObservationComponent PanelMembers.Observation includes 0..* HER2byIHC @@ -86,8 +86,8 @@ Description: "HER2 presence in Breast cancer specimen by Immunohistochemistry (I DataValue from HER2byIHCScoreVS DataAbsentReason from HER2byIHCScoreNullVS Interpretation from PositiveNegativeEquivocalVS - TopicCode is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" -0..0 Method // pre-coordinated in the TopicCode + Code is LNC#85319-2 "HER2 [Presence] in Breast cancer specimen by Immune stain" +0..0 Method // pre-coordinated in the Code Specimen is type BreastSpecimen Components.ObservationComponent includes 0..1 CompleteMembraneStainingPercent @@ -106,7 +106,7 @@ Based on: TumorMarkerObservation Description: "HER2 receptor status as determined by single-probe or dual-probe Fluorescence In Situ Hybridization (FISH)." 0..0 DataValue 0..0 DataAbsentReason - TopicCode is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" + Code is LNC#85318-4 "HER2 [Presence] in Breast cancer specimen by FISH" Method from HER2FISHMethodVS // single or double probe Interpretation from PositiveNegativeEquivocalVS Specimen is type BreastSpecimen @@ -139,7 +139,7 @@ Based on: CodedLaboratoryObservation Concept: LNC#16112-5 "Estrogen receptor [Interpretation] in Tissue" Description: "Estrogen receptor alpha is the predominant estrogen receptor expressed in breast tissue and is overexpressed in around 50% of breast carcinomas. ER status (positive=present or overexpressed; negative=absent) is a factor in determining prognosis and treatment options. The current approach is that positive/negative designation is a value, even though that value is (in fact) an interpretation of evidence (NuclearPositivity and AverageStainingIntensity)." - TopicCode is LNC#16112-5 + Code is LNC#16112-5 DataValue from PositiveNegativeVS Specimen is type BreastSpecimen Components.ObservationComponent @@ -152,7 +152,7 @@ Based on: CodedLaboratoryObservation Concept: LNC#16113-3 Description: "Progesterone receptor status is a factor in determining prognosis and treatment options. The value is the percentage of cells that test (stain) positive for the presence of a receptor. The interpretation of positive or negative (found in the interpretation property) is based on the staining percentage, and may take into account the staining intensity. Based on discussion with Cancer Interoperability Group subject matter experts, there was insufficient rationale to include the following components in the data model: StainingControl, PrimaryAntibody, Allred Score (both total and component scores). We are seeking feedback on whether or not those components should be included in this model." - TopicCode is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" + Code is LNC#16113-3 "Progesterone receptor [Interpretation] in Tissue" DataValue from PositiveNegativeVS Specimen is type BreastSpecimen Components.ObservationComponent @@ -179,14 +179,14 @@ Based on: SimpleCodedLaboratoryObservation Description: "An evaluation of the size and shape of the nucleus in tumor cells and the percentage of tumor cells that are in the process of dividing or growing. Cancers with low nuclear grade grow and spread less quickly than cancers with high nuclear grade." DataValue from NuclearGradeVS Specimen is type BreastSpecimen - TopicCode is MTH#C18513 + Code is MTH#C18513 EntryElement: BreastCancerHistologicGrade Concept: LNC#44648-4 Based on: CancerHistologicGrade Description: "The Elston Grade/Nottingham Score, representative of the aggressive potential of the tumor. Well differentiated cells (Grade 1) look similar to normal cells and are usually slow growing, while poorly differentiated cells (Grade 3) look very different than normal and are fast-growing." - TopicCode is LNC#44648-4 + Code is LNC#44648-4 DataValue from NottinghamCombinedGradeVS DataAbsentReason from NottinghamNullVS Specimen is type BreastSpecimen @@ -225,7 +225,7 @@ Concept: MTH#C1709318 Description: "The Oncotype DX test for invasive breast cancer examines the activity of 21 genes in a patient’s breast tumor tissue to provide personalized information for tailoring treatment based on the biology of their individual disease. The value from 0 to 100 indicates the estimated risk of recurrence, with the highest risk indicated by a score greater than 31. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" DataValue value is type IntegerQuantity - TopicCode is MTH#C1709318 + Code is MTH#C1709318 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type ref(BreastSpecimen) @@ -236,7 +236,7 @@ Concept: MTH#C3898101 Description: "The Oncotype DX test for DCIS (Ductal Carcinoma in Situ) breast cancer. Risk scores range from 0 to 100 with the following interpretations: 0-38: Low-Risk, 39-54: Intermediate-Risk, 55+: High-Risk. No LOINC code currently exists for this test. We are seeking feedback on the value of separating OncotypeDx scores for DCIS and invasive breast carcinomas. Does it make more sense to report the OncotypeDx as a single score, regardless of the type of cancer?" DataValue value is type IntegerQuantity - TopicCode is MTH#C3898101 + Code is MTH#C3898101 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type BreastSpecimen @@ -246,7 +246,7 @@ Concept: LNC#76544-6 Description: "Breast cancer genomic signature assay for 10-year risk of distant recurrence score calculated by Prosigna. The Prosigna Score is reported on a 0-100 scale (referred to as ROR Score or Risk of Recurrence Score in the literature), which is correlated with the probability of distant recurrence at ten years for post-menopausal women with hormone receptor positive, early stage breast cancer." DataValue value is type IntegerQuantity - TopicCode is LNC#76544-6 + Code is LNC#76544-6 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type BreastSpecimen @@ -257,7 +257,7 @@ Description: "Breast cancer genomic signature assay for 10-year risk of distant In the United States, MammaPrint can only be used on cancers that are stage I or stage II, invasive, smaller than 5 centimeters, and estrogen-receptor-positive or -negative. Scores range from -1.0 to +1.0, with scores less than 0 indicating high risk, and scores greater than 0 indicating low risk. The is currently no LOINC code for Mammaprint test." DataValue value is type Quantity - TopicCode is MTH#C2827401 + Code is MTH#C2827401 Interpretation from RecurrenceRiskScoreInterpretationVS Specimen is type BreastSpecimen @@ -363,7 +363,7 @@ includes 0..1 OtherReceptorScoringSystem Concept: MTH#C4049944 Description: "Ki-67 is a protein phosphatase whose expression is strongly associated with cell proliferation and encoded by the MKI67 gene. The Ki67 labeling index is the fraction of Ki-67-positive cells to total cells in a tumor specimen and may be useful for determining prognosis with respect to survival and disease recurrence. The more positive cells there are, the more quickly they are dividing and forming new cells. ReferenceRange: Low <10, Intermediate 10-20, >20 High" Value: Quantity with units UCUM#% - TopicCode is LNC#29593-1 + Code is LNC#29593-1 Components.ObservationComponent includes 0..1 PrimaryAntibody //from Ki67AntibodyVS if covered @@ -372,7 +372,7 @@ includes 0..1 OtherReceptorScoringSystem Concept: MTH#C0812425 Description: "An expression of the number of mitoses found in a stated number of cells. The S-phase fraction number tells you what percentage of cells in the tissue sample are in the process of copying their genetic information (DNA). This S-phase, short for synthesis phase, happens just before a cell divides into two new cells. ReferenceRange: Low <6, Intermediate 6-10, >10 High." Value: Quantity with units UCUM#% - TopicCode is LNC#29593-1 + Code is LNC#29593-1 EntryElement: GeneticVariant Based on: Observation @@ -396,7 +396,7 @@ EntryElement: BreastCancerGeneticAnalysisObservation Concept: TBD Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." - Observation.TopicCode is TBD#TBD + Observation.Code is TBD#TBD 0..0 ObservationComponent PanelMembers.Observation includes 1..1 BRCA1Variant diff --git a/spec/shr_core.txt b/spec/shr_core.txt index a781557c..f87ea3fc 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -34,7 +34,7 @@ Description: "A quantity with units, whose value may be bounded from above or be Element: Units Concept: TBD - Description: "Code for the unit of measure of the quantity." + Description: "The unit of measure of the quantity." Value: Coding should be from AllUnitsVS Element: SimpleQuantity @@ -74,16 +74,15 @@ Description: "Representation of an amount of currency or monetary value." Element: Coding Concept: MTH#C0805701 Description: "Coding of a concept, drawn from a controlled vocabulary. Includes the vocabulary and version, if applicable. May include a display text, and a descriptor expressing the intended interpretation of the code." -0..1 Code +0..1 CodeValue 0..1 CodeSystem 0..1 CodeSystemVersion 0..1 DisplayText - Element: Code - Description: "A coded value." + Element: CodeValue + Description: "A coded value, in syntax defined by the system" Value: code - /* TODO: Suggest changing FHIR's Coding.userSelected to Coding.qualifier Element: CodingQualifier @@ -107,6 +106,9 @@ Description: "A set of codes drawn from different coding systems, representing t 0..* Coding 0..1 DisplayText +Element: Code +Description: "The main identifier for the lab, procedure, condition, etc." +Value: CodeableConcept Element: Range Concept: TBD diff --git a/spec/shr_core_map_dstu2.txt b/spec/shr_core_map_dstu2.txt index 45844e6c..83f3bfa3 100644 --- a/spec/shr_core_map_dstu2.txt +++ b/spec/shr_core_map_dstu2.txt @@ -5,7 +5,7 @@ Target: FHIR_DSTU_2 // Code types map direction to FHIR Coding maps to Coding: - Code maps to code + CodeValue maps to code CodeSystem maps to system CodeSystemVersion maps to version DisplayText maps to display @@ -16,7 +16,7 @@ CodeableConcept maps to CodeableConcept: Quantity maps to Quantity: Number maps to value - Units.Coding.Code maps to code + Units.Coding.CodeValue maps to code Units.Coding.CodeSystem maps to system Units.Coding.DisplayText maps to unit Comparator maps to comparator @@ -88,10 +88,10 @@ Timing maps to Timing: TimingCode maps to code EventDuration.DurationRange.LowerBound.SimpleQuantity.Number maps to repeat.duration EventDuration.DurationRange.UpperBound.SimpleQuantity.Number maps to repeat.durationMax - EventDuration.DurationRange.LowerBound.SimpleQuantity.Units.Coding.Code maps to repeat.durationUnits // dstu 2 change (attribute name) + EventDuration.DurationRange.LowerBound.SimpleQuantity.Units.Coding.CodeValue maps to repeat.durationUnits // dstu 2 change (attribute name) RecurrencePattern.RecurrenceInterval.Duration.Number maps to repeat.period // dstu 2 change (attribute name) - RecurrencePattern.RecurrenceInterval.Duration.Units.Coding.Code maps to repeat.periodUnits + RecurrencePattern.RecurrenceInterval.Duration.Units.Coding.CodeValue maps to repeat.periodUnits constrain repeat.periodMax to 0..0 // TODO: why? // RecurrencePattern.DayOfWeek maps to repeat.dayOfWeek // dstu 2 change (no such attribute) // RecurrencePattern.TimeOfDay maps to repeat.timeOfDay // dstu 2 change (no such attribute) diff --git a/spec/shr_core_map_stu3.txt b/spec/shr_core_map_stu3.txt index ff2a20ac..6d5a706a 100644 --- a/spec/shr_core_map_stu3.txt +++ b/spec/shr_core_map_stu3.txt @@ -3,9 +3,9 @@ Namespace: shr.core Target: FHIR_STU_3 -// Code types map direction to FHIR +// CodeValue types map direction to FHIR Coding maps to Coding: - Code maps to code + CodeValue maps to code CodeSystem maps to system CodeSystemVersion maps to version DisplayText maps to display @@ -16,7 +16,7 @@ CodeableConcept maps to CodeableConcept: Quantity maps to Quantity: Number maps to value - Units.Coding.Code maps to code + Units.Coding.CodeValue maps to code Units.Coding.CodeSystem maps to system Units.Coding.DisplayText maps to unit Comparator maps to comparator @@ -86,9 +86,9 @@ Timing maps to Timing: TimingCode maps to code EventDuration.DurationRange.LowerBound.SimpleQuantity.Number maps to repeat.duration EventDuration.DurationRange.UpperBound.SimpleQuantity.Number maps to repeat.durationMax - EventDuration.DurationRange.LowerBound.SimpleQuantity.Units.Coding.Code maps to repeat.durationUnit + EventDuration.DurationRange.LowerBound.SimpleQuantity.Units.Coding.CodeValue maps to repeat.durationUnit RecurrencePattern.RecurrenceInterval.Duration.Number maps to repeat.period - RecurrencePattern.RecurrenceInterval.Duration.Units.Coding.Code maps to repeat.periodUnit + RecurrencePattern.RecurrenceInterval.Duration.Units.Coding.CodeValue maps to repeat.periodUnit constrain repeat.periodMax to 0..0 RecurrencePattern.DayOfWeek maps to repeat.dayOfWeek RecurrencePattern.TimeOfDay maps to repeat.timeOfDay diff --git a/spec/shr_core_vs.txt b/spec/shr_core_vs.txt index cb5d123e..fe84b403 100644 --- a/spec/shr_core_vs.txt +++ b/spec/shr_core_vs.txt @@ -136,7 +136,7 @@ ValueSet: SemiquantitativeFrequencyVS #continuously "Continuously" ValueSet: QualitativeFrequencyVS -Description: "Code set indicating the frequency of an event in qualitative terms." +Description: "CodeValue set indicating the frequency of an event in qualitative terms." #always "Virtually always or every time" #usually "Frequently or often" #sometimes "Occasionally or sometimes" @@ -144,12 +144,12 @@ Description: "Code set indicating the frequency of an event in qualitative ter #never "Never" ValueSet: YesNoVS -Description: "Code set indicating yes or no (values drawn from Snomed CT)." +Description: "CodeValue set indicating yes or no (values drawn from Snomed CT)." SCT#373066001 "Yes (qualifier value)" SCT#373067005 "No (qualifier value)" ValueSet: YesNoUnknownVS -Description: "Code set indicating yes, no, or unknown." +Description: "CodeValue set indicating yes, no, or unknown." SCT#373066001 "Yes (qualifier value)" SCT#373067005 "No (qualifier value)" SCT#261665006 "Unknown (qualifier value)" @@ -384,7 +384,7 @@ NCI#C45875 "VENTRAL Pertaining to the front or lower surface of the body." NCI#C98798 "VENTROLATERAL Of or pertaining to the front and side of a main body." /*------------- -NCI Code: C99073 LAT, Codelist extensible: Yes +NCI CodeValue: C99073 LAT, Codelist extensible: Yes C13332 BILATERAL Affecting both sides of the body, or a pair of organs. Bilateral C25307 CONTRALATERAL Having to do with the opposite side of the body, in relation to a pre-existing reference point. C25308 IPSILATERAL Having to do with the same side of the body, in relation to a pre-existing reference point. diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index fb299d00..782a39b3 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -57,8 +57,8 @@ RelatedPerson maps to RelatedPerson: Organization maps to Organization: Identifier maps to identifier ResourceStatus maps to active - OrganizationName maps to name Type maps to type + OrganizationName maps to name Address maps to address ContactPoint maps to telecom PartOf maps to partOf @@ -82,6 +82,7 @@ Group maps to Group: Facility maps to Location: Identifier maps to identifier ResourceStatus maps to status + Type maps to type FacilityName maps to name Location[Address] maps to address Location[Geoposition].Latitude maps to position.latitude @@ -89,7 +90,6 @@ Facility maps to Location: Location[Geoposition].Altitude maps to position.altitude ContactPoint maps to telecom ManagingOrganization maps to managingOrganization - Type maps to type Substance maps to Substance: Identifier maps to identifier @@ -126,8 +126,8 @@ Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medi Specimen maps to Specimen: Identifier maps to identifier ResourceStatus maps to status - AccessionIdentifier maps to accessionIdentifier Type maps to type + AccessionIdentifier maps to accessionIdentifier CollectionSource maps to subject SourceSpecimen maps to parent ReceivedTime maps to receivedTime diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index 19f2ecb6..52837ee0 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -82,6 +82,7 @@ Group maps to Group: Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-location: Identifier maps to identifier + Type maps to type FacilityName maps to name Location[Address] maps to address Location[Geoposition].Latitude maps to position.latitude @@ -89,7 +90,6 @@ Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-locatio Location[Geoposition].Altitude maps to position.altitude ContactPoint maps to telecom ManagingOrganization maps to managingOrganization - Type maps to type Substance maps to Substance: Identifier maps to identifier @@ -116,9 +116,9 @@ Medication maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-medic Specimen maps to Specimen: Identifier maps to identifier + Type maps to type AccessionIdentifier maps to accessionIdentifier ResourceStatus maps to status - Type maps to type CollectionSource maps to subject SourceSpecimen maps to parent ReceivedTime maps to receivedTime @@ -136,6 +136,7 @@ Specimen maps to Specimen: SpecimenContainer.Additive maps to container.additive[x] Device maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-device: + Identifier maps to identifier Type maps to type constrain udi to 1..1 DeviceUdi maps to udi.carrierHRF diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index 0bfe51dd..75f1ef01 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -25,7 +25,7 @@ Based on: ConditionPresent Concept: LNC#8670-2 "History of family member diseases" 0..1 Onset 0..1 ConditionOutcome - TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered + Code from http://hl7.org/fhir/us/core/ValueSet/us-core-problem if covered Focus value is type ref(FamilyMember) Element: ConditionOutcome diff --git a/spec/shr_genetics.txt b/spec/shr_genetics.txt index 0449361c..91724f7e 100644 --- a/spec/shr_genetics.txt +++ b/spec/shr_genetics.txt @@ -10,11 +10,11 @@ Element: GeneticMarkerAnalysisResult Based on: LaboratoryObservation Concept: SCT#20889005 "Genetic marker function (observable entity)" Description: "The process of isolating and testing the DNA of an embryo or a person to detect the presence of genetic alterations or defects that may predispose to the future development of a disease or disorder. (source: NCI Thesaurus)" - TopicCode from https://www.ncbi.nlm.nih.gov/gtr if covered // the identifier from the Genetic Test Registry + Code from https://www.ncbi.nlm.nih.gov/gtr if covered // the identifier from the Genetic Test Registry Method from GeneticTestMethodVS if covered 0..0 DataValue // panel, no numerical or coded result 0..0 Focus -// MK: What gene are we looking at? mlt: identified in two places: 1) TopicCode through the GTR ID, 2) in the GeneName element below. +// MK: What gene are we looking at? mlt: identified in two places: 1) Code through the GTR ID, 2) in the GeneName element below. 0..0 ReferenceRange 0..1 GenomicSourceClass 0..1 GeneName @@ -65,7 +65,7 @@ Based on: LaboratoryObservation Concept: LNC#21924-6 "Tumor marker Cancer" Description: "A substance found in tissue or blood or other body fluids that may be a sign of cancer or certain benign (noncancer) conditions. Most tumor markers are made by both normal cells and cancer cells, but they are made in larger amounts by cancer cells. A tumor marker may help to diagnose cancer, plan treatment, or find out how well treatment is working or if cancer has come back. Examples of tumor markers include CA-125 (in ovarian cancer), CA 15-3 (in breast cancer), CEA (in colon cancer), and PSA (in prostate cancer). (Source: NCI Dictionary of Cancer Terms). Tumor markers differ from genetic markers in that they are measured at the levels of the protein and substance post-RNA protein synthesis." Focus value is type ref(CancerDisorderPresent) - TopicCode from TumorMarkerVS if covered + Code from TumorMarkerVS if covered 0..0 BodySite 0..0 Device @@ -74,5 +74,5 @@ EntryElement: CancerGeneticMarkerAnalysisResult Based on: GeneticMarkerAnalysisResult Concept: TBD#TBD "Cancer Genetic Test DataValue" Description: "A panel that analyses different components of a genetic test specific to cancer-related genetic markers." - TopicCode from CancerGeneticTestRegistryVS if covered // the identifier from the Genetic Test Registry value set (filtered for cancer-relevant genetic tests.) + Code from CancerGeneticTestRegistryVS if covered // the identifier from the Genetic Test Registry value set (filtered for cancer-relevant genetic tests.) GeneName.CodeableConcept from CancerGeneVS if covered diff --git a/spec/shr_intervention.txt b/spec/shr_intervention.txt index f10ed6ea..a9ec3788 100644 --- a/spec/shr_intervention.txt +++ b/spec/shr_intervention.txt @@ -17,7 +17,7 @@ EntryElement: CourseOfTreatmentPerformed Based on: ProcedurePerformed // mlt: questionable to call CourseOfTreatment a procedure. It is modeled as a series of activities including medications administered and procedures. Description: "A series of coordinated treatment actions taken with a certain treatment intention." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - TopicCode is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" + Code is SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" 0..1 TreatmentIntent 0..1 LineOfTherapy 0..* MedicationStatement // mlt: to cover patient-asserted medications taken at home. @@ -44,7 +44,7 @@ EntryElement: RadiationProcedurePerformed Based on: ProcedurePerformed Description: "A radiation oncology procedure. If the treatment is part of a course of treatment, the PartOf attribute should indicate the CourseOfTreatment." Concept: SCT#108290001 "Radiation oncology AND/OR radiotherapy (procedure)" - TopicCode from RadiationProcedurePerformedVS + Code from RadiationProcedurePerformedVS 0..1 RadiationDosePerFraction 0..1 RadiationFractionsDelivered 0..1 TotalRadiationDoseDelivered diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 6bb58668..dda6f24e 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -107,7 +107,7 @@ Concept: MTH#C2364172 Description: "Information on the ability and cooperation of the patient in taking medicine or supplement as recommended or prescribed. This includes correct timing, dosage, and frequency. The Focus must reference the medication via a code, MedicationRequest, or MedicationStatement. Modeling note: MedicationAdherence could be attached to MedicationStatement directly as an extension, but modeling as an observation avoids creating an extension and allows this observation to be made at any time." DataValue from QualitativeFrequencyVS - TopicCode is MTH#C2364172 + Code is MTH#C2364172 1..1 Focus value is type ref(Medication) Components.ObservationComponent includes 0..* MedicationNonAdherenceReason @@ -116,7 +116,7 @@ includes 0..* MedicationNonAdherenceReason Based on: CodedObservationComponent Description: "Reason that patient did not adhere to a medication regimen." DataValue from MedicationNonAdherenceReasonVS - TopicCode is TBD#TBD + Code is TBD#TBD EntryElement: MedicationNotAdministered Based on: ActionNotPerformed diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index f5325590..4b711de5 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -33,7 +33,7 @@ Description: "The self-reported current and historical data about a person's eco A person's Employment Status could change over time, for example, a person could be employed following a period of choosing to not be in the labor force. Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 - TopicCode is LNC#74165-2 "HistoryOfEmploymentStatus" + Code is LNC#74165-2 "HistoryOfEmploymentStatus" 0..0 ObservationComponent 0..0 Focus @@ -44,7 +44,7 @@ Description: "A self-reported date that a person considers themselves to have A person can be both retired and employed (an Employment Status); most often, a person would be retired from one job and employed in another job. A person also can have more than one retirement date; for example, a person could retire from military service, then later retire from a civilian job. Multiple retirement dates should be recorded using multiple FHIR resources. Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." DataValue value is type dateTime - TopicCode is LNC#87510-4 "Date of Retirement" + Code is LNC#87510-4 "Date of Retirement" 0..0 ObservationComponent 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. 0..0 Focus @@ -55,7 +55,7 @@ Concept: LNC#87511-2 Description: "Self-reported date range(s) when a person worked in what is considered a combat zone; sometimes called a hazardous duty work. Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones. Multiple periods in combat zone should be recorded using multiple FHIR resources." Value: TimePeriod - TopicCode is LNC#87511-2 + Code is LNC#87511-2 0..0 ObservationComponent 0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. 0..0 Focus @@ -68,7 +68,7 @@ Knowledge of person's Usual Work can potentially assist in diagnosis, treatment Example: a person has worked for a total of 30 years as a 'secretary' (Occupation), but in various industries, mostly hotel construction. Her Usual Occupation is 'secretary' and her Usual Industry is 'hotel construction.' Usual Work does not include work that was unpaid or voluntary." DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7186 - TopicCode is LNC#21843-8 + Code is LNC#21843-8 Focus value is type CodeableConcept Focus from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion // family member value set Components.ObservationComponent @@ -85,14 +85,14 @@ includes 0..1 UsualOccupationDuration //Value: CodeableConcept from IndustryVS DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - TopicCode is LNC#21844-6 "History of Usual industry" + Code is LNC#21844-6 "History of Usual industry" Element: UsualOccupationDuration Based on: QuantitativeObservationComponent Concept: LNC#74163-7 "Usual occupation duration" Description: "The total time spent on an activity, inclusive of all time intervals, whether continuous or interrupted." DataValue.Quantity.Units is UCUM#a - TopicCode is LNC#74163-7 "Usual occupation duration" + Code is LNC#74163-7 "Usual occupation duration" EntryElement: PastOrPresentJob Based on: CodedSocialHistoryObservation @@ -105,7 +105,7 @@ At a minimum, it is important to have a record of a person's current job(s); i.e 0..0 DataAbsentReason Focus value is type CodeableConcept Focus from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion - TopicCode is LNC#11341-5 "History of Occupation" + Code is LNC#11341-5 "History of Occupation" 0..1 Employer // must be extension; cannot be a result value or an evaluation component because the value is a reference to Person or Organization Components.ObservationComponent includes 0..1 Occupation @@ -142,7 +142,7 @@ includes 0..1 IsCurrentJob Description: "The type of business (industry) in which the subject currently holds or has held a job in the past." // Value: CodeableConcept from IndustryVS DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7187 - TopicCode is LNC#86188-0 + Code is LNC#86188-0 Element: WorkClassification Based on: CodedObservationComponent @@ -150,7 +150,7 @@ includes 0..1 IsCurrentJob Description: "Type of compensation and sector for a person's job, such as 'paid work, self-employed' or 'voluntary work', as reported by the person." //Value: CodeableConcept from WorkClassificationVS DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7597 - TopicCode is LNC#85104-8 "Compensation and sector employment type" + Code is LNC#85104-8 "Compensation and sector employment type" Element: SupervisoryLevel Based on: CodedObservationComponent @@ -158,21 +158,21 @@ includes 0..1 IsCurrentJob Description: "A coded indicator of responsibilities for directing work and personnel management responsibilities for a person's job, as reported by the person. For US military jobs, this is pay grade." //Value: CodeableConcept from SupervisoryLevelVS DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7613 - TopicCode is LNC#87707-6 + Code is LNC#87707-6 Element: JobDuty Based on: ObservationComponent Concept: LNC#63761-1 Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " DataValue value is type string - TopicCode is LNC#63761-1 + Code is LNC#63761-1 Element: OccupationalHazard Based on: ObservationComponent Concept: LNC#87729-0 Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." DataValue value is type string - TopicCode is LNC#87729-0 + Code is LNC#87729-0 Element: WorkSchedule Based on: CodedObservationComponent @@ -180,14 +180,14 @@ includes 0..1 IsCurrentJob Description: "Typical arrangement of working hours for a person's job, as reported by the person." //Value: CodeableConcept from WorkScheduleVS DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7130 - TopicCode is LNC#74159-5 + Code is LNC#74159-5 Element: WeeklyWorkDays Based on: QuantitativeObservationComponent Concept: LNC#74160-3 Description: "The average number of days per week that a person spends performing their duties for work." DataValue.Quantity.Units is UCUM#d - TopicCode is LNC#74160-3 + Code is LNC#74160-3 0..0 ReferenceRange Element: DailyWorkHours @@ -195,7 +195,7 @@ includes 0..1 IsCurrentJob Concept: LNC#87512-0 Description: "The average number of hours in a day that a person spends performing their duties for work." DataValue.Quantity.Units is UCUM#h - TopicCode is LNC#87512-0 + Code is LNC#87512-0 0..0 ReferenceRange // Last minute addition 8/17 based on Genny's comment @@ -236,7 +236,7 @@ EntryElement: MilitaryServiceHistory Based on: CodedSocialHistoryObservation Description: "History of service in the US military." Category is OBSCAT#social-history - TopicCode is MTH#C3714797 + Code is MTH#C3714797 Components.ObservationComponent includes 1..1 MilitaryStatus includes 0..1 MilitaryServiceDischargeStatus diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt index cce53f2d..816d06cf 100644 --- a/spec/shr_occupation_map_dstu2.txt +++ b/spec/shr_occupation_map_dstu2.txt @@ -5,10 +5,10 @@ Target: FHIR_DSTU_2 SocialHistoryObservation maps to Observation: Identifier maps to identifier Patient maps to subject - TopicCode maps to code + Code maps to code Category maps to category Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation diff --git a/spec/shr_occupation_map_stu3.txt b/spec/shr_occupation_map_stu3.txt index ef1f47fc..57eea296 100644 --- a/spec/shr_occupation_map_stu3.txt +++ b/spec/shr_occupation_map_stu3.txt @@ -6,10 +6,10 @@ Target: FHIR_STU_3 SocialHistoryObservation maps to Observation: Identifier maps to identifier Patient maps to subject - TopicCode maps to code + Code maps to code Category maps to category Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - Components.ObservationComponent.TopicCode maps to component.code + Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //ObservationComponent.Interpretation maps to component.interpretation diff --git a/spec/shr_oncocore.txt b/spec/shr_oncocore.txt index 8d6e54c3..599f0a19 100644 --- a/spec/shr_oncocore.txt +++ b/spec/shr_oncocore.txt @@ -13,7 +13,7 @@ EntryElement: CancerDisorderPresent Based on: ConditionPresent Concept: SCT#363346000 "Malignant neoplastic disease (disorder)" Description: "The presence of malignant neoplastic disease, in which abnormal cells divide without control and can invade nearby tissues." - TopicCode from CancerDisorderVS + Code from CancerDisorderVS // StageInformation.StageSummary from http://loinc.org/vs/LL240-3 // Commented out because LL240-3 only applies to TNM stage group - is this correct? StageInformation.StageDetail value is type CancerStagePanel // 0..1 MorphologyBehavior from MorphologyBehaviorVS //Not carried over from BrCa because it was intended to break out behavior codes from ICD-O-3, and we are no longer using it. @@ -25,7 +25,7 @@ Based on: SimpleCodedNonLaboratoryObservation // MK: Would this use a spec Description: "Classification of the cancer by the type of tissue in which the cancer originates. (Source: NCI)" Concept: SCT#371441004 "Histologic type (observable entity)" // TODO: LOINC number for Cancer Histology (SNOMED) whose title and related code goes to a value set containing descendants of known cancer morphology codes." DataValue from CancerHistologicTypeVS - TopicCode is SCT#371441004 "Histologic type (observable entity)" + Code is SCT#371441004 "Histologic type (observable entity)" Focus value is type ref(CancerDisorderPresent) 0..0 BodySite 0..0 Device @@ -37,7 +37,7 @@ Based on: CodedLaboratoryObservation Description: "A description of a tumor based on how abnormal the cancer cells and tissue look under a microscope and how quickly the cancer cells are likely to grow and spread. Low-grade cancer cells look more like normal cells and tend to grow and spread more slowly than high-grade cancer cells. (Source: NCI Dictionary of Cancer Terms)" Concept: LNC#21858-6 "Grade Cancer" DataValue from http://loinc.org/vs/LL213-0 - TopicCode is LNC#21858-6 "Grade Cancer" + Code is LNC#21858-6 "Grade Cancer" Focus value is type ref(CancerDisorderPresent) 0..0 BodySite 0..0 Device @@ -49,7 +49,7 @@ Based on: CodedNonLaboratoryObservation Description: "The course of a disease, such as cancer, as it becomes worse or spreads in the body. (source: NCI Dictionary)" Concept: SCT#246453008 "Course of illness (attribute)" DataValue from CancerProgressionVS - TopicCode is SCT#246453008 "Course of illness (attribute)" + Code is SCT#246453008 "Course of illness (attribute)" Focus value is type ref(CancerDisorderPresent) // CancerProgressionEvidence is not yet part of M-CODE, but I don't see a better way to include it than a extension 0..* CancerProgressionEvidence diff --git a/spec/shr_oncocore_stage.txt b/spec/shr_oncocore_stage.txt index 109a50f0..7fd587aa 100644 --- a/spec/shr_oncocore_stage.txt +++ b/spec/shr_oncocore_stage.txt @@ -54,7 +54,7 @@ EntryElement: TNMClinicalPrognosticStagePanel Based on: CancerStagePanel Concept: LNC#75620-5 "TNM clinical staging before treatment panel Cancer" Description: "A panel of staging information that is performed prior to surgery, based on evidence such as physical examination, imaging, and/or biopsy." - TopicCode is LNC#75620-5 "TNM clinical staging before treatment panel Cancer" + Code is LNC#75620-5 "TNM clinical staging before treatment panel Cancer" CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" // timing is implicit in LOINC code, so this attribute could potentially could be eliminated Method from TNMTumorStagingSystemVS if covered PanelMembers.Observation @@ -67,7 +67,7 @@ Description: "A panel of staging information that is performed prior to surge Based on: TNMStagePanelMember Concept: LNC#21908-9 "Stage group.clinical Cancer" Description: "The overall stage of the cancer, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies. (adapted from NCI Dictionary of Cancer Terms)." - TopicCode is LNC#21908-9 "Stage group.clinical Cancer" + Code is LNC#21908-9 "Stage group.clinical Cancer" DataValue from http://loinc.org/vs/LL240-3 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" 0..0 CancerStageSuffix @@ -76,7 +76,7 @@ Description: "A panel of staging information that is performed prior to surge Based on: TNMStagePanelMember Concept: LNC#21905-5 "Primary tumor.clinical [Class] Cancer" Description: "Classification based on the size and extent of the primary tumor." - TopicCode is LNC#21905-5 "Primary tumor.clinical [Class] Cancer" + Code is LNC#21905-5 "Primary tumor.clinical [Class] Cancer" DataValue from http://loinc.org/vs/LL237-9 // normative answer list for LNC#21905-5 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" @@ -84,7 +84,7 @@ Description: "A panel of staging information that is performed prior to surge Based on: TNMStagePanelMember Concept: LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" Description: "The presence of metastases in regional lymph nodes, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies. (adapted from NCI Dictionary of Cancer Terms)" - TopicCode is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" + Code is LNC#21906-3 "Regional lymph nodes.clinical [Class] Cancer" DataValue from http://loinc.org/vs/LL238-7 // normative answer list for LNC#21906-3 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" @@ -92,7 +92,7 @@ Description: "A panel of staging information that is performed prior to surge Based on: TNMStagePanelMember Concept: LNC#21907-1 "Distant metastases.clinical [Class] Cancer" Description: "The presence of metastases in remote anatomical locations, assessed using tests that are done before surgery. These include physical exams, imaging tests, laboratory tests (such as blood tests), and biopsies." - TopicCode is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" + Code is LNC#21907-1 "Distant metastases.clinical [Class] Cancer" DataValue from http://loinc.org/vs/LL239-5 // normative answer list for LNC#21907-1 CancerStageTiming is SCT#385349001 "Clinical stage (observable entity)" @@ -101,7 +101,7 @@ EntryElement: TNMPathologicPrognosticStagePanel Based on: CancerStagePanel Concept: LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" Description: "A panel of staging information that is based on examination of tissue samples removed during surgery, in addition to physical examination and imaging and potentially, other prognostic factors." - TopicCode is LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" + Code is LNC#75621-3 "TNM pathologic staging after surgery panel Cancer" 0..1 Method from TNMTumorStagingSystemVS if covered CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" PanelMembers.Observation @@ -115,7 +115,7 @@ Description: "A panel of staging information that is based on examination of Based on: TNMStagePanelMember Concept: LNC#21902-2 "Stage group.pathology Cancer" Description: "The overall stage of the cancer, determined through pathologic analysis of a tumor specimen, and classified based on criteria defined by the staging system." - TopicCode is LNC#21902-2 "Stage group.pathology Cancer" + Code is LNC#21902-2 "Stage group.pathology Cancer" DataValue from http://loinc.org/vs/LL234-6 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" 0..0 CancerStageSuffix @@ -125,7 +125,7 @@ Description: "A panel of staging information that is based on examination of Based on: TNMStagePanelMember Concept: LNC#21899-0 "Primary tumor.pathology Cancer" Description: "TODO: pull from LOINC" //TODO: pull from LOINC - TopicCode is LNC#21899-0 "Primary tumor.pathology Cancer" + Code is LNC#21899-0 "Primary tumor.pathology Cancer" DataValue from http://loinc.org/vs/LL232-0 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" @@ -133,7 +133,7 @@ Description: "A panel of staging information that is based on examination of Based on: TNMStagePanelMember Concept: LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" Description: "The presence of metastases in regional lymph nodes, obtained through pathologic analysis of a tumor specimen, and classified based on criteria defined by the staging system."" - TopicCode is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" + Code is LNC#21900-6 "Regional lymph nodes.pathology [Class] Cancer" DataValue from http://loinc.org/vs/LL3136-0 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" @@ -141,7 +141,7 @@ Description: "A panel of staging information that is based on examination of Based on: TNMStagePanelMember Concept: LNC#21901-4 "Distant metastases.pathology [Class] Cancer" Description: "TODO: pull from LOINC" //TODO: pull from LOINC - TopicCode is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative + Code is LNC#21901-4 "Distant metastases.pathology [Class] Cancer" // normative DataValue from http://loinc.org/vs/LL3137-8 CancerStageTiming is SCT#405978005 "Pathologic stage (observable entity)" */ diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index d3dde8dc..a0a7c57c 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -9,7 +9,7 @@ CodeSystem: OBSCAT = http://hl7.org/fhir/observation-category EntryElement: ProcedurePerformed Based on: ActionPerformed Description: "A procedure that has been performed." -1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite 0..1 PartOf value is type ref(ProcedurePerformed) 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -43,7 +43,7 @@ Description: "A procedure that has been performed." EntryElement: ProcedureNotPerformed Based on: ActionNotPerformed 0..1 Reason // limit to 0..1 to match FHIR Procedure.notDoneReason -1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite //0..1 PartOf value is type ref(ProcedurePerformed or Not Performed) ??? 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -56,7 +56,7 @@ Based on: ActionRequested PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) ResourceStatus from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) 0..1 Requester is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. -1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite 0..1 PartOf value is type ref(ProcedurePerformed) 0..1 Category // this is a constraint on the cardinality of Action.Category @@ -70,7 +70,7 @@ Based on: ActionRequested EntryElement: ProcedureRequestedAgainst Based on: ActionRequestedAgainst -1..1 TopicCode from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered +1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite @@ -93,7 +93,7 @@ EntryElement: LaboratoryProcedurePerformed Based on: ProcedurePerformed Concept: MTH#C0456984 Description: "A procedure performed on a collected specimen such as a blood panel or a biopsy." -1..1 TopicCode from http://hl7.org/fhir/ValueSet/observation-codes +1..1 Code from http://hl7.org/fhir/ValueSet/observation-codes Category is OBSCAT#laboratory 0..1 ref(Specimen) //0..1 ref(Device) // constraint from 0..* @@ -103,7 +103,7 @@ EntryElement: SurgicalProcedurePerformed Based on: ProcedurePerformed Concept: TBD Description: "A surgical action, independent of action context." - TopicCode from SurgicalProcedureVS + Code from SurgicalProcedureVS 0..* DirectSite 0..* DirectSiteCode 0..* IndirectSite @@ -181,5 +181,5 @@ Based on: ProcedurePerformed Description: "Diagnostic imaging procedure performed." Concept: SCT#363679005 "Imaging (procedure)" 0..0 Focus - TopicCode from DiagnosticImagingVS + Code from DiagnosticImagingVS \ No newline at end of file diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index eedaee8f..13ac8db1 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -4,7 +4,7 @@ Target: FHIR_DSTU_2 ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) Identifier maps to identifier - TopicCode maps to code + Code maps to code Patient maps to subject Category maps to category // DSTU 2 change (name change) @@ -39,7 +39,7 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) Identifier maps to identifier - TopicCode maps to code + Code maps to code Patient maps to subject Category maps to category // TODO the following is causing a crash @@ -73,7 +73,7 @@ ProcedureRequested maps to ProcedureRequest: Identifier maps to identifier CreationDate maps to orderedOn Requester maps to orderer - TopicCode maps to code + Code maps to code // DSTU 2 change (no such attribute) // Category maps to category // DSTU 2 change (no such attribute) @@ -102,7 +102,7 @@ ProcedureRequestedAgainst maps to Basic: fix doNotPerform to true fix intent to http://hl7.org/fhir/request-intent#proposal // who is the requester? - TopicCode maps to code + Code maps to code Category maps to category Patient maps to subject BodySite.BodySiteCode maps to bodySite diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index bd194df0..6f0bda2c 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: Identifier maps to identifier - TopicCode maps to code + Code maps to code Patient maps to subject Category maps to category constrain notDone to 0..0 @@ -31,7 +31,7 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: Identifier maps to identifier - TopicCode maps to code + Code maps to code Patient maps to subject Category maps to category // TODO the following is causing a crash @@ -64,7 +64,7 @@ ProcedureRequested maps to ProcedureRequest: Identifier maps to identifier CreationDate maps to authoredOn Requester maps to requester.agent - TopicCode maps to code + Code maps to code Category maps to category constrain doNotPerform to 0..0 Patient maps to subject @@ -89,7 +89,7 @@ ProcedureRequestedAgainst maps to ProcedureRequest: fix intent to http://hl7.org/fhir/request-intent#proposal CreationDate maps to authoredOn // who is the requester? - TopicCode maps to code + Code maps to code Category maps to category Patient maps to subject BodySite.BodySiteCode maps to bodySite diff --git a/spec/shr_tumor.txt b/spec/shr_tumor.txt index 3df3051d..8e6148c8 100644 --- a/spec/shr_tumor.txt +++ b/spec/shr_tumor.txt @@ -9,7 +9,7 @@ EntryElement: TumorPresent Based on: BodyStructurePresent Concept: SCT#395557000 "Tumor finding (finding)" Description: "The presence of an abnormal mass of tissue (neoplasm) that results when cells divide more than they should or do not die when they should. Tumors may be benign (not cancer), or malignant (cancer). (source: NCI Dictionary)." - TopicCode from TumorMorphologyVS + Code from TumorMorphologyVS // note - the topic code represents the morphology, as distinct from the location in BodySite 0..1 IsPrimaryTumor @@ -24,7 +24,7 @@ Based on: CodedLaboratoryObservation Concept: SCT#263605001 "Tumor size (observable entity)" 0..0 DataValue Focus value is type ref(TumorPresent) - TopicCode is SCT#263605001 "Tumor size (observable entity)" + Code is SCT#263605001 "Tumor size (observable entity)" 0..0 PanelMembers Components.ObservationComponent includes 0..1 TumorDimension1 @@ -36,28 +36,28 @@ includes 0..1 SizeOfGrossTumorBed Description: "The longest dimension of the tumor." Based on: QuantitativeObservationComponent Concept: SCT#372299002 "Tumor size, dimension 1 (observable entity)" - TopicCode is SCT#372299002 "Tumor size, dimension 1 (observable entity)" + Code is SCT#372299002 "Tumor size, dimension 1 (observable entity)" DataValue.Quantity.Units is UCUM#mm Element: TumorDimension2 Description: "The second longest dimension of the tumor, perpendicular to the longest dimension." Based on: QuantitativeObservationComponent Concept: SCT#372300005 "Tumor size, dimension 2 (observable entity)" - TopicCode is SCT#372300005 "Tumor size, dimension 2 (observable entity)" + Code is SCT#372300005 "Tumor size, dimension 2 (observable entity)" DataValue.Quantity.Units is UCUM#mm Element: TumorDimension3 Description: "The third longest dimension of the tumor, perpendicular to the two longest dimensions." Based on: QuantitativeObservationComponent Concept: SCT#372301009 "Tumor size, dimension 3 (observable entity)" - TopicCode is SCT#372301009 "Tumor size, dimension 3 (observable entity)" + Code is SCT#372301009 "Tumor size, dimension 3 (observable entity)" DataValue.Quantity.Units is UCUM#mm Element: SizeOfGrossTumorBed Based on: QuantitativeObservationComponent Concept: TBD Description: "The largest dimension of the gross tumor bed/fibrotic area." - TopicCode is TBD#TBD + Code is TBD#TBD DataValue.Quantity.Units is UCUM#mm @@ -66,7 +66,7 @@ Based on: CodedLaboratoryObservation Concept: MTH#C4086369 Description: "The edge or border of the tissue removed in cancer surgery. The margin is described as negative or clean when the pathologist finds no cancer cells at the edge of the tissue, suggesting that all of the cancer has been removed. The margin is described as positive or involved when the pathologist finds cancer cells at the edge of the tissue, suggesting that all of the cancer has not been removed." DataValue from PositiveNegativeVS - TopicCode is MTH#C4086369 + Code is MTH#C4086369 0..0 PanelMembers Components.ObservationComponent includes 0..1 TumorMarginDescription diff --git a/spec/shr_wound.txt b/spec/shr_wound.txt index 71557a5c..d15a8135 100644 --- a/spec/shr_wound.txt +++ b/spec/shr_wound.txt @@ -72,7 +72,7 @@ The WoundIdentifier serves as a link between this assertion and assessments of t Onset value is type dateTime // nowhere to put code LOINC 85585-8 Date of Onset {mm/dd/yyyy} Abatement value is type dateTime // nowhere to put code 88878-4 Date of abatement {mm/dd/yyyy} 1..1 Category is OBSCAT#exam -1..1 TopicCode from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered +1..1 Code from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.20.2.6/expansion if covered 1..1 Identifier is type WoundIdentifier 0..1 ConditionCause is type WoundTypeEtiology 1..1 BodySite is type WoundBodySite @@ -104,7 +104,7 @@ EntryElement: WoundAbsenct Based on: ConditionAbsent Description: "Documents the absence of a wound at a given body site. No wounds anywhere on the body can be indicated by omitting the anatomical location, or using the Snomed code #181469002 (Entire skin (body structure)) in WoundBodySite." -1..1 TopicCode is SCT#416462003 "Wound (disorder)" +1..1 Code is SCT#416462003 "Wound (disorder)" 1..1 Category is OBSCAT#exam 1..1 BodySite is type WoundBodySite @@ -120,7 +120,7 @@ Description: "Group of observations regarding the properties and severity of a w Interpretation is type WoundAssessmentInterpretation 0..0 BodySite // carried by wound assertion 0..0 Device - TopicCode is LNC#39135-9 + Code is LNC#39135-9 0..0 ReferenceRange 0..* Media is type PhotographicImage // 72170-4 Photographic image [Media] Components.ObservationComponent @@ -205,7 +205,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89254-7 Description: "The appearance of the base (bed) of the wound, together with the percentage of the bed with each type of appearance." 1..1 WoundIdentifier - TopicCode is LNC#89254-7 + Code is LNC#89254-7 0..0 BodySite // location is given by the wound assertion 0..0 Device Components.ObservationComponent @@ -230,7 +230,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: TBD Description: "Color of part or all of the wound base (bed), and the percentage of the area with that color." 1..1 WoundIdentifier - TopicCode is TBD#TBD + Code is TBD#TBD 0..0 BodySite // location is given by the wound assertion 0..0 Device Components.ObservationComponent @@ -257,7 +257,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89256-2 Description: "The state of the tissue at the edge of the wound." 1..1 WoundIdentifier - TopicCode is LNC#89256-2 + Code is LNC#89256-2 0..0 BodySite // location is given by the wound assertion 0..0 Device Components.ObservationComponent @@ -283,7 +283,7 @@ Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89257-0 Description: "A discharging blind-ended track that extends from the surface of an organ to an underlying area or abscess cavity. The track is invariably lined with granulation tissue. In chronic cases this may be augmented with epithelial tissue." 1..1 WoundIdentifier - TopicCode is LNC#89257-0 + Code is LNC#89257-0 0..0 BodySite // location is given by the wound assertion 0..0 Device Components.ObservationComponent @@ -312,7 +312,7 @@ EntryElement: WoundUnderminingObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#89258-8 Description: "Assessment of deep tissue (subcutaneous fat and muscle) damage around the wound margin. Undermining are narrow sinus tracts away from the wound margins and go downward into the wound." - TopicCode is LNC#89258-8 + Code is LNC#89258-8 1..1 WoundIdentifier 0..0 BodySite // location is given by the wound assertion 0..0 Device @@ -338,7 +338,7 @@ EntryElement: WoundExudateObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72292-6 Description: "Description of the fluid produced by a wound." - TopicCode is LNC#72292-6 + Code is LNC#72292-6 1..1 WoundIdentifier 0..0 BodySite // location is given by the wound assertion 0..0 Device @@ -388,7 +388,7 @@ EntryElement: WoundSizeObservation Based on: ComponentOnlyNonLaboratoryObservation Concept: LNC#72287-6 Description: "The estimated or measured dimensions of a wound." - TopicCode is LNC#72287-6 + Code is LNC#72287-6 1..1 WoundIdentifier 0..0 BodySite // location is given by the wound assertion 0..0 Device From 4f4bb9bb23eadeef18f7cbd8822cbaacd00f0956 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 4 Feb 2019 16:25:51 -0500 Subject: [PATCH 192/289] Updates to ObservationComponent, Status, Facility (Location) --- spec/shr_allergy.txt | 2 +- spec/shr_allergy_map_dstu2.txt | 2 +- spec/shr_allergy_map_stu3.txt | 2 +- spec/shr_base.txt | 51 +++++++++++++++++---------- spec/shr_base_action.txt | 23 ++++++------ spec/shr_base_finding.txt | 21 +++++------ spec/shr_base_map_dstu2.txt | 13 ++++--- spec/shr_base_map_stu3.txt | 9 +++-- spec/shr_brca.txt | 4 +-- spec/shr_core.txt | 4 +-- spec/shr_core_map_dstu2.txt | 8 ----- spec/shr_core_map_stu3.txt | 7 ---- spec/shr_encounter.txt | 45 ++++-------------------- spec/shr_encounter_map_dstu2.txt | 6 ++-- spec/shr_encounter_map_stu3.txt | 6 ++-- spec/shr_entity.txt | 58 +++++++++++++++++++++---------- spec/shr_entity_map_dstu2.txt | 38 +++++++++++--------- spec/shr_entity_map_stu3.txt | 33 +++++++++++------- spec/shr_familyhistory.txt | 3 +- spec/shr_financial.txt | 3 +- spec/shr_financial_map_dstu2.txt | 2 +- spec/shr_financial_map_stu3.txt | 2 +- spec/shr_medication.txt | 10 +++--- spec/shr_medication_map_dstu2.txt | 6 ++-- spec/shr_medication_map_stu3.txt | 6 ++-- spec/shr_occupation.txt | 20 ++++++----- spec/shr_occupation_map_dstu2.txt | 5 +-- spec/shr_occupation_map_stu3.txt | 2 +- spec/shr_oncocore.txt | 2 +- spec/shr_oncocore_stage.txt | 2 +- spec/shr_procedure.txt | 10 +++--- spec/shr_procedure_map_dstu2.txt | 6 ++-- spec/shr_procedure_map_stu3.txt | 6 ++-- spec/shr_research.txt | 8 +++-- spec/shr_research_map_stu3.txt | 7 ++-- 35 files changed, 222 insertions(+), 210 deletions(-) diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index abfc7eeb..849d33c5 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -15,7 +15,7 @@ Description: "A finding related to the presence of an individual's risk or sensi Asserter value is type PatientOrPractitionerOrRelatedPerson Recorder value is type PatientOrPractitioner // FHIR only allows Patient or Practitioner as recorder 1..1 Patient -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/allergy-verification-status +1..1 Status from http://hl7.org/fhir/ValueSet/allergy-verification-status 0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status 0..0 Focus // always the patient 1..1 DataValue from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered // DSTU 2 change different required value sets) diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index 7db84a87..95e4b1cc 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -12,7 +12,7 @@ AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/a DataValue maps to substance Type maps to type SubstanceCategory maps to category - ResourceStatus maps to status + Status maps to status Criticality maps to criticality // DSTU 2 change (onset only dateTime, not a choice [x]) Onset maps to onset diff --git a/spec/shr_allergy_map_stu3.txt b/spec/shr_allergy_map_stu3.txt index a1d8a5b0..84f6f7ab 100644 --- a/spec/shr_allergy_map_stu3.txt +++ b/spec/shr_allergy_map_stu3.txt @@ -11,7 +11,7 @@ AllergyIntolerance maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co DataValue maps to code Type maps to type SubstanceCategory maps to category - ResourceStatus maps to verificationStatus + Status maps to verificationStatus ClinicalStatus maps to clinicalStatus Criticality maps to criticality Onset maps to onset[x] diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 6fe5c521..253d6e9a 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -55,7 +55,7 @@ Abstract Element: DomainResource Based on: Resource Description: "Parent class for any item in clinical or administrative health-related system. A DomainResource can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." 0..1 Narrative -0..1 ResourceStatus +0..1 StatusOrActive 0..* Identifier Element: Narrative @@ -72,9 +72,20 @@ Description: "Parent class for any item in clinical or administrative health-rel Description: "Additional information on how the narrative was generated, and the scope of information contained." Value: CodeableConcept from http://hl7.org/fhir/ValueSet/narrative-status - Element: ResourceStatus - Description: "The status that relates to the interpretation of this resource. Certain status values can modify the meaning of the resource, for example, entered-in-error. When a boolean value is used, ResourceStatus of true indicates the record is active, false means inactive." - Value: boolean or CodeableConcept should be from http://hl7.org/fhir/ValueSet/resource-status + Abstract Element: StatusOrActive + Description: "Abstract class for a property that defines either the status of the recource, or whether the resource is active." + Value: boolean or CodeableConcept + + Element: Status + Based on: StatusOrActive + Description: "A state that relates to the workflow or interpretation of this resource. Certain status values can modify the meaning of the resource, for example, entered-in-error. When a boolean value is used, Status of true indicates the record is active, false means inactive." + Value: CodeableConcept should be from http://hl7.org/fhir/ValueSet/resource-status + + Element: Active + Based on: StatusOrActive + Description: "A flag that indicates whether the resource record is active, or inactive and ignored for all but historical purposes." + Value: boolean + Element: Metadata Description: "Elements that belong to all information items." @@ -123,17 +134,17 @@ Description: "This abstract class provides properties and behaviors common to en Element: Asserter Concept: TBD Description: "The origin or source of the information or request: a practitioner, patient, related person, organization, an algorithm, device, etc." - Value: Participant + Value: ref(EntityOrRole) Element: Recorder Concept: TBD Description: "The recorder of the information, if other than the information originator. For example, the nurse taking a list of medications reported by the patient." - Value: Participant + Value: ref(EntityOrRole) Element: Participant Concept: MTH#C1550369 Description: "An entity (usually a Practitioner, Patient, or Organization but potentially a device or other entity) that participates in a healthcare task or activity. A code can be used to indicate a generic type of participant, e.g., mother, EMT, or social worker." - Value: ref(EntityOrRole) or CodeableConcept + Value: ref(EntityOrRole) Element: CreationDate Concept: TBD @@ -145,7 +156,8 @@ EntryElement: Composition Based on: DomainResource Description: "A composition represents a set of Entries sharing common provenance, a document such as an extract from a patient record, a knowledge artifact, or a catalog definition." 0..1 Identifier // FHIR inconsistency -- usually 0..* -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/composition-status + StatusOrActive is type Status +1..1 Status from http://hl7.org/fhir/ValueSet/composition-status 1..1 Type should be from http://hl7.org/fhir/ValueSet/doc-typecodes 0..* Section @@ -158,39 +170,40 @@ Description: "A composition represents a set of Entries sharing common provenanc // Combined participant roles Element: PatientOrPractitioner - Based on: Participant + Based on: EntityOrRole Description: "A choice of Patient or Practitioner. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) Element: PatientOrPractitionerOrRelatedPerson - Based on: Participant + Based on: EntityOrRole Description: "A choice of Patient, Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping AdverseEvent.SignedBy to FHIR AdverseEvent." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) Element: PractitionerOrRelatedPerson - Based on: Participant + Based on: EntityOrRole Description: "A choice of Practitioner and RelatedPerson. Needed for mapping to FHIR, for example, mapping EncounterPerformed.Participant to FHIR Encounter.participant.individual" Value: ref(Practitioner) or ref(RelatedPerson) Element: PersonOrOrganization - Based on: Participant + Based on: EntityOrRole Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Organization) Element: PersonOrDevice - Based on: Participant + Based on: EntityOrRole Description: "A choice of Person (in any role) or Organization. Needed for mapping to FHIR." Value: ref(Patient) or ref(Practitioner) or ref(RelatedPerson) or ref(Device) - Element: FHIRProcedureParticipant - Based on: Participant + Element: PersonOrOrganizationOrDevice + Based on: EntityOrRole Description: "Constrains participants to classes that are accepted by FHIR as actors in procedures in STU 3." Value: ref(Practitioner) or ref(Organization) or ref(Patient) or ref(RelatedPerson) or ref(Device) - Element: ParticipantType - Based on: Participant - Description: "A participant who is not a specific individual or device, identified only by a type code. This could be a type of practitioner, a type of relative (e.g., mother), a type of device, etc. The type is distinct from the role; the mother (type) could play different roles (caregiver, organ donor, healthcare proxy, etc.)" - Value: CodeableConcept + Element: PractitionerOrDevice + Based on: EntityOrRole + Description: "A choice of Practitioner or Device. Needed for mapping to FHIR." + Value: ref(Practitioner) or ref(Device) + /* Element: HealthRecordId diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index 72f4e895..ac13cb09 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -8,9 +8,10 @@ Uses: shr.core, shr.entity, shr.encounter Abstract Element: ActionStatement Based on: ClinicalStatement Description: "Abstract class representing any type of action." -0..1 Category // Might not need this -0..* Reason -1..1 Patient +0..1 Category // Might not need this +0..* Reason +1..1 Patient + StatusOrActive is type Status Element: Reason Concept: MTH#C0566251 @@ -22,11 +23,11 @@ Based on: ActionStatement Description: "Abstract class representing performance of any type of action." 1..1 OccurrenceTimeOrPeriod // when the action took place 0..* Participation -1..1 ResourceStatus // change to required... should be from http://hl7.org/fhir/ValueSet/event-status DSTU 2 change (conflict in required data sets) +1..1 Status // change to required... should be from http://hl7.org/fhir/ValueSet/event-status DSTU 2 change (conflict in required data sets) 0..1 Method 0..1 RelatedRequest //0..1 EnactsPlan -0..1 ref(Facility) +0..1 ref(Location) 0..1 Outcome // e.g., AdverseEvent Element: Participation @@ -76,7 +77,7 @@ Based on: ActionStatement Description: "Abstract class representing a request for any type of action to be performed." 0..1 Requester 1..1 RequestIntent -1..1 ResourceStatus should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) +1..1 Status should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) 0..1 ExpectedPerformanceTime 0..1 ExpectedPerformerType 0..1 ExpectedPerformer @@ -86,9 +87,11 @@ Description: "Abstract class representing a request for any type of action to b 0..1 PatientInstructions 0..1 CommunicationMethod + Element: Requester - Based on: Participant + Concept: TBD Description: "The actor making this request." + Value: ref(EntityOrRole) Element: RequestIntent Description: "Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain." @@ -129,12 +132,6 @@ Description: "Abstract class representing a request for any type of action to b Description: "This is the method the provider used to communicate. Examples include: Written, Telephoned, Verbal, Electronically Entered, Policy, Service Correction, Duplicate, etc. 'Code indicating the origin of the prescription.' - NCPDP Telecommunication (Field 419-DJ, Data Dictionary 201104). Possible values include: Written; Telephone; Electronic; Facsimile; Pharmacy; Not Known." Value: CodeableConcept - Element: PractitionerOrDevice - Based on: Requester - Description: "A choice of Practitioner or Device. Needed for mapping to FHIR." - Value: ref(Practitioner) or ref(Device) - - Abstract Element: ActionNotPerformed Based on: ActionStatement Description: "Abstract class representing non-performance of any type of action." diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index f7fb5d93..2ef2acec 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -61,6 +61,7 @@ Description: "An assertion, determination, opinion, evaluation, result, observat 0..1 DataValue 0..1 DataAbsentReason 0..1 Focus + StatusOrActive is type Status Element: Focus Description: "The entity this condition or observation relates to, for example, a related person. The Focus is only required if the person or thing observed is different than the patient. Focus should not be an anatomical location. Examples: The focus for cancer progression would be the cancer condition; for wound length, an instance of a wound (a condition)." @@ -81,7 +82,7 @@ Observation has a value representing the result (answer), or an DataAbsentReason For an Observation, the Code describes the aspect or property of the subject being observed or measured. The Code is the 'question code' that pairs to the 'answer' contained in the Value." 0..1 Method 0..1 RelevantTime -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/observation-status +1..1 Status from http://hl7.org/fhir/ValueSet/observation-status 0..1 Category from http://hl7.org/fhir/ValueSet/observation-category if covered // MK Category cardinality from 0..* to 0..1 to be compatible with DSTU 2 0..1 BodySite 0..1 CommentOrDescription @@ -136,7 +137,7 @@ Description: "An observation not based on a specimen." EntryElement: SimpleNonLaboratoryObservation Based on: NonLaboratoryObservation Description: "An observation having no components or panel members" -0..0 ObservationComponent +0..0 Components 0..0 PanelMembers EntryElement: CodedNonLaboratoryObservation @@ -149,7 +150,7 @@ Description: "The result of evaluations (measurements, tests, or questions) whos EntryElement: SimpleCodedNonLaboratoryObservation Based on: CodedNonLaboratoryObservation Description: "An observation whose result is a code, and also having no components or panel members" -0..0 ObservationComponent +0..0 Components 0..0 PanelMembers EntryElement: ComponentOnlyNonLaboratoryObservation @@ -169,7 +170,7 @@ Description: "A coded finding based on a specimen collected from a patient." 1..1 Category // MK changed from 1..* to 1..1 to be compatible with DSTU 2 1..1 Patient 0..1 Specimen -0..0 BodySite // Location is determined indirectly from Specimen.CollectionSite +0..0 BodySite // BodySite is determined indirectly from Specimen.CollectionSite Category is OBSCAT#laboratory EntryElement: CodedLaboratoryObservation @@ -181,20 +182,20 @@ Description: "A coded finding from a laboratory test." EntryElement: SimpleLaboratoryObservation Based on: LaboratoryObservation Description: "A coded finding from a laboratory test without further panel members or components." -0..0 ObservationComponent +0..0 Components 0..0 PanelMembers EntryElement: SimpleCodedLaboratoryObservation Based on: CodedLaboratoryObservation Description: "A coded finding from a laboratory test without further panel members or components." -0..0 ObservationComponent +0..0 Components 0..0 PanelMembers Abstract Element: Panel Based on: Observation Description: "A set of independent but related observations that are often presented together to facilitate interpretation, such as a lipid panel." -0..0 ObservationComponent +0..0 Components 0..0 BodySite 0..0 Specimen 0..0 Device @@ -231,12 +232,12 @@ Based on: ConditionPresentOrAbsent Description: "A condition that is or may be present in a subject. 'Condition' is interpreted broadly and could be a disorder, abnormality, problem, injury, complaint, functionality, illness, disease, ailment, sickness, affliction, upset, difficulty, disorder, symptom, worry, or trouble." //TODO: 0..1 DataValue is SCT#52101004 "Present (qualifier value)" 0..0 DataAbsentReason - Asserter value is type ref(PatientOrPractitionerOrRelatedPerson) + Asserter value is type PatientOrPractitionerOrRelatedPerson 1..1 Patient 0..0 Focus // maybe a family member? 1..1 Category from ConditionCategoryVS // DSTU 2 change - category is 1..1 in Argonaut 0..* BodySite -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/condition-ver-status +1..1 Status from http://hl7.org/fhir/ValueSet/condition-ver-status 1..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/condition-clinical 0..1 Severity from http://hl7.org/fhir/ValueSet/condition-severity 0..1 StageInformation @@ -321,7 +322,7 @@ Description: "A finding that a condition is or was not present in the subject at //TODO: 1..1 DataValue is SCT#2667000 "Absent (qualifier value)" 0..0 DataAbsentReason 1..* Category from ConditionCategoryVS - ResourceStatus.CodeableConcept is #refuted // Maybe not right since refuted implies the condition was considered + Status.CodeableConcept is #refuted // Maybe not right since refuted implies the condition was considered 0..* BodySite EntryElement: ClinicalNote diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index a60729da..78141537 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -7,6 +7,7 @@ DomainResource maps to DomainResource: _Entry.EntryId maps to id Language maps to language Narrative maps to text + ImplicitRules maps to implicitRules Metadata.VersionId maps to meta.versionId // Metadata.SourceSystem maps to meta.extension // _Entry.EntryType maps to meta.profile // (this will force a profile -- don't do it) @@ -28,7 +29,7 @@ Narrative maps to Narrative: Observation maps to Observation: Identifier maps to identifier Patient maps to subject -// Asserter maps to performer + Asserter maps to performer Code maps to code Method maps to method // dstu 2 change (name change) @@ -41,6 +42,7 @@ Observation maps to Observation: BodySite.Media maps to bodySite.extension BodySite.DistanceFromLandmark maps to bodySite.extension Device maps to device + CreationDate maps to issued ReferenceRange maps to referenceRange ReferenceRange.Range.LowerBound maps to referenceRange.low ReferenceRange.Range.UpperBound maps to referenceRange.high @@ -49,13 +51,14 @@ Observation maps to Observation: // dstu 2 change (no such attribute) // ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo // dstu 2 change (no such attribute) -// ReferenceRange.ApplicableAgeRange maps to referenceRange.age +// ReferenceRange.ApplicableAgeRange maps to referenceRange.age + Components maps to component Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason // dstu 2 change (no such attribute) - //ObservationComponent.Interpretation maps to component.interpretation + //Components.ObservationComponent.Interpretation maps to component.interpretation Components.ObservationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member PanelMembers maps to related @@ -64,7 +67,7 @@ Observation maps to Observation: DataAbsentReason maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued - ResourceStatus maps to status + Status maps to status RelevantTime maps to effective[x] // dstu 2 change (name change) Encounter maps to encounter @@ -93,7 +96,7 @@ ConditionPresent maps to http://fhir.org/guides/argonaut/StructureDefinition/arg BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to encounter ClinicalStatus maps to clinicalStatus - ResourceStatus maps to verificationStatus + Status maps to verificationStatus Onset maps to onset[x] Abatement maps to abatement[x] Severity maps to severity diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index 567e24b3..acc52ddc 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -8,6 +8,7 @@ DomainResource maps to DomainResource: // _Entry.EntryId maps to id Language maps to language Narrative maps to text + ImplicitRules maps to implicitRules Metadata.VersionId maps to meta.versionId // Metadata.SourceSystem maps to meta.extension // in R4, this will be meta.source @@ -44,6 +45,7 @@ Observation maps to Observation: // TODO: observationresults is only for labs BodySite.Media maps to bodySite.extension BodySite.DistanceFromLandmark maps to bodySite.extension Device maps to device + CreationDate maps to issued ReferenceRange maps to referenceRange ReferenceRange.Range.LowerBound maps to referenceRange.low ReferenceRange.Range.UpperBound maps to referenceRange.high @@ -54,15 +56,16 @@ Observation maps to Observation: // TODO: observationresults is only for labs Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason - //ObservationComponent.Interpretation maps to component.interpretation + //Components.ObservationComponent.Interpretation maps to component.interpretation Components.ObservationComponent.ReferenceRange maps to component.referenceRange fix related.type to #has-member + PanelMembers maps to related PanelMembers.Observation maps to related.target (slice at = related; slice on = target.reference.resolve(); slice on type = profile; slice strategy = includes) DataValue maps to value[x] DataAbsentReason maps to dataAbsentReason Interpretation maps to interpretation // Issued maps to issued - ResourceStatus maps to status + Status maps to status RelevantTime maps to effective[x] Encounter maps to context Focus maps to extension @@ -90,7 +93,7 @@ ConditionPresent maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to context ClinicalStatus maps to clinicalStatus - ResourceStatus maps to verificationStatus + Status maps to verificationStatus Onset maps to onset[x] Abatement maps to abatement[x] Severity maps to severity diff --git a/spec/shr_brca.txt b/spec/shr_brca.txt index 902278d3..ca7599ae 100644 --- a/spec/shr_brca.txt +++ b/spec/shr_brca.txt @@ -73,7 +73,7 @@ Description: "HER2 receptor status. HER2 is a member of the human epidermal grow Code is LNC#48676-1 "HER2 [Interpretation] in Tissue" Specimen is type BreastSpecimen 0..0 Method // pre-coordinated in the Code -0..0 ObservationComponent +0..0 Components PanelMembers.Observation includes 0..* HER2byIHC includes 0..* HER2byFISH @@ -397,7 +397,7 @@ Concept: TBD Based on: Observation Description: "The status of genes known or suspected to play a role in breast cancer risk, for example, the tumor suppressor genes, BRCA1 and BRCA2." Observation.Code is TBD#TBD -0..0 ObservationComponent +0..0 Components PanelMembers.Observation includes 1..1 BRCA1Variant includes 1..1 BRCA2Variant diff --git a/spec/shr_core.txt b/spec/shr_core.txt index f87ea3fc..a0d92310 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -373,7 +373,7 @@ Value: unsignedInt Element: CommentOrDescription Concept: MTH#C0947611 Description: "A text note containing additional details, explanation, description, comment, or summarization." -Value: string // change to language-text +Value: string /* Can't restrict "value is type" to a primitive Element: UnsignedIntegerRange @@ -765,7 +765,7 @@ Description: "A location or structure in the body, including tissues, regions, c Element: Identifier Concept: MTH#C0600091 -Description: "A unique string that identifies a specific person or thing." +Description: "Business identifier or external id for this resource." 0..1 Text // cardinality aligns with FHIR STU3 0..1 Purpose from http://hl7.org/fhir/ValueSet/identifier-use 0..1 Type from http://hl7.org/fhir/ValueSet/identifier-type if covered diff --git a/spec/shr_core_map_dstu2.txt b/spec/shr_core_map_dstu2.txt index 83f3bfa3..19ae1f3b 100644 --- a/spec/shr_core_map_dstu2.txt +++ b/spec/shr_core_map_dstu2.txt @@ -54,14 +54,6 @@ TimePeriod maps to Period: BeginDateTime maps to start EndDateTime maps to end -// dstu 2 change (different mapping target) -Geoposition maps to Location: - constrain position to 1..1 - Latitude maps to position.latitude - Longitude maps to position.longitude - Altitude maps to position.altitude - - ContactPoint maps to ContactPoint: TelecomNumberOrAddress maps to value Type maps to system diff --git a/spec/shr_core_map_stu3.txt b/spec/shr_core_map_stu3.txt index 6d5a706a..fb5c0709 100644 --- a/spec/shr_core_map_stu3.txt +++ b/spec/shr_core_map_stu3.txt @@ -54,13 +54,6 @@ HumanName maps to HumanName: TimePeriod maps to Period: BeginDateTime maps to start EndDateTime maps to end - -// To do: consider mapping Geoposition to https://www.hl7.org/fhir/extension-geolocation.html -Geoposition maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-location: - constrain position to 1..1 - Latitude maps to position.latitude - Longitude maps to position.longitude - Altitude maps to position.altitude ContactPoint maps to ContactPoint: TelecomNumberOrAddress maps to value diff --git a/spec/shr_encounter.txt b/spec/shr_encounter.txt index 4aa82261..0979d5bb 100644 --- a/spec/shr_encounter.txt +++ b/spec/shr_encounter.txt @@ -11,7 +11,8 @@ Description: "A description of an interaction between a patient and healthcare p 0..1 EncounterClass 0..* EncounterType 0..1 TimePeriod -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 + StatusOrActive is type Status +1..1 Status from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 0..1 PartOf value is type ref(Encounter) 0..* Diagnosis // SHR Extension @@ -120,18 +121,20 @@ Description: "A detailed description of an interaction between a patient and hea Element: EncounterRequestedContext Based on: RequestedContext Description: "Context for encounter requests." - ResourceStatus from http://hl7.org/fhir/ValueSet/request-status + StatusOrActive is type Status + Status from http://hl7.org/fhir/ValueSet/request-status PriorityRank from http://hl7.org/fhir/ValueSet/request-priority Element: EncounterPerformedContext Based on: PerformedContext Description: "Context for encounters performed." - ResourceStatus from http://hl7.org/fhir/ValueSet/encounter-status + StatusOrActive is type Status + Status from http://hl7.org/fhir/ValueSet/encounter-status OccurrenceTimeOrPeriod is type OccurrencePeriod Reason should be from http://hl7.org/fhir/ValueSet/encounter-reason // RelatedRequest value is type ref(EncounterRequested) // RelatedPlan is type EncounterPlanned - Participation.Participant is type PractitionerOrRelatedPerson + Participation.Participant value is type PractitionerOrRelatedPerson 0..* ServiceGiven 0..1 ServiceProvider @@ -146,37 +149,3 @@ Description: "Context for encounters performed." Description: "Indicates a medical service provided." Value: CodeableConcept // TODO: Link to ICD-10 value set */ - - - -/* -EntryElement: Hospitalization -Based on: - DateTime TimePeriod - Location Reference - Organization Reference - AdmitSource Enum? - Transferred Boolean - Attending Physician-Admission Practitioner - Admitting Condition/Complaint/Diagnosis (-es) Reference(s) - Attending Physician-Discharge Practitioner - Discharge Diagnosis (-es) Reference(s) - Discharge Services Multi Enum - Discharge or Transfer Destination ? - Discharge Summary Document - -EntryElement: EmergencyEncounter -Based on: DetailedEncounter - DateTime TimePeriod - Location Reference - Organization Reference - AdmitSource - Transferred Boolean - Attending Physician-Admission Provider - Admitting Finding/Complaint/Diagnosis (-es) Reference(s) - Attending Physician-Discharge Provider - Discharge Diagnosis (-es) Reference(s) - Discharge Services Multi Enum - Discharge or Transfer Destination ? - Discharge Summary Document - */ \ No newline at end of file diff --git a/spec/shr_encounter_map_dstu2.txt b/spec/shr_encounter_map_dstu2.txt index 598f22b8..adab5f61 100644 --- a/spec/shr_encounter_map_dstu2.txt +++ b/spec/shr_encounter_map_dstu2.txt @@ -9,7 +9,7 @@ Encounter maps to Encounter: Patient maps to patient EncounterType maps to type // ServiceProvider maps to serviceProvider - ResourceStatus maps to status + Status maps to status TimePeriod maps to period // Participation.Participant maps to participant // Participation.Participant[Entity] maps to participant.individual ??? @@ -18,7 +18,7 @@ Encounter maps to Encounter: // Participation.Participant.ParticipationPeriod maps to participant.period // RelatedRequest.Value maps to incomingReferral // constrain location to 0..1 -// Facility maps to location.location +// Location maps to location.location // Reason maps to reason // what maps to apppointment? RelatedPromise? // TBD "HealthConcern" maps to indication @@ -31,7 +31,7 @@ EncounterRequested maps to ReferralRequest: EncounterTopic.??? maps to type //TreatmentCooperation //PaymentSource - ResourceStatus maps to status + Status maps to status //RequestIntent EncounterExpectedPerformanceTime maps to occurrence[x] EncounterExpectedPerformerType maps to specialty diff --git a/spec/shr_encounter_map_stu3.txt b/spec/shr_encounter_map_stu3.txt index 7530e770..cdf4263b 100644 --- a/spec/shr_encounter_map_stu3.txt +++ b/spec/shr_encounter_map_stu3.txt @@ -8,7 +8,7 @@ Encounter maps to Encounter: Patient maps to subject EncounterType maps to type // ServiceProvider maps to serviceProvider - ResourceStatus maps to status + Status maps to status TimePeriod maps to period // Participation.Participant maps to participant // Participation.Participant[Entity] maps to participant.individual ??? @@ -17,7 +17,7 @@ Encounter maps to Encounter: // Participation.Participant.ParticipationPeriod maps to participant.period // RelatedRequest.Value maps to incomingReferral // constrain location to 0..1 -// Facility maps to location.location +// Location maps to location.location // Reason maps to reason // what maps to apppointment? RelatedPromise? // TBD "HealthConcern" maps to indication @@ -30,7 +30,7 @@ EncounterRequested maps to ReferralRequest: EncounterTopic.??? maps to type //TreatmentCooperation //PaymentSource - ResourceStatus maps to status + Status maps to status //RequestIntent EncounterExpectedPerformanceTime maps to occurrence[x] EncounterExpectedPerformerType maps to specialty diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index b1c73102..3995f686 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -27,6 +27,7 @@ Concept: MTH#C1299487 Description: "A person in the role of a patient." 1..* Identifier 1..1 Person +1..1 StatusOrActive is type Active //0..* ref(ExternalHealthRecord) EntryElement: ExternalHealthRecord @@ -46,7 +47,7 @@ Based on: Role Concept: MTH#C2220264 Description: "A person who practices a healing art." 1..1 Person -0..1 ResourceStatus +0..1 StatusOrActive is type Active 1..1 Person.HumanName // only one (limitation imposed by us-core) // 0..* Affiliation // handled by ProviderRelationship in FHIR 1..* Identifier @@ -77,7 +78,7 @@ EntryElement: RelatedPerson Based on: Role Description: "A person in a role defined in relationship to a patient" 0..1 Person -0..1 ResourceStatus +0..1 StatusOrActive is type Active 0..1 RelationshipToPersonOfRecord 0..1 EffectiveTimePeriod 1..1 Person.HumanName // DSTU 2 change (max cardinality of 1 imposed by DSTU 2) @@ -91,7 +92,7 @@ EntryElement: Group Based on: Entity Concept: MTH#C0441833 Description: "A set of entities (personnel, material, or places) to be considered together. May be a pool of like-type resources, a team, or combination of personnel, material and places." -0..1 ResourceStatus +0..1 StatusOrActive is type Active 1..1 Type from http://hl7.org/fhir/ValueSet/group-type 0..1 Title // name 1..1 Actual @@ -142,22 +143,46 @@ Description: "A set of entities (personnel, material, or places) to be considere Value: boolean -EntryElement: Facility +EntryElement: Location Based on: Entity Concept: MTH#C1547538 Description: "Services and space and equipment provided for a particular purpose; a building or place that provides a particular service or is used for a particular industry. Could be a clinical site, community site, or a mobile facility." -1..1 FacilityName +0..1 StatusOrActive is type Status + Status from http://hl7.org/fhir/ValueSet/location-status +0..1 OperationalStatus +1..1 LocationName +0..* Alias +0..1 CommentOrDescription +0..1 Mode from http://hl7.org/fhir/ValueSet/location-mode 1..1 Type from http://hl7.org/fhir/ValueSet/v3-ServiceDeliveryLocationRoleType -1..1 Location +0..* ContactPoint +0..1 Address +0..1 PhysicalType +0..1 Geoposition 0..1 MobileFacility -0..1 ContactPoint 1..1 ref(ManagingOrganization) - Element: FacilityName + Element: OperationalStatus + Description: "The operational status covers operation values most relevant to beds (but can also apply to rooms/units/chairs/etc. such as an isolation unit/dialysis chair). This typically covers concepts such as contamination, housekeeping, and other activities like maintenance." + Value: CodeableConcept should be from http://terminology.hl7.org/ValueSet/v2-0116 + + Element: Alias + Description: "A list of alternate names the subject is or was known as." + Value: string + + Element: Mode + Description: "Indicates whether a resource instance represents a specific item or a class of items." + Value: CodeableConcept + + Element: LocationName Concept: MTH#C3261404 Description: "The DBA (doing business as) or most commonly-used name for a facility." Value: string + Element: PhysicalType + Description: "Physical form of the location, e.g. building, room, vehicle, road." + Value: CodeableConcept could be from http://hl7.org/fhir/ValueSet/location-physical-type + Element: MobileFacility Concept: MTH#C0231435 Description: "A facility that moves from place to place, such as Meals-On-Wheels." @@ -175,7 +200,8 @@ Concept: MTH#C0439861 Description: "Any matter of defined composition that has discrete existence, whose origin may be biological, mineral or chemical." 1..1 Type should be from http://hl7.org/fhir/ValueSet/substance-code 0..* Category from http://hl7.org/fhir/ValueSet/substance-category if covered -0..1 ResourceStatus from http://hl7.org/fhir/ValueSet/substance-status + StatusOrActive is type Status +0..1 Status from http://hl7.org/fhir/ValueSet/substance-status 0..1 CommentOrDescription 0..* Ingredient @@ -205,6 +231,7 @@ EntryElement: Medication Based on: Entity Concept: MTH#C0013227 Description: "A type of prescription drug or over-the-counter drug that is used to prevent, treat, or relieve symptoms of a disease or abnormal condition, but excluding vaccines." + StatusOrActive is type Status 1..1 Type from http://hl7.org/fhir/us/core/ValueSet/us-core-medication-codes if covered 0..1 DoseForm 0..1 Brand @@ -489,7 +516,7 @@ Description: "A social or legal structure formed by human beings." 0..1 Type could be from http://hl7.org/fhir/ValueSet/organization-type 1..* Address 1..* ContactPoint -1..1 ResourceStatus +1..1 StatusOrActive is type Active 0..1 PartOf value is type ref(Organization) Element: OrganizationName @@ -497,16 +524,10 @@ Description: "A social or legal structure formed by human beings." Description: "The name of the organization." Value: string - -EntryElement: Location -Based on: Entity -Concept: MTH#C0450429 -Description: "A position, site, or point in space where something can be found." -Value: Address or Geoposition or GeopoliticalLocation - EntryElement: Device Based on: Entity Description: "A specific durable physical device used in diagnosis or treatment. The value is the coding for a type of device, for example, a CPAP machine. The same device might be used on multiple patients." + StatusOrActive is type Status 1..1 Type from DeviceVS // currently (4/2018) called 'key' in CIMI 1..1 DeviceUdi // DSTU 2 change -- Argonaut requires 1..1 Udi (see http://build.fhir.org/ig/Healthedata1/Argo-DSTU2/StructureDefinition-argo-device.html) 0..1 VendorModelNumber // called 'model' in CIMI @@ -545,7 +566,8 @@ EntryElement: Specimen Based on: Entity Description: "A specimen is a substance, physical object, or collection of objects, that the laboratory considers a single discrete, uniquely identified unit that is the subject of one or more steps in the laboratory workflow. A specimen may include multiple physical pieces as long as they are considered a single unit within the laboratory workflow. A specimen results from one to many specimen collection procedures, and may be contained in multiple specimen containers. Specimen may have one or more processing activities." 0..1 AccessionIdentifier -0..1 ResourceStatus from http://hl7.org/fhir/ValueSet/specimen-status + StatusOrActive is type Status +0..1 Status from http://hl7.org/fhir/ValueSet/specimen-status 1..1 Type from http://hl7.org/fhir/ValueSet/v2-0487 0..1 CollectionSource 0..1 CollectionTime diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index 782a39b3..513027a2 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -4,7 +4,7 @@ Target: FHIR_DSTU_2 Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient: // dstu 2 change (different mapping target) Identifier maps to identifier - ResourceStatus maps to active + Active maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -30,7 +30,7 @@ Patient maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-patient Practitioner maps to Practitioner: // dstu 2 change (different mapping target) Identifier maps to identifier - ResourceStatus maps to active + Active maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -44,7 +44,7 @@ Practitioner maps to Practitioner: // dstu 2 change (different mapping target) RelatedPerson maps to RelatedPerson: Identifier maps to identifier - ResourceStatus maps to extension + Active maps to extension Person.HumanName maps to name Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender @@ -56,7 +56,7 @@ RelatedPerson maps to RelatedPerson: Organization maps to Organization: Identifier maps to identifier - ResourceStatus maps to active + Active maps to active Type maps to type OrganizationName maps to name Address maps to address @@ -65,7 +65,7 @@ Organization maps to Organization: Group maps to Group: Identifier maps to identifier - ResourceStatus maps to extension + Active maps to extension Type maps to type Actual maps to actual constrain code to 0..0 // why? @@ -79,21 +79,27 @@ Group maps to Group: MemberParticipation.InactiveFlag maps to member.inactive Count maps to quantity -Facility maps to Location: +Location maps to Location: Identifier maps to identifier - ResourceStatus maps to status + Status maps to status + OperationalStatus maps to operationalStatus + LocationName maps to name + Alias maps to alias + CommentOrDescription maps to description + Mode maps to mode Type maps to type - FacilityName maps to name - Location[Address] maps to address - Location[Geoposition].Latitude maps to position.latitude - Location[Geoposition].Longitude maps to position.longitude - Location[Geoposition].Altitude maps to position.altitude ContactPoint maps to telecom + Address maps to address + PhysicalType maps to physicalType + Geoposition.Latitude maps to position.latitude + Geoposition.Longitude maps to position.longitude + Geoposition.Altitude maps to position.altitude ManagingOrganization maps to managingOrganization + MobileFacility maps to extension Substance maps to Substance: Identifier maps to identifier - ResourceStatus maps to status + Status maps to status Type maps to code Ingredient maps to ingredient Ingredient.IngredientAmount maps to ingredient.quantity @@ -101,7 +107,7 @@ Substance maps to Substance: Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medication: Identifier maps to extension - ResourceStatus maps to status + Status maps to status Type maps to code // dstu 2 change (different attribute) DoseForm maps to product.form @@ -125,7 +131,7 @@ Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medi Specimen maps to Specimen: Identifier maps to identifier - ResourceStatus maps to status + Status maps to status Type maps to type AccessionIdentifier maps to accessionIdentifier CollectionSource maps to subject @@ -146,7 +152,7 @@ Specimen maps to Specimen: Device maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-device: Identifier maps to identifier - ResourceStatus maps to status + Status maps to status Type maps to type // dstu 2 change (different attribute) DeviceUdi maps to udi diff --git a/spec/shr_entity_map_stu3.txt b/spec/shr_entity_map_stu3.txt index 52837ee0..ea04d4cd 100644 --- a/spec/shr_entity_map_stu3.txt +++ b/spec/shr_entity_map_stu3.txt @@ -4,7 +4,7 @@ Target: FHIR_STU_3 Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: Identifier maps to identifier - ResourceStatus maps to active + Active maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -30,7 +30,7 @@ Patient maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient: Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner: Identifier maps to identifier - ResourceStatus maps to active + Active maps to active Person.HumanName maps to name Person.AdministrativeGender maps to gender Person.PhotographicImage maps to photo @@ -45,7 +45,7 @@ Practitioner maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-pra RelatedPerson maps to RelatedPerson: Identifier maps to identifier - ResourceStatus maps to active + Active maps to active Person.HumanName maps to name Person.DateOfBirth maps to birthDate Person.AdministrativeGender maps to gender @@ -57,7 +57,7 @@ RelatedPerson maps to RelatedPerson: Organization maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization: Identifier maps to identifier - ResourceStatus maps to active + Active maps to active OrganizationName maps to name Type maps to type Address maps to address @@ -66,7 +66,7 @@ Organization maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-org Group maps to Group: Identifier maps to identifier - ResourceStatus maps to active + Active maps to active Type maps to type Actual maps to actual constrain code to 0..0 @@ -80,21 +80,28 @@ Group maps to Group: MemberParticipation.InactiveFlag maps to member.inactive Count maps to quantity -Facility maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-location: +Location maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-location: Identifier maps to identifier + Status maps to status + OperationalStatus maps to operationalStatus + LocationName maps to name + Alias maps to alias + CommentOrDescription maps to description + Mode maps to mode Type maps to type - FacilityName maps to name - Location[Address] maps to address - Location[Geoposition].Latitude maps to position.latitude - Location[Geoposition].Longitude maps to position.longitude - Location[Geoposition].Altitude maps to position.altitude ContactPoint maps to telecom + Address maps to address + PhysicalType maps to physicalType + Geoposition.Latitude maps to position.latitude + Geoposition.Longitude maps to position.longitude + Geoposition.Altitude maps to position.altitude ManagingOrganization maps to managingOrganization + MobileFacility maps to extension Substance maps to Substance: Identifier maps to identifier Type maps to code - ResourceStatus maps to status + Status maps to status Ingredient maps to ingredient Ingredient.IngredientAmount maps to ingredient.quantity Ingredient.SubstanceOrCode maps to ingredient.substance[x] @@ -118,7 +125,7 @@ Specimen maps to Specimen: Identifier maps to identifier Type maps to type AccessionIdentifier maps to accessionIdentifier - ResourceStatus maps to status + Status maps to status CollectionSource maps to subject SourceSpecimen maps to parent ReceivedTime maps to receivedTime diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index 75f1ef01..64dc0fcf 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -16,7 +16,8 @@ Concept: LNC#54114-4 "Family member health history [USSG-FHT] Family member" // Description: "The health history of a patient's family member." 1..1 Patient 1..1 FamilyMember -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/history-status + StatusOrActive is type Status +1..1 Status from http://hl7.org/fhir/ValueSet/history-status 0..* FamilyMemberConditionPresent diff --git a/spec/shr_financial.txt b/spec/shr_financial.txt index f56d0d37..b7b24e0a 100644 --- a/spec/shr_financial.txt +++ b/spec/shr_financial.txt @@ -11,7 +11,8 @@ EntryElement: Coverage Based on: DomainResource Concept: MTH#C0021682 "HealthInsurance" Description: "Health insurance coverage available (even if not used for payment for a given encounter)." -0..1 ResourceStatus from http://hl7.org/fhir/ValueSet/fm-status + StatusOrActive is type Status +0..1 Status from http://hl7.org/fhir/ValueSet/fm-status 1..1 CoverageType should be from http://hl7.org/fhir/ValueSet/coverage-type 0..1 InsuranceMemberId 0..1 PolicyHolder diff --git a/spec/shr_financial_map_dstu2.txt b/spec/shr_financial_map_dstu2.txt index c5ca8e74..5fab2084 100644 --- a/spec/shr_financial_map_dstu2.txt +++ b/spec/shr_financial_map_dstu2.txt @@ -6,7 +6,7 @@ Target: FHIR_DSTU_2 Coverage maps to Coverage: // dstu 2 change (no such attribute) Identifier maps to identifier - ResourceStatus maps to status + Status maps to status CoverageType maps to type InsuranceMemberId maps to subscriberId EffectiveTimePeriod maps to period diff --git a/spec/shr_financial_map_stu3.txt b/spec/shr_financial_map_stu3.txt index 669c4b2e..19234968 100644 --- a/spec/shr_financial_map_stu3.txt +++ b/spec/shr_financial_map_stu3.txt @@ -5,7 +5,7 @@ Target: FHIR_STU_3 Coverage maps to Coverage: Identifier maps to identifier - ResourceStatus maps to status + Status maps to status CoverageType maps to type InsuranceMemberId maps to subscriberId EffectiveTimePeriod maps to period diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index dda6f24e..2c5109d7 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -79,19 +79,19 @@ Description: "A record of the use of a medication. If the medication is given as Asserter value is type PersonOrOrganization 1..1 CreationDate // us-core required 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category - ResourceStatus from http://hl7.org/fhir/ValueSet/medication-statement-status + Status from http://hl7.org/fhir/ValueSet/medication-statement-status 0..1 Reason // Upper cardinality imposed by DSTU 2 0..0 Participation -0..0 Facility +0..0 Location RelatedRequest value is type ref(MedicationRequested) // or CarePlan or ProcedureRequest or ReferralRequest EntryElement: MedicationAdministered Based on: MedicationExposure Description: "A record of the use of a medication. If the medication is given as part of a course of treatment, the PartOf attribute should refer to the CourseOfTreatment." 0..1 Category should be from http://hl7.org/fhir/ValueSet/medication-statement-category - ResourceStatus from http://hl7.org/fhir/ValueSet/medication-admin-status + Status from http://hl7.org/fhir/ValueSet/medication-admin-status 0..1 Participation - Participation.Participant is type PatientOrPractitionerOrRelatedPerson // DSTU 2 change (max cardinality = 1), also, DSTU 2 participant excludes Device + Participation.Participant value is type PatientOrPractitionerOrRelatedPerson // DSTU 2 change (max cardinality = 1), also, DSTU 2 participant excludes Device 0..0 Participation.ParticipationType RelatedRequest value is type ref(MedicationRequested) @@ -133,7 +133,7 @@ Description: "An order for a medication to be dispensed and instructions for use 1..1 Medication 0..1 Dosage 1..1 Requester value is type ref(Practitioner) - ResourceStatus from http://hl7.org/fhir/ValueSet/medication-request-status + Status from http://hl7.org/fhir/ValueSet/medication-request-status PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority 0..1 NumberOfRefillsAllowed 0..1 QuantityPerDispense diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index 0dce77c6..ea561041 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -32,7 +32,7 @@ MedicationStatement maps to http://fhir.org/guides/argonaut/StructureDefinition/ // fix taken to #y Reason maps to reasonForUse[x] OccurrenceTimeOrPeriod maps to effective[x] - ResourceStatus maps to status + Status maps to status // DSTU 2 change (added Dosage as in-line element) Dosage.DoseAmount maps to dosage.quantity[x] Dosage.TimingOfDoses maps to dosage.timing @@ -62,7 +62,7 @@ MedicationAdministered maps to MedicationAdministration: // DSTU 2 change (name change) Reason maps to reasonGiven OccurrenceTimeOrPeriod maps to effectiveTime[x] - ResourceStatus maps to status + Status maps to status // DSTU 2 change (more restrictive type) Participation.Participant maps to practitioner // DSTU 2 change (no such attribute) @@ -98,7 +98,7 @@ MedicationRequested maps to http://fhir.org/guides/argonaut/StructureDefinition/ constrain dosageInstruction to 0..1 // DSTU 2 change (name change) Reason maps to reason[x] - ResourceStatus maps to status + Status maps to status ExpectedPerformanceTime maps to dispenseRequest.validityPeriod // DSTU 2 change (no such attribute) // PriorityRank maps to priority diff --git a/spec/shr_medication_map_stu3.txt b/spec/shr_medication_map_stu3.txt index d292611e..afe039a3 100644 --- a/spec/shr_medication_map_stu3.txt +++ b/spec/shr_medication_map_stu3.txt @@ -26,7 +26,7 @@ MedicationStatement maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c fix taken to #y Reason maps to reasonCode OccurrenceTimeOrPeriod maps to effective[x] - ResourceStatus maps to status + Status maps to status Encounter maps to context RelatedRequest maps to basedOn @@ -42,7 +42,7 @@ MedicationAdministered maps to MedicationAdministration: Category maps to category Reason maps to reasonCode OccurrenceTimeOrPeriod maps to effective[x] - ResourceStatus maps to status + Status maps to status Participation maps to performer Participation.Participant maps to performer.actor // Participation.ParticipationType maps to performer.role (no role in med administration!) @@ -69,7 +69,7 @@ MedicationRequested maps to http://hl7.org/fhir/us/core/StructureDefinition/us-c constrain dosageInstruction to 0..1 Dosage maps to dosageInstruction Reason maps to reasonCode - ResourceStatus maps to status + Status maps to status ExpectedPerformanceTime maps to dispenseRequest.validityPeriod PriorityRank maps to priority PerformerInstructions maps to note.text diff --git a/spec/shr_occupation.txt b/spec/shr_occupation.txt index 4b711de5..12d30cc9 100644 --- a/spec/shr_occupation.txt +++ b/spec/shr_occupation.txt @@ -34,7 +34,7 @@ A person's Employment Status could change over time, for example, a person could Outside of ODH, the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status.' However, in ODH Employment Status is used to characterize a person, Work Classification is used to characterize a job, and Retirement Date is used to characterize a person as retired." DataValue from https://phinvads.cdc.gov/vads/ViewValueSet.action?oid=2.16.840.1.114222.4.11.7129 Code is LNC#74165-2 "HistoryOfEmploymentStatus" -0..0 ObservationComponent +0..0 Components 0..0 Focus EntryElement: RetirementDate @@ -45,19 +45,19 @@ A person can be both retired and employed (an Employment Status); most often, a Outside of ODH, a characterization of the employment arrangement between an employer and a person (one job) has sometimes been referred to as a person's 'employment status' and might include values such as 'retired.' However, in ODH Employment Status is used to characterize a person's relationship to working (e.g., employed, unemployed) and Retirement Date is used to characterize whether or not a person self-identifies as retired. For example, a person could be 'employed' (Employment Status) and have retired from a previous job (recorded at the Person level as a Retirement Date)." DataValue value is type dateTime Code is LNC#87510-4 "Date of Retirement" -0..0 ObservationComponent +0..0 Components 0..0 RelevantTime // The result value contains the date of retirement, so having a relevant time would be redundant. 0..0 Focus EntryElement: CombatZonePeriod Based on: SocialHistoryObservation -Concept: LNC#87511-2 +Concept: LNC#87511-2 "Combat zone AndOr hazardous duty work dates" Description: "Self-reported date range(s) when a person worked in what is considered a combat zone; sometimes called a hazardous duty work. Both civilian workers, such as Department of Defense contractors, and military service members could have worked in combat zones. Multiple periods in combat zone should be recorded using multiple FHIR resources." -Value: TimePeriod - Code is LNC#87511-2 -0..0 ObservationComponent -0..0 RelevantTime // The result value contains the time period of combat zone activity, so the relevant time would be redundant. + DataValue value is type TimePeriod + Code is LNC#87511-2 "Combat zone AndOr hazardous duty work dates" +0..0 Components +0..0 RelevantTime // Since the result data value contains the time period of combat zone activity, the relevant time is redundant 0..0 Focus EntryElement: UsualWork @@ -166,6 +166,7 @@ includes 0..1 IsCurrentJob Description: "A regular action performed by a person at a job, as reported by the person. For example, a Job Duty could be 'carry construction supplies' for a job with the Occupation 'construction laborer.' " DataValue value is type string Code is LNC#63761-1 + 0..0 ReferenceRange Element: OccupationalHazard Based on: ObservationComponent @@ -173,6 +174,7 @@ includes 0..1 IsCurrentJob Description: "A hazard that is specific to a person's work or work environment at one job and with which the person might come in contact, as reported by the person. A hazard is a source of potential harm to a person’s physical or mental health. Hazards can be biological, physical, psychological, chemical, or radiological in nature." DataValue value is type string Code is LNC#87729-0 + 0..0 ReferenceRange Element: WorkSchedule Based on: CodedObservationComponent @@ -207,7 +209,7 @@ includes 0..1 IsCurrentJob Element: SocialHistoryObservation Based on: Observation Description: "A simplified observation for social histories." - Category is OBSCAT#social-history + Category is OBSCAT#social-history "Social History" 0..0 Method 0..0 BodySite 0..0 ReferenceRange @@ -235,7 +237,7 @@ Description: "The result of social history questions, whose answer is expressed EntryElement: MilitaryServiceHistory Based on: CodedSocialHistoryObservation Description: "History of service in the US military." - Category is OBSCAT#social-history + Category is OBSCAT#social-history "Social History" Code is MTH#C3714797 Components.ObservationComponent includes 1..1 MilitaryStatus diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt index 816d06cf..e91e2225 100644 --- a/spec/shr_occupation_map_dstu2.txt +++ b/spec/shr_occupation_map_dstu2.txt @@ -3,7 +3,7 @@ Namespace: odh Target: FHIR_DSTU_2 SocialHistoryObservation maps to Observation: - Identifier maps to identifier +/* Identifier maps to identifier Patient maps to subject Code maps to code Category maps to category @@ -11,12 +11,13 @@ SocialHistoryObservation maps to Observation: Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason - //ObservationComponent.Interpretation maps to component.interpretation + //Components.ObservationComponent.Interpretation maps to component.interpretation Components.ObservationComponent.ReferenceRange maps to component.referenceRange DataValue maps to value[x] DataAbsentReason maps to dataAbsentReason RelevantTime maps to effective[x] Encounter maps to context +*/ constrain implicitRules to 0..0 constrain contained to 0..0 constrain modifierExtension to 0..0 diff --git a/spec/shr_occupation_map_stu3.txt b/spec/shr_occupation_map_stu3.txt index 57eea296..642b250d 100644 --- a/spec/shr_occupation_map_stu3.txt +++ b/spec/shr_occupation_map_stu3.txt @@ -12,7 +12,7 @@ SocialHistoryObservation maps to Observation: Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason - //ObservationComponent.Interpretation maps to component.interpretation + //Components.ObservationComponent.Interpretation maps to component.interpretation Components.ObservationComponent.ReferenceRange maps to component.referenceRange // constrain related to 0..0 DataValue maps to value[x] diff --git a/spec/shr_oncocore.txt b/spec/shr_oncocore.txt index 599f0a19..53d32849 100644 --- a/spec/shr_oncocore.txt +++ b/spec/shr_oncocore.txt @@ -56,7 +56,7 @@ Concept: SCT#246453008 "Course of illness (attribute)" 0..0 BodySite 0..0 Device 0..0 PanelMembers -0..0 ObservationComponent +0..0 Components Element: CancerProgressionEvidence Description: "The type of evidence considered in determining disease progression." diff --git a/spec/shr_oncocore_stage.txt b/spec/shr_oncocore_stage.txt index 7fd587aa..72d14282 100644 --- a/spec/shr_oncocore_stage.txt +++ b/spec/shr_oncocore_stage.txt @@ -39,7 +39,7 @@ Description: "Abstract parent class for members of cancer staging panels. Can 0..1 Method is type CancerStagingSystem 0..0 BodySite 0..0 ReferenceRange -0..0 ObservationComponent +0..0 Components 0..0 PanelMembers 0..0 Device diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index a0a7c57c..a4f0365a 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -20,9 +20,9 @@ Description: "A procedure that has been performed." //0..* Indication 0..* ref(Device) Participation.OnBehalfOf value is type ref(Organization) - ResourceStatus from http://hl7.org/fhir/ValueSet/event-status + Status from http://hl7.org/fhir/ValueSet/event-status // Participation.Participant.EntityOrRole is type ref(Practitioner) - Participation.Participant is type FHIRProcedureParticipant + Participation.Participant value is type PersonOrOrganizationOrDevice RelatedRequest value is type ref(ProcedureRequested) //0..* OutputFinding // in CIMI, this is part of ProcedureTopic, but the definition hinges on performance, so it belongs here, not there. @@ -48,14 +48,14 @@ Based on: ActionNotPerformed //0..1 PartOf value is type ref(ProcedurePerformed or Not Performed) ??? 0..1 Category // this is a constraint on the cardinality of Action.Category 0..* Annotation -1..1 ResourceStatus // must be from http://hl7.org/fhir/ValueSet/event-status // DSTU 2 change (different required value sets in v2 and v3) +1..1 Status // must be from http://hl7.org/fhir/ValueSet/event-status // DSTU 2 change (different required value sets in v2 and v3) RelatedRequest value is type ref(ProcedureRequested) EntryElement: ProcedureRequested Based on: ActionRequested PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) - ResourceStatus from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) -0..1 Requester is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. + Status from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) +0..1 Requester value is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. 1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite 0..1 PartOf value is type ref(ProcedurePerformed) diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 13ac8db1..5252cb1e 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -28,13 +28,13 @@ ProcedurePerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/a Participation.ParticipationType maps to performer.role // DSTU 2 change (no such attribute) // Participation.OnBehalfOf maps to performer.onBehalfOf - ResourceStatus maps to status + Status maps to status // TODO The following statement is failing it might be a bug // Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method RelatedRequest.Value maps to request // RelatedPlan maps to definition Outcome maps to outcome - Facility maps to location + Location maps to location ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-procedure: // DSTU 2 change (different mapping target) @@ -87,7 +87,7 @@ ProcedureRequested maps to ProcedureRequest: BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to encounter Reason maps to reason[x] - ResourceStatus maps to status + Status maps to status // DSTU 2 change (no such attribute) // RequestIntent maps to intent // DSTU 2 change (name change) diff --git a/spec/shr_procedure_map_stu3.txt b/spec/shr_procedure_map_stu3.txt index 6f0bda2c..96a1d7d0 100644 --- a/spec/shr_procedure_map_stu3.txt +++ b/spec/shr_procedure_map_stu3.txt @@ -20,13 +20,13 @@ ProcedurePerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-co Participation.Participant maps to performer.actor Participation.ParticipationType maps to performer.role Participation.OnBehalfOf maps to performer.onBehalfOf - ResourceStatus maps to status + Status maps to status // TODO The following statement is failing it might be a bug // Method maps to http://hl7.org/fhir/StructureDefinition/procedure-method RelatedRequest.Value maps to basedOn // RelatedPlan maps to definition Outcome maps to outcome - Facility maps to location + Location maps to location ProcedureNotPerformed maps to http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure: @@ -76,7 +76,7 @@ ProcedureRequested maps to ProcedureRequest: BodySite.DistanceFromLandmark maps to bodySite.extension Encounter maps to context Reason maps to reasonCode - ResourceStatus maps to status + Status maps to status RequestIntent maps to intent ExpectedPerformanceTime maps to occurrence[x] ExpectedPerformerType maps to performerType diff --git a/spec/shr_research.txt b/spec/shr_research.txt index 7afd70b6..3d991b64 100644 --- a/spec/shr_research.txt +++ b/spec/shr_research.txt @@ -18,11 +18,12 @@ Description: "A clinical trial or similar research study. Reference: list of FDA 0..1 Jurisdiction 0..* ContactDetail 0..1 PrincipalInvestigator -0..* Facility +0..* Location 0..1 TerminationReason 0..* Annotation 0..* StudyArm -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/research-study-status + StatusOrActive is type Status +1..1 Status from http://hl7.org/fhir/ValueSet/research-study-status Element: Enrollment Concept: MTH#C4041024 @@ -57,6 +58,7 @@ Description: "Record of a subject's enrollment and participation in a research s 0..1 Identifier // cardinality constraint 1..1 ref(Patient) 1..1 ref(ResearchStudy) -1..1 ResourceStatus from http://hl7.org/fhir/ValueSet/research-subject-status + StatusOrActive is type Status +1..1 Status from http://hl7.org/fhir/ValueSet/research-subject-status 1..1 ParticipationPeriod 0..1 TerminationReason from ResearchSubjectTerminationReasonVS diff --git a/spec/shr_research_map_stu3.txt b/spec/shr_research_map_stu3.txt index 3a839239..e18a3728 100644 --- a/spec/shr_research_map_stu3.txt +++ b/spec/shr_research_map_stu3.txt @@ -3,19 +3,18 @@ Namespace: shr.research Target: FHIR_STU_3 - ResearchStudy maps to ResearchStudy: Identifier maps to identifier Title maps to title PartOf maps to partOf - ResourceStatus maps to status + Status maps to status Enrollment maps to enrollment EffectiveTimePeriod maps to period Sponsor maps to sponsor Jurisdiction maps to jurisdiction ContactDetail maps to contact PrincipalInvestigator maps to principalInvestigator - Facility maps to site + Location maps to site TerminationReason maps to reasonStopped Annotation maps to note StudyArm.Title maps to arm.name @@ -26,5 +25,5 @@ ResearchSubject maps to ResearchSubject: Identifier maps to identifier Patient maps to individual ResearchStudy maps to study - ResourceStatus maps to status + Status maps to status ParticipationPeriod maps to period From 08f71a392bb0df16a31cb36baea5a993db782592 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 4 Feb 2019 17:25:54 -0500 Subject: [PATCH 193/289] Minor doc refinements --- spec/shr_base_finding.txt | 2 +- spec/shr_core.txt | 11 +---------- spec/shr_entity.txt | 6 +++--- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/spec/shr_base_finding.txt b/spec/shr_base_finding.txt index 2ef2acec..b92416e8 100644 --- a/spec/shr_base_finding.txt +++ b/spec/shr_base_finding.txt @@ -57,7 +57,7 @@ Description: "A non-independent finding whose result is a quantity." Abstract Element: ConditionOrObservation Based on: ClinicalStatement Description: "An assertion, determination, opinion, evaluation, result, observation, or measurement made by a person or device." -1..1 Code // cardinality constraint on existing property +1..1 Code 0..1 DataValue 0..1 DataAbsentReason 0..1 Focus diff --git a/spec/shr_core.txt b/spec/shr_core.txt index a0d92310..e7d80355 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -107,7 +107,7 @@ Description: "A set of codes drawn from different coding systems, representing t 0..1 DisplayText Element: Code -Description: "The main identifier for the lab, procedure, condition, etc." +Description: "The main type identifier for a lab, procedure, condition, etc., usually drawn from a controlled vocabulary." Value: CodeableConcept Element: Range @@ -335,19 +335,16 @@ Description: "An address expressed using postal conventions (as opposed to GP Value: string Element: City - Based on: GeopoliticalLocation Concept: MTH#C1555315 Description: "The name of a municipality, city, town, village or other community or delivery center. (Source: HL7 FHIR)." Value: string Element: District - Based on: GeopoliticalLocation Concept: MTH#C0079170 Description: "The name of the administrative area at a level below that of a state but above that of a city or town. In the US, a county. Outside the US, a district or the equivalent. (Source: HL7 FHIR)." Value: string Element: State - Based on: GeopoliticalLocation Concept: MTH#C1552743 Description: "Sub-unit of a country with limited sovereignty in a federally organized country. A code may be used if codes are in common use (i.e. US 2 letter state codes). (Source: HL7 FHIR)." Value: string @@ -358,7 +355,6 @@ Description: "An address expressed using postal conventions (as opposed to GP Value: string Element: Country - Based on: GeopoliticalLocation Concept: MTH#C0454664 Description: "Country - a nation as commonly understood or generally accepted, expressed in ISO 3166 Alpha-2 (2-letter) codes." Value: string @@ -542,11 +538,6 @@ Value: Duration //--------------- Locations and Addresses ----------------- -Element: GeopoliticalLocation -Concept: MTH#C0017446 -Description: "The countries of the world and major geopolitical subregions, such as US states." - - Element: Geoposition Concept: TBD Description: "The location on the surface of the Earth, described by a latitude and longitude (and optional altitude)." diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 3995f686..269c28b9 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -5,7 +5,7 @@ Uses: shr.core, shr.base, shr.medication, shr.procedure Abstract Element: EntityOrRole Based on: DomainResource -Description: "Parent class for both Entity and Role." +Description: "Abstract parent class for both Entity and Role." Abstract Element: Role Based on: EntityOrRole @@ -288,9 +288,9 @@ Description: "A type of prescription drug or over-the-counter drug that is used Description: "The kind of container the medication comes in." Value: CodeableConcept -EntryElement: Person +EntryElement: Person Concept: MTH#C0027361 -Description: "A person relevant to the health or social situation of the subject (including the person of record him or herself)." +Description: "A person relevant to the health or social situation of the subject (including the subject him- or herself)." 1..* HumanName //0..1 AnonymizedFlag //0..1 FictionalPersonFlag From 76adb480c408728077b9e0c10de4bd4fc2682926 Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 4 Feb 2019 19:02:54 -0500 Subject: [PATCH 194/289] Fixed numerous mapping errors that I missed Replaced the default config with the shr config so I don't miss compiling half the code accidentally when using the default config. Renamed ig-shr-config.json to config.json --- spec/config.json | 35 +++++++++++++++++++++--------- spec/ig-shr-config.json | 36 ------------------------------- spec/shr_allergy.txt | 6 ++++-- spec/shr_allergy_map_dstu2.txt | 4 ++-- spec/shr_base.txt | 6 ++++-- spec/shr_base_action.txt | 3 ++- spec/shr_base_map_dstu2.txt | 5 ++--- spec/shr_base_map_stu3.txt | 4 ++-- spec/shr_encounter.txt | 3 ++- spec/shr_entity.txt | 4 +++- spec/shr_entity_map_dstu2.txt | 8 +++---- spec/shr_familyhistory.txt | 4 +++- spec/shr_financial.txt | 21 ++++++++++++------ spec/shr_financial_map_dstu2.txt | 11 +++++----- spec/shr_financial_map_stu3.txt | 7 ++++-- spec/shr_medication.txt | 4 +++- spec/shr_medication_map_dstu2.txt | 4 ++-- spec/shr_occupation_map_dstu2.txt | 4 +--- spec/shr_occupation_map_stu3.txt | 6 ++++-- spec/shr_procedure.txt | 9 +++++--- spec/shr_procedure_map_dstu2.txt | 4 ++-- 21 files changed, 97 insertions(+), 91 deletions(-) delete mode 100644 spec/ig-shr-config.json diff --git a/spec/config.json b/spec/config.json index 6118857e..bdb258ac 100644 --- a/spec/config.json +++ b/spec/config.json @@ -1,21 +1,36 @@ { - "projectName": "Example Project", - "projectShorthand": "EXAMPLE", - "projectURL": "http://example.com", - "fhirURL": "http://example.com/fhir", - "fhirTarget": "FHIR_STU_3", - "implementationGuide": { - "indexContent": "exampleIndexContent.html" + "projectName": "Standard Health Record", + "projectShorthand": "SHR", + "projectURL": "http://hl7.org/fhir/us/projectURL/", + "fhirURL": "http://hl7.org/fhir/us/fhirURL/", + "entryTypeURL": "http://hl7.org/fhir/us/entryTypeURL/spec", + "fhirTarget": "FHIR_DSTU_2", + "implementationGuide": + { + "npmName": "hl7.fhir.us.shr", + "version": "0.1.0", + "includeLogicalModels": true, + "includeModelDoc": true, + "indexContent": "LandingPageShr.html", + "historyLink": "http://hl7.org/fhir/us/shr/history.html", + "primarySelectionStrategy": + { + "strategy": "entry" + } }, - "publisher": "Example Publisher", + "filterStrategy": + { + "filter": false + }, + "publisher": "The MITRE Corporation: Standard Health Record Collaborative", "contact": [ { "telecom": [ { "system": "url", - "value": "http://example.com" + "value": "http://standardhealthrecord.org" } ] } ] -} +} \ No newline at end of file diff --git a/spec/ig-shr-config.json b/spec/ig-shr-config.json deleted file mode 100644 index bdb258ac..00000000 --- a/spec/ig-shr-config.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "projectName": "Standard Health Record", - "projectShorthand": "SHR", - "projectURL": "http://hl7.org/fhir/us/projectURL/", - "fhirURL": "http://hl7.org/fhir/us/fhirURL/", - "entryTypeURL": "http://hl7.org/fhir/us/entryTypeURL/spec", - "fhirTarget": "FHIR_DSTU_2", - "implementationGuide": - { - "npmName": "hl7.fhir.us.shr", - "version": "0.1.0", - "includeLogicalModels": true, - "includeModelDoc": true, - "indexContent": "LandingPageShr.html", - "historyLink": "http://hl7.org/fhir/us/shr/history.html", - "primarySelectionStrategy": - { - "strategy": "entry" - } - }, - "filterStrategy": - { - "filter": false - }, - "publisher": "The MITRE Corporation: Standard Health Record Collaborative", - "contact": [ - { - "telecom": [ - { - "system": "url", - "value": "http://standardhealthrecord.org" - } - ] - } - ] -} \ No newline at end of file diff --git a/spec/shr_allergy.txt b/spec/shr_allergy.txt index 849d33c5..b2c1ebc2 100644 --- a/spec/shr_allergy.txt +++ b/spec/shr_allergy.txt @@ -15,10 +15,12 @@ Description: "A finding related to the presence of an individual's risk or sensi Asserter value is type PatientOrPractitionerOrRelatedPerson Recorder value is type PatientOrPractitioner // FHIR only allows Patient or Practitioner as recorder 1..1 Patient -1..1 Status from http://hl7.org/fhir/ValueSet/allergy-verification-status +1..1 Status // from http://hl7.org/fhir/ValueSet/allergy-verification-status + // Conflict between V2 and V3 -- Cannot override value set constraint from http://hl7.org/fhir/ValueSet/allergy-intolerance-status to http://hl7.org/fhir/ValueSet/allergy-verification-status 0..1 ClinicalStatus from http://hl7.org/fhir/ValueSet/allergy-clinical-status 0..0 Focus // always the patient -1..1 DataValue from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered // DSTU 2 change different required value sets) + DataValue value is type CodeableConcept +1..1 DataValue // from http://hl7.org/fhir/us/core/ValueSet-us-core-substance.html if covered // DSTU 2 change different required value sets 0..1 SubstanceCategory // DSTU 2 change (restrict upper cardinality to 1) 0..1 Onset 0..1 Type from http://hl7.org/fhir/ValueSet/allergy-intolerance-type diff --git a/spec/shr_allergy_map_dstu2.txt b/spec/shr_allergy_map_dstu2.txt index 95e4b1cc..53ad6ca7 100644 --- a/spec/shr_allergy_map_dstu2.txt +++ b/spec/shr_allergy_map_dstu2.txt @@ -6,9 +6,9 @@ Target: FHIR_DSTU_2 AllergyIntolerance maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-allergyintolerance: Identifier maps to identifier Patient maps to patient - Asserter maps to asserter + Asserter maps to reporter Recorder maps to recorder - CreationDate maps to assertedDate + CreationDate maps to recordedDate DataValue maps to substance Type maps to type SubstanceCategory maps to category diff --git a/spec/shr_base.txt b/spec/shr_base.txt index 253d6e9a..bab58fb0 100644 --- a/spec/shr_base.txt +++ b/spec/shr_base.txt @@ -38,7 +38,8 @@ Description: "Obsolete. Use DomainResource" Abstract Element: Resource Description: "Parent class for any item in clinical or administrative health-related system. Contains metadata attributes that apply to any item represented in the standard health record. An DomainResource can belong to a single person's health record, or represent an entity that surfaces in multiple records, such as organizations, providers, payments, decision support artifacts, etc." 0..1 Metadata -0..1 Language from http://hl7.org/fhir/ValueSet/languages if covered // DSTU 2 change -- language has required binding in Argonaut +0..1 Language // from http://hl7.org/fhir/ValueSet/languages +// language has required binding in Argonaut in DSTU 2 that is different than the extensible binding in us-core-patient. Not able to resolve this. 0..1 ImplicitRules Element: Language @@ -79,7 +80,8 @@ Description: "Parent class for any item in clinical or administrative health-rel Element: Status Based on: StatusOrActive Description: "A state that relates to the workflow or interpretation of this resource. Certain status values can modify the meaning of the resource, for example, entered-in-error. When a boolean value is used, Status of true indicates the record is active, false means inactive." - Value: CodeableConcept should be from http://hl7.org/fhir/ValueSet/resource-status + Value: CodeableConcept // should be from http://hl7.org/fhir/ValueSet/resource-status + // cannot specify the preferred value set here because there are conflicting required value sets in some status attributes, particularly Encounter. It will generate an error to map preferred to required. Element: Active Based on: StatusOrActive diff --git a/spec/shr_base_action.txt b/spec/shr_base_action.txt index ac13cb09..2d938439 100644 --- a/spec/shr_base_action.txt +++ b/spec/shr_base_action.txt @@ -77,7 +77,8 @@ Based on: ActionStatement Description: "Abstract class representing a request for any type of action to be performed." 0..1 Requester 1..1 RequestIntent -1..1 Status should be from http://hl7.org/fhir/ValueSet/request-status // DSTU2 change (conflicting value sets) +1..1 Status // should be from http://hl7.org/fhir/ValueSet/request-status + // DSTU2 change (conflicting required value sets in MedicationRequest between argo and us-core) 0..1 ExpectedPerformanceTime 0..1 ExpectedPerformerType 0..1 ExpectedPerformer diff --git a/spec/shr_base_map_dstu2.txt b/spec/shr_base_map_dstu2.txt index 78141537..7ee99ccd 100644 --- a/spec/shr_base_map_dstu2.txt +++ b/spec/shr_base_map_dstu2.txt @@ -52,9 +52,8 @@ Observation maps to Observation: // ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo // dstu 2 change (no such attribute) // ReferenceRange.ApplicableAgeRange maps to referenceRange.age - Components maps to component - Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - Components.ObservationComponent.Code maps to component.code + Components maps to component + Components.ObservationComponent.Code maps to component.code (slice on = code.coding.code; slice strategy = includes) Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason // dstu 2 change (no such attribute) diff --git a/spec/shr_base_map_stu3.txt b/spec/shr_base_map_stu3.txt index acc52ddc..2c61595f 100644 --- a/spec/shr_base_map_stu3.txt +++ b/spec/shr_base_map_stu3.txt @@ -52,8 +52,8 @@ Observation maps to Observation: // TODO: observationresults is only for labs ReferenceRange.Type maps to referenceRange.type ReferenceRange.ApplicableSubpopulation maps to referenceRange.appliesTo ReferenceRange.ApplicableAgeRange maps to referenceRange.age - Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) - Components.ObservationComponent.Code maps to component.code + Components maps to component + Components.ObservationComponent.Code maps to component.code (slice on = code.coding.code; slice strategy = includes) Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason //Components.ObservationComponent.Interpretation maps to component.interpretation diff --git a/spec/shr_encounter.txt b/spec/shr_encounter.txt index 0979d5bb..37d2d368 100644 --- a/spec/shr_encounter.txt +++ b/spec/shr_encounter.txt @@ -12,7 +12,8 @@ Description: "A description of an interaction between a patient and healthcare p 0..* EncounterType 0..1 TimePeriod StatusOrActive is type Status -1..1 Status from http://hl7.org/fhir/ValueSet/encounter-status // Incompatible with DSTU 2 +1..1 Status // from http://hl7.org/fhir/ValueSet/encounter-status +// Required value set in STU 3 is incompatible with DSTU 2 0..1 PartOf value is type ref(Encounter) 0..* Diagnosis // SHR Extension diff --git a/spec/shr_entity.txt b/spec/shr_entity.txt index 269c28b9..a376bdc3 100644 --- a/spec/shr_entity.txt +++ b/spec/shr_entity.txt @@ -528,7 +528,9 @@ EntryElement: Device Based on: Entity Description: "A specific durable physical device used in diagnosis or treatment. The value is the coding for a type of device, for example, a CPAP machine. The same device might be used on multiple patients." StatusOrActive is type Status -1..1 Type from DeviceVS // currently (4/2018) called 'key' in CIMI + Status + // from http://hl7.org/fhir/ValueSet/devicestatus in V2 argo; from http://hl7.org/fhir/ValueSet/device-status in V3 us-core +1..1 Type from DeviceVS 1..1 DeviceUdi // DSTU 2 change -- Argonaut requires 1..1 Udi (see http://build.fhir.org/ig/Healthedata1/Argo-DSTU2/StructureDefinition-argo-device.html) 0..1 VendorModelNumber // called 'model' in CIMI 0..1 ManufacturerName // string, not ref(Organization) - only because of mapping to FHIR diff --git a/spec/shr_entity_map_dstu2.txt b/spec/shr_entity_map_dstu2.txt index 513027a2..086daab7 100644 --- a/spec/shr_entity_map_dstu2.txt +++ b/spec/shr_entity_map_dstu2.txt @@ -82,9 +82,9 @@ Group maps to Group: Location maps to Location: Identifier maps to identifier Status maps to status - OperationalStatus maps to operationalStatus + OperationalStatus maps to extension LocationName maps to name - Alias maps to alias + Alias maps to extension CommentOrDescription maps to description Mode maps to mode Type maps to type @@ -99,7 +99,7 @@ Location maps to Location: Substance maps to Substance: Identifier maps to identifier - Status maps to status + Status maps to extension Type maps to code Ingredient maps to ingredient Ingredient.IngredientAmount maps to ingredient.quantity @@ -107,7 +107,7 @@ Substance maps to Substance: Medication maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medication: Identifier maps to extension - Status maps to status + Status maps to extension Type maps to code // dstu 2 change (different attribute) DoseForm maps to product.form diff --git a/spec/shr_familyhistory.txt b/spec/shr_familyhistory.txt index 64dc0fcf..28ebfb8a 100644 --- a/spec/shr_familyhistory.txt +++ b/spec/shr_familyhistory.txt @@ -7,7 +7,9 @@ Uses: shr.core, shr.base, shr.entity EntryElement: FamilyMember Based on: RelatedPerson Description: "A related person that is a family member of the patient. This includes biological and non-biological family, as well as extended family." -1..1 RelationshipToPersonOfRecord from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion // Family member value VS used in CCDA. 2015 Ed ONC Cert Criteria indicate relationship to patient should be coded in SCT, and allows for pre- or post-coordination with condition. TODO: consider SCT value set (maybe allow both?) +1..1 RelationshipToPersonOfRecord // from https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion +// Family member value VS used in CCDA. 2015 Ed ONC Cert Criteria indicate relationship to patient should be coded in SCT, and allows for pre- or post-coordination with condition. TODO: consider SCT value set (maybe allow both?) +// Not feasible. Cannot override value set constraint from http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype to https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.1.11.19579/expansion. ERROR_CODE:13029 EntryElement: FamilyMemberHealthHistory diff --git a/spec/shr_financial.txt b/spec/shr_financial.txt index b7b24e0a..6acbfdde 100644 --- a/spec/shr_financial.txt +++ b/spec/shr_financial.txt @@ -13,19 +13,28 @@ Concept: MTH#C0021682 "HealthInsurance" Description: "Health insurance coverage available (even if not used for payment for a given encounter)." StatusOrActive is type Status 0..1 Status from http://hl7.org/fhir/ValueSet/fm-status -1..1 CoverageType should be from http://hl7.org/fhir/ValueSet/coverage-type -0..1 InsuranceMemberId +0..1 CoverageType should be from http://hl7.org/fhir/ValueSet/coverage-type +0..1 Subscriber +0..1 SubscriberId +0..1 Beneficiary 0..1 PolicyHolder 0..1 EffectiveTimePeriod -// TODO: complete this! Element: CoverageType Description: "Coverage category such as medical or accident." Value: CodeableConcept - Element: InsuranceMemberId - Description: "Patient identifier at a healthcare provider, insurer, or other related organization." - Value: string // should be id, but FHIR uses string + Element: Subscriber + Description: "The party who has signed-up for or 'owns' the contractual relationship to the policy or to whom the benefit of the policy for services rendered to them or their family is due." + Value: ref(Patient) or ref(RelatedPerson) + + Element: SubscriberId + Description: "The insurer assigned ID for the Subscriber." + Value: string or Identifier // string in STU3, Identifier in STU2 + + Element: Beneficiary + Description: "The party who benefits from the insurance coverage., the patient when services are provided." + Value: ref(Patient) Element: PolicyHolder Description: "Owner of the policy" diff --git a/spec/shr_financial_map_dstu2.txt b/spec/shr_financial_map_dstu2.txt index 5fab2084..6c8106fc 100644 --- a/spec/shr_financial_map_dstu2.txt +++ b/spec/shr_financial_map_dstu2.txt @@ -4,10 +4,11 @@ Target: FHIR_DSTU_2 Coverage maps to Coverage: -// dstu 2 change (no such attribute) Identifier maps to identifier - Status maps to status + Status maps to extension CoverageType maps to type - InsuranceMemberId maps to subscriberId - EffectiveTimePeriod maps to period - PolicyHolder[Patient] maps to policyHolder // dstu 2 change (more restricted type) \ No newline at end of file + Subscriber maps to subscriber + SubscriberId maps to subscriberId + Beneficiary maps to extension + PolicyHolder maps to extension + EffectiveTimePeriod maps to period \ No newline at end of file diff --git a/spec/shr_financial_map_stu3.txt b/spec/shr_financial_map_stu3.txt index 19234968..cef15e82 100644 --- a/spec/shr_financial_map_stu3.txt +++ b/spec/shr_financial_map_stu3.txt @@ -7,6 +7,9 @@ Coverage maps to Coverage: Identifier maps to identifier Status maps to status CoverageType maps to type - InsuranceMemberId maps to subscriberId + Subscriber maps to subscriber + SubscriberId maps to subscriberId + Beneficiary maps to beneficiary + PolicyHolder maps to policyHolder EffectiveTimePeriod maps to period - PolicyHolder maps to policyHolder \ No newline at end of file + \ No newline at end of file diff --git a/spec/shr_medication.txt b/spec/shr_medication.txt index 2c5109d7..44c9027e 100644 --- a/spec/shr_medication.txt +++ b/spec/shr_medication.txt @@ -133,7 +133,9 @@ Description: "An order for a medication to be dispensed and instructions for use 1..1 Medication 0..1 Dosage 1..1 Requester value is type ref(Practitioner) - Status from http://hl7.org/fhir/ValueSet/medication-request-status + Status //from http://hl7.org/fhir/ValueSet/medication-request-status + // incompatible value sets between DSTU2 Argonaut and STU3 + // Cannot override value set constraint from http://hl7.org/fhir/ValueSet/medication-order-status to http://hl7.org/fhir/ValueSet/medication-request-status PriorityRank from http://hl7.org/fhir/ValueSet/medication-request-priority 0..1 NumberOfRefillsAllowed 0..1 QuantityPerDispense diff --git a/spec/shr_medication_map_dstu2.txt b/spec/shr_medication_map_dstu2.txt index ea561041..be3c297b 100644 --- a/spec/shr_medication_map_dstu2.txt +++ b/spec/shr_medication_map_dstu2.txt @@ -77,7 +77,7 @@ MedicationAdministered maps to MedicationAdministration: MedicationNotAdministered maps to MedicationAdministration: Identifier maps to identifier - constrain performer to 0..0 + constrain practitioner to 0..0 Medication maps to medication[x] // DSTU 2 change (no such attribute) // Category maps to category @@ -86,7 +86,7 @@ MedicationNotAdministered maps to MedicationAdministration: constrain reasonGiven to 0..0 constrain dosage to 0..0 Reason maps to reasonNotGiven - NonOccurrenceTimeOrPeriod maps to effective[x] + NonOccurrenceTimeOrPeriod maps to effectiveTime[x] MedicationRequested maps to http://fhir.org/guides/argonaut/StructureDefinition/argo-medicationorder: diff --git a/spec/shr_occupation_map_dstu2.txt b/spec/shr_occupation_map_dstu2.txt index e91e2225..11bb1d26 100644 --- a/spec/shr_occupation_map_dstu2.txt +++ b/spec/shr_occupation_map_dstu2.txt @@ -17,11 +17,9 @@ SocialHistoryObservation maps to Observation: DataAbsentReason maps to dataAbsentReason RelevantTime maps to effective[x] Encounter maps to context -*/ - constrain implicitRules to 0..0 +*/ constrain contained to 0..0 constrain modifierExtension to 0..0 - constrain basedOn to 0..0 constrain bodySite to 0..0 constrain specimen to 0..0 constrain device to 0..0 diff --git a/spec/shr_occupation_map_stu3.txt b/spec/shr_occupation_map_stu3.txt index 642b250d..82b75db7 100644 --- a/spec/shr_occupation_map_stu3.txt +++ b/spec/shr_occupation_map_stu3.txt @@ -4,11 +4,12 @@ Target: FHIR_STU_3 // do not map to US Core Results -- Brett says that's only for labs SocialHistoryObservation maps to Observation: - Identifier maps to identifier +/* Identifier maps to identifier Patient maps to subject Code maps to code Category maps to category - Components.ObservationComponent maps to component (slice on = code.coding.code; slice strategy = includes) + Components maps to component + Components.ObservationComponent.Code maps to component.code (slice on = code.coding.code; slice strategy = includes) Components.ObservationComponent.Code maps to component.code Components.ObservationComponent.DataValue maps to component.value[x] Components.ObservationComponent.DataAbsentReason maps to component.dataAbsentReason @@ -19,6 +20,7 @@ SocialHistoryObservation maps to Observation: // DataAbsentReason maps to dataAbsentReason RelevantTime maps to effective[x] // Encounter maps to context +*/ // constrain implicitRules to 0..0 // constrain contained to 0..0 // constrain modifierExtension to 0..0 diff --git a/spec/shr_procedure.txt b/spec/shr_procedure.txt index a4f0365a..4e2ea383 100644 --- a/spec/shr_procedure.txt +++ b/spec/shr_procedure.txt @@ -20,7 +20,8 @@ Description: "A procedure that has been performed." //0..* Indication 0..* ref(Device) Participation.OnBehalfOf value is type ref(Organization) - Status from http://hl7.org/fhir/ValueSet/event-status + Status // from http://hl7.org/fhir/ValueSet/event-status + // Conflict V2 V3: Cannot override value set constraint from http://hl7.org/fhir/ValueSet/procedure-status to http://hl7.org/fhir/ValueSet/event-status // Participation.Participant.EntityOrRole is type ref(Practitioner) Participation.Participant value is type PersonOrOrganizationOrDevice RelatedRequest value is type ref(ProcedureRequested) @@ -53,8 +54,10 @@ Based on: ActionNotPerformed EntryElement: ProcedureRequested Based on: ActionRequested - PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority // DSTU 2 change (different required value sets in v2 and v3) - Status from http://hl7.org/fhir/ValueSet/request-status // DSTU 2 change(different required value sets in v2 and v3) + PriorityRank // must be from http://hl7.org/fhir/ValueSet/request-priority + // DSTU 2 change (different required value sets in v2 and v3) + Status // from http://hl7.org/fhir/ValueSet/request-status + // DSTU 2 change(different required value sets in v2 and v3) 0..1 Requester value is type PractitionerOrDevice // this is the intersection between DSTU 2 and STU 3. DSTU 2 allows Organization, and STU 3 allows Patient and RelatedPerson. Both allow Practitioner and Device. 1..1 Code from http://hl7.org/fhir/us/core/ValueSet/us-core-procedure-code if covered 0..* BodySite diff --git a/spec/shr_procedure_map_dstu2.txt b/spec/shr_procedure_map_dstu2.txt index 5252cb1e..3075865c 100644 --- a/spec/shr_procedure_map_dstu2.txt +++ b/spec/shr_procedure_map_dstu2.txt @@ -44,7 +44,7 @@ ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinitio Category maps to category // TODO the following is causing a crash // fix notDone to true - Reason maps to notDoneReason + Reason maps to reasonNotPerformed BodySite.BodySiteCode maps to bodySite BodySite.Laterality maps to bodySite.extension BodySite.AnatomicalDirection maps to bodySite.extension @@ -58,7 +58,7 @@ ProcedureNotPerformed maps to http://fhir.org/guides/argonaut/StructureDefinitio // FHIR is lacking a not-done status (see Gforge issue #14256) fix status to http://hl7.org/fhir/ValueSet/procedure-status#aborted // Encounter maps to context - RelatedRequest.Value maps to basedOn + RelatedRequest.Value maps to request // RelatedPlan maps to definition constrain outcome to 0..0 constrain location to 0..0 From 3a86cebc63b7810c9cd13b912e8842001751c4ea Mon Sep 17 00:00:00 2001 From: markkramerus Date: Mon, 4 Feb 2019 21:05:29 -0500 Subject: [PATCH 195/289] Small doc change --- spec/shr_core.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/shr_core.txt b/spec/shr_core.txt index e7d80355..e5ca8590 100644 --- a/spec/shr_core.txt +++ b/spec/shr_core.txt @@ -159,7 +159,7 @@ Description: "An electronic means of contacting an organization or individual." Element: Type Concept: MTH#C0332307 - Description: "The most specific code (lowest level term) describing the kind or sort of thing being represented." + Description: "A code describing the item at a greater level of detail." Value: CodeableConcept Element: Purpose From 11fcb5cbdcf0178d343f188a887372f2ca2f4025 Mon Sep 17 00:00:00 2001 From: May Terry Date: Tue, 5 Feb 2019 16:20:51 -0500 Subject: [PATCH 196/289] mCODE global webpage replacement; added TM symbol to mCODE TM is unregistered trademark. --- .DS_Store | Bin 8196 -> 8196 bytes spec/IndexFolder_Oncocore/biomarkers.html | 20 ++++++++++---------- spec/IndexFolder_Oncocore/index.html | 6 +++--- spec/IndexFolder_Oncocore/modeling.html | 4 ++-- spec/IndexFolder_Oncocore/treatment.html | 4 ++-- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.DS_Store b/.DS_Store index 55e08f13cba0471fcaa1a220e7b73deed07cf018..d51a2024f32e543a51ecb26617cfdb09f4263e24 100644 GIT binary patch delta 14 VcmZp1XmQxkCdkOJxm~c94*(`{1g8K1 delta 14 VcmZp1XmQxkCdkORxm~c94*({21gHQ2 diff --git a/spec/IndexFolder_Oncocore/biomarkers.html b/spec/IndexFolder_Oncocore/biomarkers.html index 215ae388..72613946 100644 --- a/spec/IndexFolder_Oncocore/biomarkers.html +++ b/spec/IndexFolder_Oncocore/biomarkers.html @@ -7,21 +7,21 @@

    Tumor Markers and Genomics

Tumor Markers

-

MCODE identifies a dedicated FHIR profile called TumorMarker for the identification of cancer tumor markers.

+

mCODE identifies a dedicated FHIR profile called TumorMarker for the identification of cancer tumor markers.

  • Tumor marker tests identified by their LOINC order code. The assigned TumorMarkerVS value set is also extensible to account for new LOINC version and code updates.
  • The TumorMarkerVS lists the most common tumor markers but does not further align by cancer type.

Genomics

-

MCODE focuses on cancer genomics - the study of the totality of DNA sequence and gene expression differences between tumour cells and normal host cells. It aims to understand the genetic basis of tumour cell proliferation and the evolution of the cancer genome under mutation and selection by the body environment, the immune system and therapeutic interventions (source: Nature).

-

MCODE will only include the minimal set of genetic related elements relevant to capture in an EHR to drive treatment options.

-

MCODE aligns with the Sync for Genes approach to adopting a layered-based adoption model. With MCODE's initial emphasis on a minimal set of elements to drive treatment, there is no immediate need to model and store whole sequence reads that would be sent from an NGS labs. Rather, only the relevant genetics labs test results and variant names and interpretation, noted by Sync for Genes as levels 1 and 2, would suffice. Subsequently, the MCODE implementation mapped to the observation-genetics profile as much as possible.

+

mCODE focuses on cancer genomics - the study of the totality of DNA sequence and gene expression differences between tumour cells and normal host cells. It aims to understand the genetic basis of tumour cell proliferation and the evolution of the cancer genome under mutation and selection by the body environment, the immune system and therapeutic interventions (source: Nature).

+

mCODE will only include the minimal set of genetic related elements relevant to capture in an EHR to drive treatment options.

+

mCODE aligns with the Sync for Genes approach to adopting a layered-based adoption model. With mCODE's initial emphasis on a minimal set of elements to drive treatment, there is no immediate need to model and store whole sequence reads that would be sent from an NGS labs. Rather, only the relevant genetics labs test results and variant names and interpretation, noted by Sync for Genes as levels 1 and 2, would suffice. Subsequently, the mCODE implementation mapped to the observation-genetics profile as much as possible.

Identifying Genetic Tests

-

MCODE aligns with the Genetic Test Registry (GTR) as the primary source for identifying genetic tests, assigning the relevant GTR ID to the GeneticMarkerAnalysisResult.code element.

+

mCODE aligns with the Genetic Test Registry (GTR) as the primary source for identifying genetic tests, assigning the relevant GTR ID to the GeneticMarkerAnalysisResult.code element.

-

The GeneticMarkerAnalysisResult profile does not constrain the list of genetic tests. However, we provide an extensible value set of genetic tests identifying cancer as the related condition. Terms were curated based on the following filter criteria in the GTR TestVersion data set:

+

The GeneticMarkerAnalysisResult profile provides an extensible value set of genetic tests related to cancer-linked molecular markers. The initial terms in this value set were curated based on the following filter criteria in the GTR TestVersion data:

  • A lexical query of the condition_identifiers field containing key cancer related terms like 'cancer' and 'tumor'.
  • Tests based in the United States as country of origin.
  • @@ -29,12 +29,12 @@

    Identifying Genetic Tests

  • The resulting dataset was clinically inspected to remove inappropriate tests (false positive matches like "Sudden Death Syndrome NGS Panel").
-

The GeneName element is not bound to a cancer-specific value set at this time. Nevertheless, we provide a recommended value set of cancer-related genes in the CancerGeneVS value set.

- -

The CancerGeneVS value set includes the HUGO approved symbol rather than the full representation of the Gene ID (in the format approved_symbol:identifier). This choice was pragmatic since a certain number of systems store the symbol rather than the non-semantic identifier assigned by HUGO. Nevertheless, the approved symbol for the gene is unique so it is possible to derive the identifier from the HUGO dataset if needed.

+

Additional Notes

+

The geneticsGene attribute is not bound to a cancer-specific value set at this time. Nevertheless, we provide a recommended value set of cancer-related genes in the CancerGeneVS value set.

+

The CancerGeneVS value set includes the HUGO approved symbol rather than the full representation of the Gene ID (in the format approved_symbol:identifier). This choice was pragmatic since a certain number of systems store the symbol rather than the non-semantic identifier assigned by HUGO. Nevertheless, the approved symbol for the gene is unique so it is possible to derive the identifier from the HUGO dataset if needed.

Sources of Information

-

References used in the MCODE biomarker model include:

+

References used in the mCODE biomarker model include:

  • HL7 FHIR Genomics Implementation Guidance
  • The National Center for Biotechnology Genetic Test Registry (GTR)
  • diff --git a/spec/IndexFolder_Oncocore/index.html b/spec/IndexFolder_Oncocore/index.html index 60279a9a..76fba2a3 100644 --- a/spec/IndexFolder_Oncocore/index.html +++ b/spec/IndexFolder_Oncocore/index.html @@ -1,7 +1,7 @@ -

    This is the first release of the Minimum Common Oncology Data Elements (M-CODE) implementation guide.

    +

    This is the first release of the Minimum Common Oncology Data Elements (mCODE) implementation guide.

    -

    About M-CODE

    -

    ...placeholder - stuff about ASCO, CancerLinQ and the M-CODE effort.

    +

    About mCODE ™

    +

    ...placeholder - stuff about ASCO, CancerLinQ and the mCODE effort.

    Table of Contents

    diff --git a/spec/IndexFolder_Oncocore/modeling.html b/spec/IndexFolder_Oncocore/modeling.html index 6532af27..5e02cfe6 100644 --- a/spec/IndexFolder_Oncocore/modeling.html +++ b/spec/IndexFolder_Oncocore/modeling.html @@ -1,7 +1,7 @@

    Logical Model Overview

    -

    MCODE Logical Model

    -MCODE Logical Model (STUB picture) +

    mCODE Logical Model

    +mCODE Logical Model (STUB picture)

     

    diff --git a/spec/IndexFolder_Oncocore/treatment.html b/spec/IndexFolder_Oncocore/treatment.html index 50b2dcfb..f3ac690a 100644 --- a/spec/IndexFolder_Oncocore/treatment.html +++ b/spec/IndexFolder_Oncocore/treatment.html @@ -16,13 +16,13 @@

    Procedures

  • Imaging procedures which are used for diagnostic purposes as well as image-guided surgical procedures (source: NCI).
  • Medication therapies are treatments with any substance, other than food, that is used to prevent, diagnose, treat, or relieve symptoms of a disease or abnormal condition (source: NCI).
-MCODE does not currently constrain surgical, radiation, and imaging procedures to cancer-specific therapies. Extensible value sets for each are being considered for a future release, pending further requirements from clinical subject matter experts. +mCODE does not currently constrain surgical, radiation, and imaging procedures to cancer-specific therapies. Extensible value sets for each are being considered for a future release, pending further requirements from clinical subject matter experts.

 

Medication Therapies

-

Medication therapies in MCODE are further categorized as:

+

Medication therapies in mCODE are further categorized as: