Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ABSPOSEV

ABSPOSEV.m

Go to the documentation of this file.
  1. ABSPOSEV ; IHS/SD/lwj - Point of Sale environment checker [ 05/28/2002 10:03 AM ]
  1. ;;1.0;PHARMACY POINT OF SALE;**20,23,28,31,32,33,34,36,37,38,39,40,42,43,44**;JUN 21, 2001;Build 38
  1. ;
  1. ;IHS/SD/RLT - 3/22/07 - Patch 20
  1. ; New environment checker. Replaced ABSPOSEC.
  1. ; Added patch 1014 check for Kernel.
  1. ;
  1. ;IHS/SD/RLT - 11/21/07 - Patch 23
  1. ; Added AICD v3.51 patch 7 check.
  1. ;
  1. ; This routine is an environment checker used with the installation
  1. ; of patches of the Point of Sale software.
  1. ; It will check for the following RPMS packages, their version
  1. ; and patch numbers before allowing the user to continue
  1. ; with the installation of patch 1 for Point of Sale:
  1. ;
  1. ; Fileman (DI) v21
  1. ; Kernel (XU) v8.0 patch 1014
  1. ; IHS Patient Dictionaries (AUPN) V99.1
  1. ; IHS Dictionary Pointers (AUT) V98.1 patch 8
  1. ; Outpatient Pharmacy (PSO) V6.0 patch 4
  1. ; Pharmacy Point of Sale (ABSP) V1.0
  1. ; Patient Registration (AG) V7.1 patch 1
  1. ; IHS ICD/CPT LOOKUP & GRPR (AICD) V3.51 patch 7
  1. ;
  1. ; (XPDQUIT will be set to 2 if the above mention packages are not
  1. ; at the require version and patch level. 2 indicates that
  1. ; the KIDS install will abort the installation, but will leave the
  1. ; ^XTMP global in place.)
  1. ;
  1. ;
  1. CHECK ;EP - called from Kids install routine
  1. ; First let's make sure they have DUZ(0) defined, and greet the user
  1. ;
  1. N ABSPMSG
  1. S ABSPMSG=""
  1. I '$G(DUZ) S ABSPMSG="DUZ UNDEFINED OR 0." D SORRY(ABSPMSG,2) Q
  1. I '$L($G(DUZ(0))) S ABSPMSG="DUZ(0) UNDEFINED OR NULL." D SORRY(ABSPMSG,2) Q
  1. ;
  1. N ABSPERS
  1. S ABSPERS=$P($G(^VA(200,DUZ,0)),U)
  1. W !!,$$CJ^XLFSTR("Hello, "_$P(ABSPERS,",",2)_" "_$P(ABSPERS,","),IOM)
  1. ;IHS/OIT/SCR - 09/22/08 Patch 28 ; replaced line
  1. ;W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **26**.",IOM),!
  1. ;W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **28**.",IOM),!
  1. ;W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **30**.",IOM),!
  1. ;W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **31**.",IOM),!
  1. ;W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **32**.",IOM),!
  1. ;W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **33**.",IOM),!
  1. ;W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **34**.",IOM),!
  1. ;W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **36**.",IOM),!
  1. ;W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **37**.",IOM),!
  1. ;W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **38**.",IOM),!
  1. ;W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **39**.",IOM),!
  1. ;W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **40**.",IOM),!
  1. ;W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **42**.",IOM),!
  1. ;W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **43**.",IOM),!
  1. W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" Ver: "_$P($T(+2),";",3)_" Patch: **44**.",IOM),!
  1. ;
  1. ; Suppress the "Disable Options..." and "Move Routines..." install questions
  1. S (XPDDIQ("XPZ1"),XPDDIQ("XPZ2"))=0
  1. ;
  1. ; check versions and patch if needed
  1. ;
  1. N ABSPSTOP
  1. S ABSPSTOP=0
  1. D VCHK("DI","21.0") ;Fileman
  1. D VPCHK("XU","8.0",1014) ;Kernel
  1. D VCHK("AUPN","99.1") ;IHS Patient Dictionaries
  1. ;D VCHK("AUT","98.1") ;IHS Dictionary Pointers ;IHS/OIT/CNI/SCR 042810 patch 39 replaced with line below
  1. D VPCHK("AUT","98.1",23) ;IHS Dictionary Pointers aut_9810.23k
  1. ;D SVPCHK("PSO","6.0",3) ;Outpatient Pharmacy
  1. D VCHK("ABSP","1.0") ;Pharmacy Point of Sale
  1. ;D VPCHK("AG","7.1",1) ;Patient Registration ;IHS/OIT/SCR 09/22/08 Patch 28: replaced line below
  1. ;D VPCHK("AG","7.1",2) ;Patient Registration
  1. D VPCHK("AG","7.1",10) ;Patient Registration ;OIT/CAS/RCS 07052012 - Patch 44 Update to latest A/R - HEAT #75114
  1. D VPCHK("AICD","3.51",7) ;IHS ICD/CPT LOOKUP & GRPR
  1. D VPCHK("APSP","7.0",1008) ;IHS PHARMACY MODIFICATIONS ;IHS/OIT/SCR 011210 PATCH 36
  1. ;IHS/OIT/SCR 09/23/08 PATCH 28 START CHANGES
  1. ;I ($$VERSION^XPDUTL("ABM")="2.5") D ;IHS/OIT/CNI/SCR 042810 Patch 39: replaced with 2 lines below
  1. ;D VCHK("ABM","2.6")
  1. I ($$VERSION^XPDUTL("ABM")="2.6") D
  1. .;D VPCHK("ABM","2.5",15)
  1. .D VPCHK("ABM","2.6",1)
  1. ;IHS Third Party Billing
  1. ;I $$VERSION^XPDUTL("BAR") '= "" D VCHK("BAR","1.8") -- IHS Accounts Receivable
  1. ;IHS/OIT/SCR 09/23/08 PATCH 28 END CHANGES
  1. W !!
  1. I ABSPSTOP=1 D Q
  1. . S ABSPMSG="You cannot continue, your environment does NOT meet all requirements."
  1. . D SORRY(ABSPMSG,2)
  1. Q
  1. ;
  1. VCHK(ABSPPRE,ABSPVER) ; Check version only
  1. ;
  1. N ABSPV
  1. S ABSPV=$$VERSION^XPDUTL(ABSPPRE)
  1. W !,"Required ",ABSPPRE," V",ABSPVER,?29
  1. W "... Present ",ABSPPRE," V",ABSPV
  1. I ABSPV<ABSPVER D Q
  1. . S ABSPSTOP=1
  1. . W ?65,"*** ERROR ***"
  1. W ?65,"OK"
  1. Q
  1. ;
  1. VPCHK(ABSPPRE,ABSPVER,ABSPPTCH) ; Check version and patch
  1. ;
  1. N ABSPV,ABSPP,ABSPIEN,ABSPPKG,ABSPLAST
  1. S ABSPV=$$VERSION^XPDUTL(ABSPPRE)
  1. S ABSPP=$$PATCH^XPDUTL(ABSPPRE_"*"_ABSPVER_"*"_ABSPPTCH)
  1. S ABSPIEN=$O(^DIC(9.4,"C",ABSPPRE,""))
  1. S ABSPPKG=$P($G(^DIC(9.4,ABSPIEN,0)),U)
  1. S ABSPLAST=$P($$LAST(ABSPPKG),U)
  1. W !,"Required ",ABSPPRE," V",ABSPVER," Patch ",ABSPPTCH,?29
  1. W "... Present ",ABSPPRE," V",ABSPV," Patch ",ABSPLAST
  1. I ABSPV<ABSPVER!(ABSPP'=1) D Q
  1. . S ABSPSTOP=1
  1. . W ?65,"*** ERROR ***"
  1. W ?65,"OK"
  1. Q
  1. ;
  1. SVPCHK(ABSPPRE,ABSPVER,ABSPPTCH) ;Special version and patch check for PSO
  1. ;
  1. N ABSPV,ABSPP,ABSPIEN,ABSPPKG,ABSPLAST
  1. S ABSPV=$$VERSION^XPDUTL(ABSPPRE)
  1. S ABSPP=$$PATCH^XPDUTL(ABSPPRE_"*"_ABSPVER_"*"_ABSPPTCH)
  1. I ABSPVER'>"6.0"&(ABSPPTCH'>3) D
  1. . S X="APSQUTL" X ^%ZOSF("TEST") ;check for Patch 3
  1. . S:$T ABSPP=1 ;found Patch 3
  1. S ABSPIEN=$O(^DIC(9.4,"C",ABSPPRE,""))
  1. S ABSPPKG=$P($G(^DIC(9.4,ABSPIEN,0)),U)
  1. S ABSPLAST=$P($$LAST(ABSPPKG),U)
  1. W !,"Required ",ABSPPRE," V",ABSPVER," Patch ",ABSPPTCH,?29
  1. W "... Present ",ABSPPRE," V",ABSPV," Patch ",ABSPLAST
  1. ;(current version < required version) or
  1. ; (required patch not found and last patch < required patch)
  1. I ABSPV<ABSPVER!((ABSPP'=1)&(ABSPLAST<ABSPPTCH)) D Q
  1. . S ABSPSTOP=1
  1. . W ?65,"*** ERROR ***"
  1. W ?65,"OK"
  1. Q
  1. ;
  1. LAST(PKG,VER) ;returns last patch applied for a Package, PATCH^DATE
  1. ; Patch includes Seq # if Released
  1. N PKGIEN,VERIEN,LATEST,PATCH,SUBIEN,PATCHDT
  1. I $G(VER)="" S VER=$$VERSION^XPDUTL(PKG) Q:'VER -1
  1. S PKGIEN=$O(^DIC(9.4,"B",PKG,"")) Q:'PKGIEN -1
  1. S VERIEN=$O(^DIC(9.4,PKGIEN,22,"B",VER,"")) Q:'VERIEN -1
  1. S LATEST=-1,PATCH=-1,SUBIEN=0
  1. F S SUBIEN=$O(^DIC(9.4,PKGIEN,22,VERIEN,"PAH",SUBIEN)) Q:SUBIEN'>0 D
  1. . S PATCHDT=$P(^DIC(9.4,PKGIEN,22,VERIEN,"PAH",SUBIEN,0),U,2)
  1. . S PATCHNO=$P(^DIC(9.4,PKGIEN,22,VERIEN,"PAH",SUBIEN,0),U)
  1. . I PATCHDT=LATEST&(PATCHNO>PATCH) D
  1. .. S LATEST=PATCHDT,PATCH=PATCHNO
  1. . I PATCHDT>LATEST D
  1. .. S LATEST=PATCHDT,PATCH=PATCHNO
  1. Q PATCH_U_LATEST
  1. ;
  1. SORRY(ABSPMSG,ABSPQUIT) ; let the user know we didn't have what we needed
  1. ;
  1. N ABSPV
  1. K DIFQ
  1. S XPDQUIT=$G(ABSPQUIT)
  1. W !,$$CJ^XLFSTR($G(ABSPMSG),IOM)
  1. W *7,!,$$CJ^XLFSTR("Sorry.....",IOM)
  1. Q:$D(ZTQUEUED)
  1. S ABSPV=$$DIR^XBDIR("E","Press RETURN")
  1. Q