SuggestedN3PairedReport1
From W3C Wiki
# Template for N3 document # Allows use of unprefixed names instead of :name style names @keywords a, has, is, of, this. @prefix : <#>. # @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. @prefix skos: <http://www.w3.org/2004/02/skos/core#>. @prefix owl: <http://www.w3.org/2002/07/owl#>. @prefix xsd: <http://www.w3.org/2001/XMLSchema#>. @prefix dc: <http://http://purl.org/dc/terms/>. @prefix foaf: <http://xmlns.com/foaf/0.1/>. @prefix vcard: <http://www.w3.org/2006/vcard/ns#>. # # Identify the document # ===================================================================== # 12345678 - MM DIAGNOSTIC DIGITAL BILAT # Patient: Mary Kay SMITH -- History #AB98765 # BILATERAL DIGITAL DIAGNOSTIC MAMMOGRAM POST LUMPECTOMY MAMMOGRAM: # 1/1/2009 # CLINICAL: 611.72 Lump Or Mass In Breast-611.72 Patient with palpable # abnormality in left breast. Post left lumpectomy. Recent MRI # demonstrated suspicious lesions in left breast. # --------------------------------------------------------------------- <> = this. # to make this more English-like, I give the document a name; "theDocument" this interprets dc:identifier "12345678"; has permanentURL <http://theHospital.com/2009/01/01/12345678>; is a MammogramReport; has foaf:topic thePatient]. # some basic information about theDocument: # - it has an identifier (this could be the hospital report number); # - it has (ideally) a permanent url; # - the genre of the report is a mammogram report; # - its topic is thePatient (see below). thePatient is a Patient; is skos:example PatientConcept; has foaf:familyName "Smith"; has foaf:givenName "Mary Kay"; has medicalRecordNumber "AB98765". theRadiologist = [a Radiologist; dc:author theDocument; foaf:name "Fred Flintstone"]. # some basic information about thePatient: # - she is a patient (member of some rdf class "Patient", about which possibly more later); # - if we can't find an appropriate rdf/owl class, we at least can say that she is a skos:example of a skos:Concept "PatientConcept" -- we should be able to find that in some (not necessarilly rdf/owl) terminology someplace!! # - we use foaf for some basic information about her name; we probably need a more rigorous demographic vocabulary for this sort of document # - we specify her medical record number, and certainly we need a good vocabulary for this theDocument has dc:title "BILATERAL DIGITAL DIAGNOSTIC MAMMOGRAM POST LUMPECTOMY MAMMOGRAM"; has dc:date "2009-01-01"^^dc:W3CDTF; has dc:subject theProcedure. theProcedure is a Procedure; is a DigitalMammogram; has target thePatient; has laterality bilateral. # how to model Clinical History is very dependent # on whether you wish to model this as Facts or as (maybe even defeasible) # assertions. # Here's the way I proposed it in the CSHALS presentation: <http://acmehospital.org/123456789> = theSource. theRadiologist foaf:name "Kenneth Kirk". <> = this. theSource is a foaf:Document; has dc:identifier "12345679"; has dc:date "2009-01-01"^^xsd:date; dc:author theRadiologist; has dc:author [foaf:name "Jenny Jones"]; has dc:publisher [foaf:name "Acme Hospital"]. this is a void:Dataset; has dc:source theSource; has dc:creator [foaf:name "John Madden"]; dc:issued "2010-12-31"^^xsd:date. this interprets theSource. theSource has grddl:result this. # end CSHALS # here is one way to do it: thePatient has theClinicalHistory. theClinicalHistory is a ClinicalHistory; = (theFinding-1, theFinding-2, theFinding-3). theFinding-1 has dc:label "LUMP OR MASS IN BREAST"; = {thePatient has finding [a breastLump]}. theFinding-2 has dc:label "palpable abnormality in left breast"; = {thePatient has finding [a Abnormality; locatedIn [a Breast; laterality left; inBody of thePatient]]}. theFinding-3 has dc:label "Post left lumpectomy"; = {thePatient has finding [a CompletedLumpectomy; laterality left]}. theFinding-4 has dc:label "Recent MRI demonstrated suspicious lesion in left breast"; = {thePatient has finding [a MRI; has result theMRIResult]}. theMRIResult = {thePatient has finding [a Lesion; inBody of thePatient; has significance suspicious]}. . # the Description is best modeled using an "on-the-fly" vocabulary aPriorMammomgram = [a MammogramReport; dated "2008-01-01"^^xsd:date; ]. aPriorBiopsy = [a UltrasoundBiopsyReport; dated "2007-01-01"^^xsd:date]. theDocument has part [= theDiagnosis; a Diagnosis; dc:author theRadiologist]. theRadiologist performs [a Comparison; between theDiagnosis, aPriorMammogram, aPriorBiopsy]. # or, theComparison is among (theDiagnosis, aPriorMammogram, aPriorBiopsy). thePatient has [a RightBreast; = theRightBreast], [a LeftBreast; = theLeftBreast]. bothBreasts = (theRightBreast, theLeftBreast). # Now it gets really interesting # do I model this as a finding, or as a fact? # also, how many findings are there in the report? 1, 2, many? # here I've modeled it as a single finding, which is shared by both breasts theRightBreast has finding someFibroglandularElements. theLeftBreast has finding someFibroglandularElements. someFibroglandularElements = [a Finding; a [a owl:Restriction; owl:onProperty refersTo; owl:minCardinality 2]]. # this is an interesting statement, in that it uses a someFibroglandularElements has qualifier scattered. # or if you want to get fancy, you could say, "the finding is of >1 fibroglandular element", something like this: # here's more from the CSHALS: # it's hard to imagine a medical document so elementary ## that it wouldn't reference at least ## two (2) non-identical entities! theMassAt9 is a Mass. theMassAt1 is a Mass. theMassAt9 owl:differentFrom theMassAt1. theSpecimen contains theMassAt9, theMassAt1. # or, saving a line # theSpecimen contains [a Mass; = theMassAt9]. # theSpecimen contains [a Mass; = theMassAt1]. # theMassAt9 owl:differentFrom theMassAt1. # in fact, you might want to collect all instances # that you define and declare an owl:AllDifferent class # [a owl:AllDifferent] owl:distinctMembers (theRadiologist, thePatient, theMassAt9, theMassAt1… ). this has foaf:topic thePatient. thePatient is a Patient. Patient is a skos:Concept. # later add whatever mapping axioms you want # (we favor using SKOS whenever possible)... Patient has skos:broader foaf:Person; has skos:closeMatch snomed:378243823, radlex:347439845, loinc:473878943. # or even add more forceful axioms # (but beware of "ontological overcommitment")... Patient is rdfs:subClassOf dc:Agent; has owl:equivalentClass gom:Patient. # these are pretty commonplace assertion types # hard to imagine much structural variation here # can pick a specific vocabulary later theMassAt9 size [dimension [val "1.2"^^xsd:float; unit cm], [val "1.3"^^xsd:float; unit cm]]. # more sketchy, depends on chosen anatomy vocabulary theMassAt9 location [a Location; in thePatient, [a Breast; laterality left], [rdfs:label "9:00"]]. # very sketchy # these are modeled loosey-goosey as value partitions # need no idea how e.g. Radlex might do this theMassAt9 shape round. theMassAt9 margin indistinct. theMassAt9 echogenicity isoechoic. # I (radiologist) am suspicious for malignancy. theRadiologist suspects [a Malignancy]. # This mammogram is suspicious for malignancy. {theMammogram shows [a Malignancy]} urw:hasUncertainty highProbability. # The findings are suspicious for malignancy. theLesion hasFeature X, Y. {theLesion hasFeature X, Y} suggests {thePatient has [a Malignancy]}. # The mass is suspicious for malignancy. theMass hasAppearance malignantAppearance. # The patient's category is Suspicious for Malignancy. thePatient diagnosticCategory SuspiciousForMalignancy. # The diagnosis is: "Suspicious for Malignancy". theDiagnosis = "Suspicious for Malignancy". # The diagnosis category is Suspicious for Malignancy. theDiagnosis has diagnosticCategory SuspiciousForMalignancy. # The report category is Suspicious for Malignancy. this has diagnosticCategory SuspiciousForMalignancy. # This patient should be managed according to the # applicable Suspicious for Malignancy protocol. # ??????? # end more from the CSHALS # ===================================================================== # INTERNAL AXIOMS: Some assertions regarding the document-only resources in # this interpretation Patient is rdf:subClassOf foaf:Person. Patient is a skos:Concept; has skos:label of "patient". MammogramReport is a foaf:Document. # ===================================================================== # BACKGROUND AXIOMS: Some assertions regarding the background knowledge # assumed by the interpreter (i.e. me, not the author)