gcpr near-term solution system design review
DESCRIPTION
GCPR Near-Term Solution System Design Review. John Leslie PRC Health Informatics Systems & Services Chief Architect GCPR Project. Purpose/Scope. - PowerPoint PPT PresentationTRANSCRIPT
GCPR Near-Term Solution System Design Review
John Leslie
PRC Health Informatics Systems & Services
Chief Architect GCPR Project
Purpose/Scope
• The purpose is to pass certain medical records on a select group of Department of Defense (DoD) patients through the GCPR Framework to the Veterans Affairs (VA) to be used by the VA's clinicians who will read the records using the VA's CPRS. This will achieve partial fulfillment of Presidential Review Directive 5 (PRD 5).
• The scope is to provide a bridging network between Agency Systems. The information, which is to be exchanged, is defined in a number of “Partitions” which are defined by the Information Model.
Real Scope NTS
• Discharged/Retired only
• Batch messaging HL7 v2.2
• Limited set of information
Information View• RIM/RTM
– Initial delivery as GFI December ‘00
– UML
• Clinical Records in “Templates”– Describe structure of data exposed by Framework
– Represented internally as Graphs
– NTS Templates• Laboratory (Chem, Micro, AP, BB)
• Radiology Reports
• Outpatient Medications
• Person Identity – Positively Identify Persons
– Locate Clinical Record
GCPR NTS Datatypes
NumericValue
<<Optional>> + units : QualifiedCode+ value : float
(from rimlibrary)
Range
<<Optional>> + units : QualifiedCode+ lower : float+ upper : float
(from rimlibrary)
Ratio
+ numerator : float+ denominator : float
(from rimlibrary)
MediatedCode
+ preMediatedValue : QualifiedCode<<Optional>> + prePreferredText : char+ postMediatedValue : QualifiedCode<<Optional>> + postpreferredtext : char+ mediationFailureType : QualifiedCode<<Optional>> + coding_scheme_id : CodingSchemeId<<Optional>> + version_id : VersionID
DomainValue
+ absent : boolean+ reason : ReasonCode
TimeDelta
+ delta : float+ units : QualifiedCode
(from rimlibrary)PlainText
+ value : String<<Optional>> + language : QualifiedCode
(from rimlibrary)
AuthorityID
+ authority : RegistrationAuthority+ naming_entity : NamingEntity
(from rimlibrary)
Curve
<<Optional>> + xUnits : QualifiedCode<<Optional>> + yUnits : QualifiedCode
(from rimlibrary)
XYPair
+ x : float+ y : float
(from rimlibrary)
+values
Multimedia
+ content_type : String+ other_mime_header_fields : String+ blob : Octet_seq+ total_size : long
(from rimlibrary)
TechnologyInstanceLocator
+ protocol : QualifiedCode+ address : char
(from rimlibrary)
DateTime
+ value : TimeStamp<<Optional>> + relationalOperator : QualifiedCode<<Optional>> + accuracy : NumericValue<<Optional>> + accuracyContext : QualifiedCode<<Optional>> + accuracyUnit : QualifiedCode
(from rimlibrary)
ValueSeq
(from rimlibrary)
TimeSeriesMeasurement
<<Optional>> + value_units : QualifiedCode+ sample_period : TimeDelta+ values : ValueSeq+ total_size : long
(from rimlibrary)
Octet_seq(from rimlibrary)
Short_seq(from rimlibrary)
Long_seq(from rimlibrary)
Float_seq(from rimlibrary)
Double_seq(from rimlibrary)
Boolean(from rimlibrary)
<<Datatype>>
NumericMeasurement
+ value : NumericValue<<Optional>> + relationalOperator : QualifiedCode<<Optional>> + precision : float
(from rimlibrary)
RangeMeasurement
+ value : Range<<Optional>> + lowerRelationalOperator : QualifiedCode<<Optional>> + upperRelationalOperator : QualifiedCode<<Optional>> + logicalOperator : QualifiedCode
(from rimlibrary)
RatioMeasurement
+ value : Ratio<<Optional>> + relationalOperator : QualifiedCode<<Optional>> + precision : float
(from rimlibrary)
QualifiedCode
+ coding_scheme_id : CodingSchemeId+ a_code : ConceptCode
(from rimlibrary)
CodingSchemeId(from rimlibrary)
DomainName(from rimlibrary)
ObservedSubjectID(from rimlibrary)
LocalName(from rimlibrary)
<<Datatype>>
NamingEntity(from rimlibrary)
<<Datatype>>
TimeStamp(from rimlibrary)
<<Datatype>>
PersonID(from rimlibrary)
<<Datatype>>
UniversalResourceIdentifier
(from rimlibrary)
QualifiedName
+ authority_id : AuthorityID+ local_name : LocalName
(from rimlibrary)
ConceptCode(from rimlibrary)
<<Datatype>>
VersionID(from rimlibrary)
NTS Lab TemplateGCPR Lab COAS Template ModelVersion 2.03 - 05/15/2001
ChemistryObservation
+ deviation : CodedElement+ isCriticalResult : Boolean+ isSignificantChange : Boolean+ rangeResult : RangeMeasurement+ referenceRange : Range+ textReferenceRange : PlainText
(from LabVersion0203Draft)
NumericObservation
+ numericResult : NumericMeasurement
(from MiscInScopeVersion0104Draft)CodedObservation
+ codedResult : CodedElement
(from MiscInScopeVersion0104Draft)
TextObservation
+ textResult : PlainText<<Optional>> + units : QualifiedCode
(from MiscInScopeVersion0104Draft)
Amendment
+ category : CodedElement+ comments : PlainText
(from MiscInScopeVersion0104Draft)
ClinicalEvent
/+ isAmended : boolean+ reason : CodedElement+ comments : PlainText
(from MiscInScopeVersion0104Draft)
<<Act>>
0..1+amendment0..1
1
+amendingVersion
1
BloodBankObservation
(from LabVersion0203Draft)AnatomicPathologyObs
(from LabVersion0203Draft)ObservationReport
+ ful lText : PlainText
(from LabVersion0203Draft)
ClinicalEventAct
+ codedComments : CodedElement+ dateTime : DateTime+ textComments : PlainText+ id : PlainText
(from MiscInScopeVersion0104Draft)
<<Act>>
Reception<<Act>>
Collection
collectionMethod : CodedElement
<<Act>>
PersonName
+ prefix : PlainText+ givenName : PlainText+ middleName : PlainText+ familyName : PlainText+ suffix : PlainText+ nickName : PlainText+ dateRange : TimeSpan+ motherMaidenName : PlainText
(from PersonVersion0105Draft)
Location
+ locationId : CodedElement
(from MiscInScopeVersion0104Draft)
<<Place>>
0..1+location0..1<<Qualifier>>
LabProfileTemplateVersion0203
- patientId : QualifiedPersonID- templateName : QualifiedName = LabProfi leTemplateVersion0203- origination : QualifiedName- dateTime : T imeStamp
Specimen
+ id : PlainText+ specimenType : CodedElement+ bodySite : CodedElement
(from MiscInScopeVersion0104Draft)
<<Role>>
0..1+reception 0..10..1+collection
0..1
<<Qualifier>>
Workload
+ procedure : CodedElement+ CPTcode : CodedElement+ CPTModifier : PlainText+ CPTStatus : CodedElement+ dateModified : DateTime+ collectionDateTime : DateTime
(from LabVersion0203Draft)
<<Act>>
QualifiedName
+ authority_id : AuthorityID+ local_name : LocalName
(from GCPRDatatypesVersion0200)
PersonIdentity
+ birthDateTime : DateTime
(from PersonVersion0105Draft)
<<EntityID>>
1
+legalName
1
0..n+driverLicense
0..n0..1+socialSecurity
0..1
Entry<<Act>>
Request<<Act>>
Performance<<Act>>
Organization
+ codedID : CodedElement
(from PersonVersion0105Draft)
<<EntityID>>1
+owner
1
<<Qualifier>>
Interpretation<<Act>>
Transcription<<Act>>
ObservationResult
+ sequence : NumericValue
(from MiscInScopeVersion0104Draft)
TestPerformed
+ name : CodedElement+ notes : PlainText+ resultPriority : CodedElement+ resultStatus : CodedElement+ specialInterestComments : PlainText
(from LabVersion0203Draft)
<<Event>>
0..n+performance
0..n
<<Qualifier>>
TestOrdered
+ name : CodedElement+ referralType : CodedElement+ testPriority : CodedElement+ startDate : DateTime+ testStatus : CodedElement+ duration : NumericMeasurement+ interval : PlainText+ effective : TimeSpan
(from LabVersion0203Draft)
<<Order>>
0..1
+testOrdered
0..1
<<Composite>>
0..n
+specimen
0..n<<Composite>>
0..n
+workload
0..n
<<Composite>>
0..n
+entry
0..n
<<Qualifier>>
0..1+request 0..1
<<Qualifier>>
0..1+fi l ling
0..1
<<Qualifier>>
0..n
+testPerformed
0..n
<<Composite>>
Practitioner
+ deaNumber : PlainText
(from PersonVersion0105Draft)
<<Role>>
0..n
+localID
0..n
1
+as_practitioner +player
1
0..1+dataEntryPerson 0..1
<<Qualifier>>
0..1+author
0..1
<<Qualifier>>
0..1
+performer
0..1
<<Qualifier>>
0..1
+assistant
0..1
<<Qualifier>>
0..1
+employer
0..1
<<Qualifier>>
0..1
+performer
0..1
<<Qualifier>>
0..1
+assistant
0..1
<<Qualifier>>
0..1 +dataEntryPerson0..1
<<Qualifier>>
ObservationEvent
+ characteristicObserved : CodedElement+ observationStatus : CodedElement+ sensitivity : CodedElement
(from MiscInScopeVersion0104Draft)
<<Event>>
0..n
+interpretation
0..n
<<Qualifier>>
0..1
+transcription
0..1
<<Qualifier>>
1+observationResult
1
<<Composite>>
0..n
+testResult
0..n
<<Composite>>
Verification<<Act>>
0..n+verification
0..n
<<Qualifier>>
0..1
+verifier
0..1
<<Qualifier>>
0..1+supervisor 0..1<<Qualifier>>
0..1
+verification
0..1
AntibioticSensitivityObs
+ antibioticSensitivity : PlainText+ antibioticName : CodedElement+ interpretation : CodedElement+ serumBactericidalConcentration : RatioMeasurement+ serumInhibitoryConcentration : RatioMeasurement
(from LabVersion0203Draft)
MicrobiologyObservation
+ description : PlainText
(from LabVersion0203Draft)
0..n+antibioticSensitivity0..n
<<Composite>>
NTS Rad TemplateGCPR Rad Template Version 0101 - 05/09/2001
RadiologyReport
+ bodySite : CodedElement
(from LabVersion0203Draft)
Amendment
+ category : CodedElement+ comments : PlainText
(from MiscInScopeVersion0104Draft)
ClinicalEvent
/+ isAmended : boolean+ reason : CodedElement+ comments : PlainText
(from MiscInScopeVersion0104Draft)
<<Act>>
0..1+amendment
0..1
1
+amendingVersion
1
NumericObservation
+ numericResult : NumericMeasurement
(from MiscInScopeVersion0104Draft)
CodedObservation
+ codedResult : CodedElement
(from MiscInScopeVersion0104Draft)
TextObservation
+ textResult : PlainText<<Optional>> + units : QualifiedCode
(from MiscInScopeVersion0104Draft)
ClinicalEventAct
+ codedComments : CodedElement+ dateTime : DateTime+ textComments : PlainText+ id : PlainText
(from MiscInScopeVersion0104Draft)
<<Act>>
PersonName
+ prefix : PlainText+ givenName : PlainText+ middleName : PlainText+ familyName : PlainText+ suffix : PlainText+ nickName : PlainText+ dateRange : T imeSpan+ motherMaidenName : PlainText
(from PersonVersion0105Draft)
Location
+ locationId : CodedElement
(from MiscInScopeVersion0104Draft)
<<Place>>
0..1 +location0..1
<<Qualifier>>
QualifiedName
+ authority_id : AuthorityID+ local_name : LocalName
(from GCPRDatatypesVersion0200)
PersonIdentity
+ birthDateTime : DateTime
(from PersonVersion0105Draft)
<<EntityID>>
1
+legalName
1
0..n
+driverLicense
0..n0..1
+socialSecurity
0..1
Organization
+ codedID : CodedElement
(from PersonVersion0105Draft)
<<EntityID>>1
+owner
1
<<Qualifier>>
RadTemplateVersion0101
+ patientId : QualifiedPersonID+ templateName : QualifiedName = RadTemplateVersion0101+ origination : QualifiedName+ dateTime : TimeStamp
<<Root>>
Entry
<<Act>>
Request
<<Act>>
Workload
+ procedure : CodedElement+ CPTcode : CodedElement+ CPTModifier : PlainText+ CPTStatus : CodedElement+ dateModified : DateTime+ collectionDateTime : DateTime
(from LabVersion0203Draft)
<<Act>>
Practitioner
+ deaNumber : PlainText
(from PersonVersion0105Draft)
<<Role>>
0..n
+localID
0..n
1
+as_practitioner +player
1
0..1 +employer0..1<<Qualifier>>
0..1
+dataEntryPerson
0..1
<<Qualifier>>
0..1
+author
0..1
<<Qualifier>>
Performance
<<Act>>
0..1
+performer
0..1
<<Qualifier>>
0..1
+assistant
0..1
<<Qualifier>>
TestOrdered
+ name : CodedElement+ referralType : CodedElement+ testPriority : CodedElement+ startDate : DateTime+ testStatus : CodedElement+ duration : NumericMeasurement+ interval : PlainText+ effective : T imeSpan
(from LabVersion0203Draft)
<<Order>>
0..1+testOrdered 0..1
0..n+entry0..n
<<Qualifier>>
0..1 +request0..1
<<Qualifier>>
0..1+fi l l ing
0..1
<<Qualifier>>
0..n
+workload
0..n
<<Composite>>
Interpretation
<<Act>>
0..1
+performer
0..1
<<Qualifier>>
0..1
+assistant
0..1
<<Qualifier>>
Transcription
<<Act>>
0..1
+dataEntryPerson
0..1
<<Qualifier>>
ObservationResult
+ sequence : NumericValue
(from MiscInScopeVersion0104Draft)
Verification
<<Act>>
0..1
+verifier
0..1
<<Qualifier>>
0..1
+supervisor
0..1
<<Qualifier>>
0..n+verification
0..n
<<Qualifier>>
TestPerformed
+ name : CodedElement+ notes : PlainText+ resultPriority : CodedElement+ resultStatus : CodedElement+ specialInterestComments : PlainText
(from LabVersion0203Draft)
<<Event>>
0..n
+performance
0..n
<<Qualifier>>
0..n
+testPerformed
0..n
<<Composite>> ObservationEvent
+ characteristicObserved : CodedElement+ observationStatus : CodedElement+ sensitivity : CodedElement
(from MiscInScopeVersion0104Draft)
<<Event>>
0..n
+interpretation
0..n
<<Qualifier>>
0..1
+transcription
0..1
<<Qualifier>>
1
+observationResult
1
<<Composite>>
0..1
+verification
0..1
0..n
+testResult
0..n
<<Composite>>
ObservationReport
+ fullText : PlainText
(from LabVersion0203Draft)
NTS Meds TemplateGCPR Medication Prof ile COAS Template ModelVersion 2.03 - 05/15/2001
ClinicalEvent
/+ isAmended : boolean+ reason : CodedElement+ comments : PlainText
(from MiscInScopeVersion0104Draft)
<<Act>>
Amendment
+ category : CodedElement+ comments : PlainText
(f rom MiscInScopeVersion0104Draf t)
1
+amendingVersion
1
0..1
+amendment
0..1
ClinicalEventAct
+ codedComments : CodedElement+ dateTime : DateTime+ textComments : PlainText+ id : PlainText
(from MiscInScopeVersion0104Draft)
<<Act>>
CodedElement
+ a_qualif ied_code : Qualif iedCode<<Optional>> + pref erred_text : String
(f rom GCPRDataty pesVersion0200)
PersonName
+ pref ix : PlainText+ giv enName : PlainText+ middleName : PlainText+ f amily Name : PlainText+ suf f ix : PlainText+ nickName : PlainText+ dateRange : TimeSpan+ motherMaidenName : PlainText
(f rom PersonVersion0105Draf t)
Location
+ locationId : CodedElement
(f rom MiscInScopeVersion0104Draf t)
<<Place>>
0..1+location
0..1
<<Qualif ier>>
MedProf ileTemplateVersion0203
+ patientId : Qualif iedPersonID+ templateName : Qualif iedName = MedProf ileTemplateVersion0203+ origination : Qualif iedName+ dateTime : TimeStamp
<<Root>>
Medication
(f rom MedProf ileVersion0203Draf t)
<<entity >>
0..1
+localIdenf if ier
0..1
<<Qualif ier>>
0..1+standardIdentif ier
0..1
<<Qualif ier>>
Qualif iedName
+ authority _id : Authority ID+ local_name : LocalName
(f rom GCPRDataty pesVersion0200)
PersonIdentity
+ birthDateTime : DateTime
(f rom PersonVersion0105Draf t)
<<Entity ID>>
1
+legalName
1
0..n
+driv erLicense
0..n 0..1
+socialSecurity
0..1
Entry
(f rom MiscInScopeVersion0104Draf t)
<<Act>>
Request
(f rom MiscInScopeVersion0104Draf t)
<<Act>>
Organization
+ codedID : CodedElement
(f rom PersonVersion0105Draf t)
<<Entity ID>>
1
+owner
1
<<Qualif ier>>
MedicationOrder
+ id : PlainText+ dispensingInstructions : PlainText+ expireDateTime : DateTime+ f requency : PlainText+ instructionsForUse : PlainText+ intendedDuration : PlainText+ lastRef illDate : DateTime+ numberOf Ref illsAuthorized : NumericValue+ numberOf Ref illsRmng : NumericValue+ orderCategory : CodedElement+ orderedRoute : CodedElement+ orderStatus : CodedElement+ requestedDispenseAmount : NumericValue+ requestedDosageForm : CodedElement+ requestedGiv eAmountMaximum : NumericValue+ requestedGiv eAmountMinimum : NumericValue+ startDateTime : DateTime+ stopDateTime : DateTime
(f rom MedProf ileVersion0203Draf t)
0..1+medicationOrder
0..1
<<Composite>>
1
+orderedDrug
1
<<Composite>>
0..1+entry 0..1 0..1+request 0..1
Practitioner
+ deaNumber : PlainText
(f rom PersonVersion0105Draf t)
<<Role>>
0..n+localID0..n
1
+as_practitioner +play er
1
0..1+dataEntry Person
0..1
<<Qualif ier>>
0..1
+author
0..1
<<Qualif ier>>
0..1+employ er 0..1
<<Qualif ier>>
DispenseEv ent
+ dispenseMode : CodedElement+ prescriptionId : PlainText+ quantity : NumericValue+ wasPatientCounselled : Boolean
(f rom MedProf ileVersion0203Draf t)
0..n
+orderDispense
0..n
<<Composite>>
Perf ormance
(f rom MiscInScopeVersion0104Draf t)
<<Act>>
0..1
+perf ormer
0..1
<<Qualif ier>>
0..n+perf ormance
0..n
Graph
• Generic structure based on meta-classes
• ‘Normalized’ representation inside Framework
• Based on RIM
• Each Graph represents records
Graph
DomainValue
absent : booleanreason : ReasonC...
Attribute
attrnamevalue : DomainValue
QualifiedName
authority_id : AuthorityIDlocal_name : LocalName
0..n+sensitivity
0..n
Graph
/ graphType : TemplateTypeoperation : Operationmode : ModeoriginatingSystem : QualifiedNamerecordTime : DateTime
Graph()setOperation/Mode()
0..n
+sensitivity
0..n
/Sensitivities
Instance
/ classType
0..n
+attribute
0..n
0..n
+sensitivity
0..n
1
0..n
+root1
0..n
1..n
0..n
+node1..n
0..n
Link
/ roleNAme : String
0..n
+out
0..n
+in
+edge
OR
RIMAttribute
attrnametype
Template
templateType : TemplateType
RIMAssociation
RIMClass
classType
0..n0..n
1
+root
1
RIMValueType
RIMAssociationEnd
roleNamemultriplicitynavigable
2..22..2
0..n
1
0..n
1
+edgeOR
GCPR NTS ArchitectureGCPR Near-term Solution Architecture
DOD Domain
VA Domain
Distributed : OC
VA Cache : Cache
VA PersonResolver : HPR
VA FrameworkCOAS : FC
A Server : VistA
B Server : VistA
VA CacheWrapper : CW
CrossDomain
X Person Resolver : XPR
X CacheWrapper : CW
X Cache : Cache
Consolidator : CHCS
Sysytem 1 : CHCS
System 2 : CHCS
System 3 : CHCS
X Cross Index : XPI
DoD Person Resolver : HPR
DoD Cache Wrapper : CW
DoD Cache : Cache
DoD HPI : MPI
DoD ftp Server : IE
This is a VistA server with COAS gateway and Remote Data Views capabili ties
CHCS Inbound Processor : Adapter
Austin VA : MPI
non-captive MPI behavior
VA Primary One : VistA
VA Vista Facil ity : OC
X Distributed : OC
VA NC PIDS : FP
NTS HL7 Add/Update New Patient ADT (A28, A30, A31)GCPR Near-term Architecture
DOD Domain
VA Domain
VA PersonResolv er : HPRAustin VA :
MPI
VA Host : VistA
VA FrameworkCOAS : FC
A Serv er : VistA
B Serv er : VistA VA CacheWrapper :
CW
CrossDomain
X Person Resolv er : XPR
Consolidator : CHCS
Sysy tem 1 : CHCS
X Cross Index : XPI
DoD Person Resolv er : HPR
DoD Cache Wrapper : CW
DoD Cache : Cache
DoD HPI : MPI
DoD f tp Serv er : IE
This is a VistA serv er with COAS gateway and Remote Data Views capabilities
CHCS ADT Processor : PA
may return a graph if getNext is called
since getGraphs() was called it is probable that y ou will want to see the graph in the collection so a getNext would be called
VA Cache : Cache
this is the trigger to update the CMOR will. It will be inn a separate thread.
f ind_candidates is really a select on a psuedo MPI database. It should be programmed to f ind exact match only . No f uzzy matches or weighting will be supported with psuedo MPI. Inv estigate using VA algorithm
12: f ind_candidates( )
13: candidate
19: add patient
20: ok
21: update CMOR
22: ok
23: update TFL
24: ok
9: f ind_candidates
10: not f ound15: f ind_or_register_ids
16: id seq
11: getGraphs()
14: graph
2: f tp HL7 f ile ADT & ORU
1: f tp HL7 f ile
8: addGraphs(SET)
17: graph
4: f ind_candidates
5: not f ound
6: register_new_ids
7: id seq
3: addGraphs(SET)18: retrun
NTS VA Add/Update New PatientGCPR Near-term Archtecture
DOD Domain
VA Domain
VA Observ ationCollector : OC VA Cache :
Cache
VA PersonResolv er : HPR
VA Primary One : VistA
VA FrameworkCOAS : FC
A Serv er : VistA
B Serv er : VistA
VA CacheWrapper : CW
CrossDomain
X Person Resolv er : XPR
X CacheWrapper : CW
Consolidator : CHCS
Sy sy tem 1 : CHCS
Sy stem 2 : CHCS
Sy stem 3 : CHCS
X Cross Index : XPI
DoD Person Resolv er : HPR
DoD Cache Wrapper : CW
DoD Cache : Cache
DoD HPI : MPI
DoD f tp Serv er : IE
This is a VistA serv er with COAS gateway and Remote Data Views capabilities
CHCS Inbound Processor : Adapter
Austin VA : MPI
non-captiv e MPI behav ior beginning TBD
X Cache : Cache
a null string f or the id will be returned if not added at the XPI. This would indicate the person was not matched.
VA NC PIDS : FP
this wrksf or NC and does not f ollow the FP pattern
VA Distributed : OC
X Distributed : OC
4: addGraph(SET)
13: graph
15: add patient
16: ok
1: add new patient (A28?)
2: retrun ICN (A31)
17: update CMOR
18: ok
19: update TFL
20: ok
5: f ind_candidates
6: not f ound11: f ind_or_register_ids
12: id seq
7: getGraphs()
10: graph
8: f ind_candidates( )
9: candidate
3: f ind_or_register_ids()
14: id seq
NTS HL7 Add/Update New Patient Records ORUGCPR Near-term Architecture
DOD Domain
VA Domain
VA PersonResolver : HPR
Austin VA : MPI
VA Primary Host : VistA
VA FrameworkCOAS : FCA Server :
VistA
B Server : VistA
VA CacheWrapper : CW
CrossDomain
X Person Resolver : XPR
Consolidator : CHCS
Sysytem 1 : CHCS
X Cross Index : XPI
DoD Person Resolver : HPR
DoD Cache Wrapper : CW
DoD Cache : Cache
DoD HPI : MPI
DoD ftp Server : IE
This is a VistA server with COAS gateway and Remote Data Views capabilities
CHCS ORU Processor : RA
may return a graph if getNext is called
Distributed : OC
X Dist : CW
X Distributed : OC
12: find_candidates( )
13: candidate
9: find_candidates
10: not found15: find_or_register_ids
16: id seq
11: addGraphs(GET)
14: graph
2: ftp HL7 file ADT & ORU
1: ftp HL7 file
8: addGraphs(SET)
17: graph
4: find_candidates
5: not found
6: register_new_ids
7: id seq
20: insert21: done
3: addGraphs(SET)18: graph
19: addGraphs(SET)
22: retrun
NTS HL7 Add/Update Existing Patient Records ORUGCPR Near-term Architecture
DOD Domain
VA Domain
VA ObservationCollector : OC
VA Cache : Cache
VA PersonResolver : HPRAustin VA :
MPI
VA FrameworkCOAS : FC
A Server : VistAB Server :
VistA
VA CacheWrapper : CW
CrossDomain
X Person Resolver : XPR
X CacheWrapper : CW
X Cache : Cache
Consolidator : CHCS
Sysytem 1 : CHCS
System 2 : CHCS
System 3 : CHCS
X Cross Index : XPI
DoD Person Resolver : HPR
DoD Cache Wrapper : CW
DoD Cache : Cache
DoD HPI : MPI
VA Person Adapter : PA
DoD ftp Server : IE
VA Interface Engine : IE
This is a VistA server with COAS gateway and Remote Data Views capabilities
CHCS1 ORU Processor : RA
no change to traits
getNext retruns graph; the cleanest way to do this would be to handle the ID demographics then deal with records like 2 separate steps or messages
VA Host : VistA
2: ftp HL7 file ADT & ORU
1: ftp HL7 file
4: find_candidates( )
5: candidate
8: insert 9: done
3: addGraphs(SET) 6: graph w/DoD Domain Id
7: addGraphs(SET)10: retrun
NTS Deliver Patient RecordsGCPR Near-term Architecture
DOD Domain
VA Domain
VA Observ ationCollector : OC
VA Cache : Cache
VA PersonResolv er : HPR
Austin VA : MPI
VA serv er Nashv ille : VistA
VA FrameworkCOAS : FC
VA Primary One : VistA
B Serv er : VistA
VA CacheWrapper : CW
CrossDomain
X Person Resolv er : XPR
X CacheWrapper : CW
X Cache : Cache
CHCS Records Adapter : Adapter
Consolidator : CHCS
Sy sy tem 1 : CHCS
Sy stem 2 : CHCS
Sy stem 3 : CHCS
X Cross Index : XPI
DoD Person Resolv er : HPR
DoD Cache Wrapper : CW
DoD Cache : Cache
DoD HPI : MPI
DoD f tp Serv er : IE
VA Framework PIDS : FP
uses ICN as who which is the id used f or the Cache
DistributedCache : OC
must indicate get_corresponding_ids
X Distributed Cache : OC
CW recognizes that he is up to date since ev ery thing is a realtime push. Whether or not we look in th MPI to f igure this out is TBD.
only called if need to f ind the correlated id (i.e the id used in the Cache)
4: get_corresponding_ids( )
5: id seq
2: getSelected
31: graphs
1: get_observ ations_by ( )
32: observ ations
3: getSelected(mtf ID)
6: graph
9: retriev e(ICN)
26: addGraphs(SET)
7: select( )
8: not f ound
27: insert28: done
29: select
30: rows
12: get_corresponding_ids
13: id seq
11: getSelected14: graph
15: retriev e(DoDId)
24: addGraphs(SET)
18: get_corresponding_ids
19: id seq
21: select( )
22: rows
17: getSelected
20: graph
10: getSelected(ICN)
25: graphs
16: getSelected(DoDId)
23: graphs
transformer
• Adapters/Connectors– Connectors provide support protocol (ie ftp, IIOP)
– Adapters components translate from one representation to another (ie HL7 to RIM)
• Graphs/GraphCollections/GraphCollectionMgr– ‘Generic’ internal representation of RIM
– Independent of underlying persistence
– IGraphcollection (CacheGraphCollection, PersonGraphCollection)
Normalized RIM, Reference Terminology and Privacy Controls (ADI)
HL7 2.3Adapter
HL7 v3XML
(future)
PIDSAdapter
COASAdapter
SQLAdapter
HL7 v2.2
Adapter
IIOP ODBC CHCSftp
IIOP/CORBA
MLLP/HL7
IIOP/CORBA
HTTP(future)
MPICOASServer
DoDVA
IHS
Connectors
Adapters
Transformer
COASAdapter
IIOP
PIDSAdapter
Graph
DomainValue
absent : booleanreason : ReasonC...
Attribute
attrnamevalue : DomainValue
QualifiedName
authority_id : AuthorityIDlocal_name : LocalName
0..n+sensitivity
0..n
Graph
/ graphType : TemplateTypeoperation : Operationmode : ModeoriginatingSystem : QualifiedNamerecordTime : DateTime
Graph()setOperation/Mode()
0..n
+sensitivity
0..n
/Sensitivities
Instance
/ classType
0..n
+attribute
0..n
0..n
+sensitivity
0..n
1
0..n
+root1
0..n
1..n
0..n
+node1..n
0..n
Link
/ roleNAme : String
0..n
+out
0..n
+in
+edge
OR
RIMAttribute
attrnametype
Template
templateType : TemplateType
RIMAssociation
RIMClass
classType
0..n0..n
1
+root
1
RIMValueType
RIMAssociationEnd
roleNamemultriplicitynavigable
2..22..2
0..n
1
0..n
1
+edgeOR
GraphCollectionsIGraphCollection
+ getSelected(criteria : Selector, attrCriteria : AttributeSelector)+ getNext() : Graph+ getNext(n : int) : Graph[]+ addGraphs(graphs : Graph[]) : boolean+ getGraph(graph : Graph) : Graph+ mergeGraphs(oldGraph : Graph, preferedGraph : Graph) : boolean+ commit()+ rollback()+ done()
GraphCollection
- nodeType : NodeType
GraphCollection()
CacheGraphCollection(from cachewrapper)
DistClinicalGraphCollection(from observationcollector)
PersonGraphCollection
- nodeName : String- candidateBuffer : Vector
(from personresolver)
PidsPersonGraphCollection
- orb : ORB
(from personresolver)
SqlPersonGraphCollection
- connection : Connection
(from personresolver)
GraphCollectionMgr
+ getInstance()+ registerNameService()+ findGraphCollection()+ createGraphCollection()
<<Singleton>>
GraphCollectionMgr (local)
Client Local : GraphCol lectionMgr
: CacheGraphCol lection
: PidsPersonGraphCollection
: SqlPersonGraphCol lection
createGraphCollection(sessionID, subCollection, srcNode, targetNode, autocommit)
findGraphCollection(nodename)
return IGraphCollection
CacheGraphCol lection(Selector, GraphType, hostNode)
new PidsPersonGraphCollection(hostNode, cal lingNode, autoCommit)
new SqlPersonGraphCol lection(hostNode, call ingNode, autoCommit)
if CLINICAL
if PERSON
depends on Domain Type
GraphCollectionMgr (remote)
Client Local Domain : GraphCol lectionMgr
: GraphCol lectionProxyNameService Remote Domain : GraphCol lectionMgr
createGraphCollection(sessionID, subCollection, srcNode, targetNode, autocommit)
findGraphCollection(nodename)
new GraphCollectionProxy
query
bind
createGraphCollection(sessionID, subCollection, srcNode, targetNode, autocommit)
retrun GraphCol lectionProxy
return IGraphCollection
Current Status
• Loading files
• Beta testing– San Diego
– Alaska
– El Paso
– Washington DC
• Support/minor enhancements
Future
• More robust set of info– Adverse Reactions– Discharge Summaries– Etc...
Questions?