Latest: Upgrade forks and age reports. Added report for RPMS
VistA Analytics identifies the configuration and dynamic state of a VistA ("VistA being analysed"). It then compares this information against the configuration and state of a Baseline VistA. This tool should help in the VA's 10-1 effort and in code-convergence, the effort to merge 3rd party VistA's with FOIA VistA.
In contrast to analyzing a VistA based on its static source code, Analytics relies on a running VistA to know itself. Specifically, it queries that VistA for three things:
- descriptions of Packages, Builds, Installs and Routines
- files supported, their counts, schema and cross references (key logic)
- the content of Concept Definition files
For Code Convergence (VA VistA merges with Outside VistAs), it is important to distinguish the three types of difference between VistAs:
- Forks: points where system development separated. In a FOIA vs Outside VistA analysis, you'll see FOIA sporting the latest VA builds while outside systems broke off at a particular point and changed "core" code in some way. A GT.M Port is a special type of fork. Non-VA systems changed core code but did so only to allow VistA run on GT.M. These changes iron out "Cache-isms" in the VA's code base and don't effect function and should be the easiest to roll back into the VA's version of VistA.
- Age: one system has an older version of a build than another. Here, unlike a Fork, the older system didn't add to core code - it just didn't keep up with VA builds. It is important to distinguish these differences from actual forks in the code - these differences are not relevant when building a single, up to date, code base.
- Additions: here outside VistAs added whole new packages to VistA which don't change or interfere with core code.
Note: All the information gathered and analysed through Analytics could be merged with VistA source code, manifests and other documentation to provide an even fuller picture of a system. See Tom Munnecke's writeup.
To report on a VistA, Analytics uses:
- FMQL, the FileMan Query Language. FMQL's opensource implementation provides remote access to any information stored in a FileMan and to a FileMan's schema. In addition to a FileMan's schema, Analytics needs access to the contents of its concept and system files.
- The list of builds since April 2009 identified by the VA in its FOIA release directory
In the following reports, FOIA, as shipped by the VA, is used as the baseline or "ideal system". Three VistA's are compared to it: the latest OpenVistA, WorldVistA and a test system of the VA's. This approach can compare any VistA or RPMS to a baseline system.Fork vs Age
Note: Preliminary - needs to be audited against XINDEX numbers and code diffs. Reports need QA too!
Merging systems means accounting for differences but not all differences are equal - some differences are just due to age (builds out of date) while differences due to code changes (forks) require careful attention.
- [[http://www.caregraf.org/semanticvista/analytics/aForksAndAgeFOIAvsWORLDVISTA.html|FOIA vs WorldVistA]]
- [[http://www.caregraf.org/semanticvista/analytics/aForksAndAgeFOIAvsOPENVISTA.html|FOIA vs OpenVistA]]
- [[http://www.caregraf.org/semanticvista/analytics/aForksAndAgeFOIAvsVAVISTA.html|FOIA vs a VA VistA]]
- [[http://www.caregraf.org/semanticvista/analytics/aForksAndAgeFOIAvsRPMS.html|FOIA vs RPMS]]
- OpenVistA: changed (forked) 40 of 160 FOIA packages. Note that though OpenVistA has changed (forked) VA code, most of its differences are due to the age of the builds: 108 are older and of those, 68 are just old - they have no OpenVistA specific code.
- WorldVistA: changed (forked) 23 of 160 FOIA packages. The great majority of WorldVistA differences are due to the age of the builds: 106 WorldVistA packages are older than FOIA and of those 83 are just old - they have no WorldVistA specific code.
- VA VistA (test system): as expected, the VA system is more matched to FOIA. Of its four forks, some appear to be no more than pre-releases of full builds (must allow for this). Note though, that many of its builds are older than FOIA's. Another standout - it has standard VA builds not in FOIA though all were superseded.
- Note the extent of OpenVistA changes vs WorldVistA's (out of 160 packages, 40 forked vs 23). Even where both forked, OpenVistA made more changes (see list of changed routines in the Kernel). If a merge aims to account for changes for GT.M then WorldVistA is probably sufficient; if the goal is to merge VistA in the private-sector and VA VistA then the more substantial OpenVistA changes need analysis.
Here are reports showing the code differences between FOIA and WorldVistA - the routines compared were called out in the [[http://www.caregraf.org/semanticvista/analytics/aForksAndAgeFOIAvsWORLDVISTA.html|FOIA vs WorldVistA Fork/Age]] report described above.
- [[http://www.caregraf.org/semanticvista/analytics/mForksKernelWORLDVISTA.html|Kernel Forks - WorldVistA]]
- [[http://www.caregraf.org/semanticvista/analytics/mForksMPIWORLDVISTA.html|MPI Forks - WorldVistA]]
- [[http://www.caregraf.org/semanticvista/analytics/mForksRegistrationWORLDVISTA.html|Registration Forks - WorldVistA]]
Comparisons of the packages and builds of the baseline (FOIA) and other VistAs. The latest build of a given type is identified in each system - the baseline is usually more up to date. In addition, packages particular to each system are isolated.
- [[http://www.caregraf.org/semanticvista/analytics/bPackagesFOIAvsWORLDVISTA.html|FOIA vs WorldVistA]]
- [[http://www.caregraf.org/semanticvista/analytics/bPackagesFOIAvsOPENVISTA.html|FOIA vs OpenVistA]]
- [[http://www.caregraf.org/semanticvista/analytics/bPackagesFOIAvsVAVISTA.html|FOIA vs a VA VistA]]
Some highlights (more analysis to do):
- Frozen Packages: packages whose latest FOIA builds are more than two years old or which lack builds appear to be frozen/in maintenance or no longer in active use. Examples include NDBI
- OpenVistA is oldest: Of the three VistAs being analysed, OpenVistA is the least up to date.
- 'Current version' meaningless: In building package and build manifests for VistA, the VA doesn't seem to update the "current version" field. For example, 4 years of builds may separate OpenVistA from FOIA yet their packages show the same version.
- Real VistAs have many local packages/builds: VA VISTA has many local packages and builds not in FOIA or any other VistA. Such VistA-specific, class 2 and 3 software is probably in all VA VistAs.
Some issues with using FOIA as a baseline:
- FOIA has packages, builds and installs for "prohibited copyright code": in the FOIA build list, the VA lists DENT builds as "PROHIBITED FROM FOIA DUE TO COPYRIGHT" and says they are not installed. However, FOIA has all four of the latest builds, DENT*1.2*57, DENT*1.2*58, DENT*1.2*60, DENT*1.2*61 (Install: 9_7-8366) in its package, build and install files. But the latest DENT routines ARE NOT in the Routines (9.8) file, so the code must be purged after install - the VA VISTA has the same setup but isn't purged so the latest DENT routines are in its Routines file. It appears that despite its manifest, the VA installs the builds and then hacks out the routines and custom files. One file purged is the DENTAL CPT CODE MAPPING (schema:228) and deleting it leaves (hanging) references.
- TBD: more "FOIA has packages, builds and installs for "prohibited copyright code": MAG is prohibited but MAG*3.0*66 is in FOIA's package file. And the package file has later builds like MAG*3.0*104 that are missing from the VA's FOIA manifest.
- FOIA has a "controlled build" with 'wrong date': in the FOIA build list, the VA lists VBEC as "PROHIBITED - CONTROLLED RELEASE FOR VBECS". However FOIA has VBEC*1.0*10. The manifest gives its date as 2011-03-08, while FOIA has it at 2010-09-23.
- FOIA has older builds than it should: In some cases, FOIA appears to lack the latest build available at the time it was made. For example, the FOIA used here was cut in December 2011 but has a Clinical Procedures Build (MD) from 2011-01-11 even though a fresh build was available on 2011-08-15.
- OSEHRA missing packages: OSEHRA's code base is missing some FOIA packages. Examples include VISIT TRACKING (VSIT), PHARMACY (PS). Note that though the packages are in FOIA's package file, they have probably been deprecated.
The difference between the files and fields supported in the baseline (FOIA) and other VistAs. Gives file sizes too: for configuration and concept files, differences in size matters.
- [[http://www.caregraf.org/semanticvista/analytics/bFilesFOIAvsWORLDVISTA.html|FOIA vs WorldVistA]]
- [[http://www.caregraf.org/semanticvista/analytics/bFilesFOIAvsOPENVISTA.html|FOIA vs OpenVistA]]
- [[http://www.caregraf.org/semanticvista/analytics/bFilesFOIAvsVAVISTA.html|FOIA vs VA VISTA]]
Some highlights (more analysis to do):
- All other VistA's lack some files in FOIA: of 2448 FOIA files, OpenVistA lacks 138, WorldVista, 125 and VA VISTA 138. FOIA lacks some of theirs: OpenVistA adds 110, WorldVistA adds 71, VA VistA adds 108.
- OpenVistA has added the most fields to FOIA-supported files. Look at BPS/Billing (Various), Imaging (2006.1), Patient (2), New Person (200), HL7 (Various), Order (100), Pharmacy. This is to be expected: Medsphere customized VistA to interface with outside ADT, Imaging, Billing and other systems.
- WorldVistA added many fields to PATIENT IHS (900001) as well as some to BPS and New Person.
- The example VA VistA added the least number of fields but still BPS, Imaging, MAS and even radiology have fields not seen in FOIA's versions of common files.
- For VA national concept files like VA Product (50.68), FOIA has more entries than other systems because it is more up to date. OpenVistA has only 79% of FOIA's VA Product entries; WorldVistA 90%; VA VistA has 96%. OpenVistA, which has the oldest builds of all systems, also lacks newer concept files like 'TIU VHA ENTERPRISE STANDARD TITLE'
Cross references represent much of VistA's internal logic and provide efficient lookups of FileMan stored data.
- [[http://www.caregraf.org/semanticvista/analytics/bCrossRefsFOIAvsWORLDVISTA.html|FOIA vs WorldVistA]]
- [[http://www.caregraf.org/semanticvista/analytics/bCrossRefsFOIAvsOPENVISTA.html|FOIA vs OpenVistA]]
- [[http://www.caregraf.org/semanticvista/analytics/bCrossRefsFOIAvsVAVISTA.html|FOIA vs VA VISTA]]
Some highlights (more analysis to do):
- VA VistA contains the most custom/non-FOIA cross refs (49) followed by WorldVistA (24) and OpenVistA (21).
- FOIA and WorldVistA have one duplicate cross reference: AC 779.41. In OpenVistA and the VA VistA this (correctly) appears only once.
Some builds have no packages. Note: these reports are part of a set to point out inaccuracies or inadequacies in a VistA's view of itself.
- [[http://www.caregraf.org/semanticvista/analytics/bBuildsFOIAvsWORLDVISTA.html|FOIA vs WorldVistA]]
- [[http://www.caregraf.org/semanticvista/analytics/bBuildsFOIAvsOPENVISTA.html|FOIA vs OpenVistA]]
- [[http://www.caregraf.org/semanticvista/analytics/bBuildsFOIAvsVAVISTA.html|FOIA vs VA VISTA]]
- PACKAGE-BUILD...: Round out the Package-Build-Install-Routines reports. More work on "package-build-install-routine" discrepancies: how accurate and consistent is a VistA's view of itself. Example: do builds list files that aren't in the system?. Goal is a "package by package diff report" which would represent "what the system says" and should guide line-by-line code diffs. This guide should promote the Fork-vs-Age-vs-Addition split.
- Distinguish "unused" or "messy" additions/forks. WorldVistA has some RPMS merges that don't appear to be used.
- Concept File Analysis (ERT and more):
- FMQL DESCRIBE and SELECT the content of concept files. Ex/ [[http://vista.caregraf.org/rambler#!50_68|List Drug File entries]]. Note: patient data dictionaries are not of interest in a "system configuration audit".
- Concept file % of lexicon, vuid, icd/cpt coverage ex/ [[http://vista.caregraf.org/rambler#!120_83|Signs and Symptoms mapped]]
- FOIA as a better baseline: FOIA in itself needs analysis and its quirks noted and fixed. As a baseline, it should be reduced to a complete but succinct manifest definition.