Package green_ccd -- Imported from C:\lymphoma\VMR\GreenCDA\green_ccd.xsd 17/02/2011 10:21:31 PM-- refcount = 1 -- Global comments: -- items we feel are definitely needed: -- Family history related classes. Perhaps being added currently? -- potential items needed, that we believe can be ignorable for now: -- Template IDs -- Is GreenCDA itself the template? -- Is GreenCDA so simplified that templating is considered unnecessary? -- Would we generate additional class definitions for such templates? -- IDs -- clinical statement-clinical statement -- clinical statement-entity (Role) -- entity-entity -- other questions/comments: -- What are the use cases/validation cases that we should use to make sure the model is appropriate for most cases? -- Perhaps the Meaningful Use quality measures could be one. -- see http://www.qualityforum.org/News_And_Resources/Press_Releases/2011/NQF_Posts_Specifications_for_Electronic_Measures_that_will_Reward_Meaningful_Use_of_HIT.aspx and http://www.qualityforum.org/Projects/e-g/eMeasures/Electronic_Quality_Measures.aspx?section=PublicandMemberComment2011-02-012011-04-01 -- Need for Meaningful Use quality measures would be a good reason to add to the model in order to meet the use cases. -- We will be looking at ISO data types for the base data types, and how to constrain them -- Can we get more complete instance data to review? -- Generic pattern: -- items we feel are definitely needed: -- potential items needed, that we believe can be ignorable for now: -- other questions/comments: imports green_cda_narrative class addr city: String nullFlavor: nullFlavorType postalCode: String state: String streetAddressLine: String class advanceDirective comment: comment documentCustodian: organizationInformation effectiveDate: ivlTs status: ce type: type value: cd class advanceDirectives advanceDirective: Sequence(advanceDirective) text: textType class allergies allergy: Sequence(allergy) text: textType -- Completed review 4/21/2011 class allergy adverseEventDate: ivlTs adverseEventType: cd comment: comment product: Sequence(cd) reaction: Sequence(cd) severity: Sequence(cd) -- items we feel are definitely needed: -- potential items needed, that we believe can be ignorable for now: -- allergy identifier -- when obervation was made, as opposed to when reaction took place -- allergen class -- method of determining allergy (e.g., patient report, clinician verified?) -- allergy status? (e.g., resolved through desensitization?) -- other questions/comments: -- assume sequence of reaction and severity go together (e.g., 2nd reaction item corresponds to 2nd severity item). Is this true? -- do we need a separate adverse event for reactions that are not true allergies? class author authorName: pnm authorTime: ts reference: Sequence(reference) class birthPlace extends addr name: String class body advanceDirectives: advanceDirectives allergies: allergies conditions: conditions encounters: encounters immunizations: immunizations insuranceProviders: insuranceProviders medications: medications planOfCare: planOfCare pregnancies: pregnancies procedures: procedures results: results vitalSigns: vitalSigns class causeOfDeath ageAtDeath: Integer timeOfDeath: ts class cd code: String codeSystem: String codeSystemName: String displayName: String nullFlavor: nullFlavorType originalText: String qualifier: qualifier class ce extends cd -- Completed review 4/14/2011 class codedBrandName extends cd -- Completed review 4/14/2011 class codedProductName extends cd class comment reason: String text: textType class comments text: textType -- Completed review 4/14/2011 class condition ageAtOnset: Integer causeOfDeath: causeOfDeath comment: comment diagnosisPriority: Integer problemCode: cd problemDate: ivlTs problemName: String problemStatus: ce problemType: cd treatingProvider: Sequence(treatingProvider) -- items we feel are definitely needed: -- Notion that a condition was part of a particular encounter (e.g., necessary for HEDIS rules) -- Potentially could be represented as a new EncounterDiagnosis class -- ObservationDate, separate from problemDate, to note when a user indicates the person does/does not have a condition. Needed for disease registry tracking. Could potentially be represented in an alternate class, e.g., an Observation class. -- potential items needed, that we believe can be ignorable for now: -- ageAtOnset units. Could this be something like PQ or REAL instead of Integer? In pediatrics it is common to have rules that express age in time units shorter than a year, such as minutes, hours, days, weeks, or months... -- Body site. Or should we expect to have this idea embedded in the problemCode, e.g., with SNOMED and ICD10? May not really be needed in most cases. ­-- Problem determination method (e.g., lung cancer as determined by histology; diabetes as determined by fasting glucose). -- observation certainty (degree of confidence that this patient has this condition) -- Problem severity (part of CCD). Could be represented within problemCode (e.g., SNOMED for severe asthma). -- Problem importance/urgency (part of CCD?). -- Observer type (RN, MD, etc.) -- Problem classes/categories (e.g., "cardiovascular disease" from "hypertension"). Could be inferred from problem code. -- Problem modifier/qualifier (this is a generic category for a variety of items, e.g., location, body site, severity, negation, etc.). -- Modifier = changes original meaning of concept (e.g., family history of). Qualifier = provides further information about coded concept (e.g., left/right). Does not change nature/meaning of code. -- Negation of Condition should be covered by problemStatus, e.g., "Ruled out". -- Qualifier is an attribute of CD, so potentially is already partially covered for terminology (e.g., SNOMED) where qualifiers are used. -- other questions/comments: -- issue with how problemStatus relates to NegationInd in CCD? -- how to express problemStatus of "does not have", which may have different meaning from "ruled out" -- but probably could just use something like "ruled out" -- ageAtOnset --is ageAtOnset calculated or data? does it matter? --what if we have one and not the other (ageAtOnset vs problemDate ivlTs), is calculating the missing element an "inference?" or simply restructuring the data? class conditions condition: Sequence(condition) text: textType class confidentialityType Enum("N", "R", "V") class contactType comment: comment contactAddress: Sequence(addr) contactMothersMaidenName: onm contactName: Sequence(pnm) contactTelecom: Sequence(tele) relationship: relationshipType type: supportType class cs code: String class currencyType Enum("ARS", "AUD", "BRL", "CAD", "CHF", "CLF", "CNY", "DEM", "ESP", "EUR", "FIM", "FRF", "GBP", "ILS", "INR", "JPY", "KRW", "MXN", "NLG", "NZD", "PHP", "RUR", "THB", "TRL", "TWD", "USD", "ZAR") class custodian custodianID: Sequence(ii) custodianName: onm class doseRestriction denominator: pq numerator: pq -- Completed review 4/14/2011 class encounter admissionType: cd dischargeDisposition: String encounterDateTime: ivlTs encounterID: Sequence(ii) encounterProvider: Sequence(organizationInformation) encounterType: encounterType facilityLocation: facilityLocation reasonForVisit: reasonForVisit -- items we feel are definitely needed: -- potential items needed, that we believe can be ignorable for now: -- associations with other clinical statements -- other questions/comments: -- does encounter type refer to, e.g., outpatient encounter, OB/GYN encounter, etc.? class encounters encounter: Sequence(encounter) text: textType class encounterType extends cd class facilityLocation locationDuration: ivlTs class fillNumber nullFlavor: nullFlavorType value: String class fills value: String class fillStatus value: statusType -- Completed review 4/21/2011 class fulfillmentHistory dispenseDate: ivlTs dispensingPharmacyLocation: addr fillNumber: fillNumber fillStatus: fillStatus prescriptionNumber: ii provider: organizationInformation quantityDispensed: pq - Does not have days supply, but could calclate base on quantityDispensed and base medication order class greenCCD body: body header: header class guarantorInformation partyAddress: Sequence(addr) partyName: pnm partyPhone: Sequence(tele) responsibilityEffectiveDate: ivlTs class header confidentiality: cd custodian: custodian documentID: ii documentTimestamp: ts healthcareProviders: healthcareProviders informationSource: informationSource languagesSpoken: languagesSpoken personalInformation: personalInformation supports: supports title: String version: version class healthcareProvider comment: comment dateRange: ivlTs patientID: ii providerEntity: providerInformation role: cd class healthcareProviders careProvisionDateRange: ivlTs healthcareProvider: Sequence(healthcareProvider) class ii extension: String nullFlavor: nullFlavorType root: String class immunization administeredDate: ts comment: comment medicationInformation: Sequence(medicationInformation) medicationSeriesNumber: pq provider: organizationInformation reaction: Sequence(cd) refusalInd: String refusalReason: String class immunizations immunization: Sequence(immunization) text: textType -- Completed review 4/21/2011 class indication extends cd freeTextRef: String status: statusType - What do these attributes refer to? Why isn't there a coded value here for the actual indication? class informationSource author: author informationSourceName: informationSourceName class informationSourceName organizationName: onm personName: pnm relatedPersonName: pnm class InfrastructureRoot comment: comment comments: comments greenCCD: greenCCD informationSource: informationSource provider: organizationInformation qualifier: qualifier results: results class insuranceProvider comment: comment financialResponsibilityPartyType: cd guarantorInformation: Sequence(guarantorInformation) healthInsuranceType: cd healthPlanName: String memberInformation: memberInformation payer: organizationInformation resultID: ii subscriberInformation: subscriberInformation class insuranceProviders insuranceProvider: Sequence(insuranceProvider) text: textType class integer nullFlavor: nullFlavorType value: String class ivlTs center: ts high: ts low: ts nullFlavor: nullFlavorType operator: String value: String width: pq class languageSpoken languageCode: cs modeCode: ce preferenceInd: preferenceInd class languagesSpoken languageSpoken: Sequence(languageSpoken) -- Completed review 4/21/2011 class medication admissionTiming: Sequence(pivlTs) -- reviewed comment: comment -- reviewed deliveryMethod: Sequence(cd) -- reviewed dose: pq -- reviewed doseIndicator: String -- reviewed doseRestriction: doseRestriction -- reviewed fulfillmentHistory: Sequence(fulfillmentHistory) fulfillmentInstructions: String indicateMedicationStopped: ts indication: Sequence(indication) medicationInformation: Sequence(medicationInformation) -- reviewed orderInformation: Sequence(orderInformation) patientInstructions: String productForm: cd -- reviewed reaction: cd route: cd -- reviewed site: Sequence(cd) statusOfMedication: statusOfMedication typeOfMedication: typeOfMedication -- reviewed vehicle: Sequence(vehicle) -- items we feel are definitely needed: -- potential items needed, that we believe can be ignorable for now: -- what about product strength (a ratio, e.g., 5mg/ml)? It seems like in examples, it's anticipated it would be captured by the drug code semantics? -- what about delivery rate? -- dosing SIG, e.g., prn. Is this part of fulfillmentInstructions? Can this be codified at all instead of being free text? -- medication identifier -- prescriber information -- associated encounter ID -- medication class -- other questions/comments: -- is admissionTiming a type for administrationTiming? -- how does an order for 10mg of lisinopril, dispensed as 2 5mg tabs, get represented? Would this be a strength? -- with dose now being a PQ rather than an IVL_PQ, how do you represent 2-4 tabs prn? -- could we get more documentation on the meaning of doseIndicator? -- Does doseRestriction refer to the maximum doses that can be given in an interval of time? -- how do you represent q8hr and tid? Is this an admissionTiming? Could institutionSpecified be named something more intuitive, like "dosingPeriodIntervalIsImportant"? -- how do you say prn in this model? -- what is the difference between patientInstructions and fulfillmentInstructions? -- Completed review 4/14/2011 class medicationInformation codedBrandName: codedBrandName codedProductName: codedProductName drugManufacturer: organizationInformation freeTextBrandName: String freeTextProductName: String -- items we feel are definitely needed: -- potential items needed, that we believe can be ignorable for now: -- potential issues: -- -- other questions/comments: -- assume codedProduct refers to the generic product code -- why does it say "name" to refer to a code? -- why are the codedBrandName and codedProductNames extensions of cd that eliminate the possibility of originalText rather than just a cd? Why can't these attributes have original text? This is oftentimes very important for CDS, as the original text is very descriptive. Did you just move this into the free text? We would probably prefer to not have the split, with a regular cd for both. class medications medication: Sequence(medication) text: textType class memberInformation healthPlanCoverageDates: ivlTs memberID: ii patientAddress: Sequence(addr) patientDateOfBirth: ts patientName: pnm patientPhone: Sequence(tele) patientRelationshipToSubscriber: cd class mo currency: currencyType nullFlavor: nullFlavorType value: String class name extends cd originalText: String qualifier: qualifier class nullFlavorType Enum("NP", "NI", "MSK", "NA", "OTH", "NINF", "PINF", "UNK", "NASK", "TRC", "ASKU", "NAV") class onm nullFlavor: nullFlavorType -- Completed review 4/21/2011 class orderInformation fills: fills orderDateTime: ivlTs orderExpirationDateTime: ts orderNumber: ii quantityOrdered: pq class organizationInformation organizationAddress: Sequence(addr) organizationID: Sequence(ii) organizationName: onm organizationTelecom: Sequence(tele) class patientInformation personAddress: Sequence(addr) personID: ii personInformation: Sequence(personInformation) personPhone: Sequence(tele) class period unit: String value: String class personalInformation patientInformation: patientInformation class personInformation birthPlace: birthPlace ethnicity: cd gender: cd maritalStatus: Sequence(cd) personDateOfBirth: ts personName: Sequence(pnm) race: Sequence(cd) religiousAffiliation: cd class pivlTs institutionSpecified: Boolean period: period class plannedEvent planFreeText: String planId: ii plannedTime: ivlTs planType: cd class planOfCare plannedAct: plannedEvent plannedObservation: plannedEvent plannedProcedure: plannedEvent text: textType class pnm family: String given: String nullFlavor: nullFlavorType prefix: String suffix: String class pq nullFlavor: nullFlavorType unit: String value: String class preferenceInd nullFlavor: nullFlavorType value: String class pregnancies pregnancy: Sequence(pregnancy) text: textType class pregnancy extends cd comment: comment -- Completed review 4/21/2011 class procedure bodySite: cd comment: comment procedureDateTime: ivlTs procedureFreeTextType: String procedureID: Sequence(ii) procedureProvider: Sequence(organizationInformation) procedureType: procedureType -- items we feel are definitely needed: -- potential items needed, that we believe can be ignorable for now: -- procedure method -- approach site -- does body site need to have multiple cardinality? -- other questions/comments: -- can procedure modifier (e.g., bilateral) be represented as a procedureType.qualifier? class procedures procedure: Sequence(procedure) text: textType class procedureType extends cd originalText: String qualifier: qualifier class providerInformation providerAddress: addr providerID: ii providerName: pnm providerOrganizationName: onm providerTelecom: tele providerType: cd class qualifier name: name value: value -- Completed review 4/21/2011 class reasonForVisit reason: cd text: textType class reference referenceDocumentID: ii referenceDocumentURL: referenceDocumentURL class referenceDocumentURL value: String class relationshipType Enum("CHILD", "SON", "HUSB") -- Completed review 4/14/2011 class result comment: comment resultDateTime: ivlTs resultID: Sequence(ii) resultInterpretation: cd resultReferenceRange: Sequence(resultReferenceRange) resultStatus: cs resultType: cd resultValue: value -- items we feel are definitely needed: -- handling of tests that are part of a panel like Chem-7 (see note under vitalSigns) -- for results on a specific specimen, e.g., we need to be able to link all results to the same parent result with specimen -- can we get something like: components: Sequence(result), or relatedCS: sequence(clinicalStatement) under clinical statement -- potential items needed, that we believe can be ignorable for now: -- Notion that a result was part of a particular encounter -- may be needed for quality reporting purposes -- observer type, observer identifier -- general type of result (e.g., hematology, chemistry). Could be useful for specifying the general types of results needed. Equivalent to V2 OBR-24. -- specimen related information (e.g., location code, type code) -- observation note, note type (primarily for natural language processing). Probably maps to comment. -- other questions/comments: -- assume resultType refers to the actual type of result (e.g., HgbA1c). Is this correct? -- looks more like lab results than just an observation -- question about result interpretation and result reference range, which are modeled as observations within observations in CCD -- does the original CDA/CCD have multiple interpretations instead of just one? -- Completed review 4/14/2011 class resultReferenceRange -- other questions/comments: -- in the original, says that this is TBD pending discussion with Bob Dolin. -- Completed review 4/14/2011 class results result: Sequence(result) text: textType class statusOfMedication extends cd status: statusType valueType: valueType class statusType Enum("normal", "active", "cancelled", "pending", "suspended", "terminated", "nullified", "completed") class String class subscriberInformation subscriberAddress: addr subscriberDateOfBirth: ts subscriberID: ii subscriberName: pnm subscriberPhone: Sequence(tele) class support contact: Sequence(contactType) date: ivlTs guardian: contactType class supports support: Sequence(support) class supportType Enum("GUARD", "AGNT") class tele nullFlavor: nullFlavorType value: String class treatingProvider treatingProviderID: ii -- Completed review 4/21/2011 class ts nullFlavor: nullFlavorType value: String class type extends cd originalText: String qualifier: qualifier class typeOfMedication extends cd -- Completed review 4/7/2011 class value extends cd integer: integer monetaryAmount: mo originalText: String physicalQuantity: pq qualifier: qualifier -- items we feel are definitely needed: -- Date -- Date range -- Real -- PQ range -- PQ ratio -- potential items needed, that we believe can be ignorable for now: -- PQ list (e.g., SBP and DBP, if you represent this as a single Result) -- other questions/comments: -- Could we have value represented as ANY, e.g., so that it can be in itself a PQ, rather than a PQ that inherits from CD class valueType Enum("CE", "BL", "BN", "BIN", "CR", "UUID", "II", "URL", "AD", "BL", "EN", "QTY", "PQR", "RTO") class vehicle extends cd name: String class version number: String setID: ii class vitalSigns text: textType vitalSign: Sequence(result) --provides a wrapper for grouped observations about vital signs, such as BP, etc. --does not handle other nested or grouped results, such as lab panels (CBC, Chem7, etc) EndPackage