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

BPMKIDS.m

Go to the documentation of this file.
  1. BPMKIDS ;IHS/OIT/LJF - PRE INSTALL & ENVIRON CHECK
  1. ;;1.0;IHS PATIENT MERGE;;MAR 01, 2010
  1. ;Contains several subroutines written by Anne Fugatt, Phx Area Office
  1. ;
  1. CKENV ; environment check code
  1. ;Prevents "Disable Options..." and "Move Routines..." questions
  1. S XPDDIQ("XPZ1")=0,XPPDIQ("XPZ2")=0
  1. ;
  1. ;CHECKS FOR PACKAGES AND PATCHES HERE
  1. NEW PATCH S PATCH="APSP*7.0*1004"
  1. I ($O(^PSRX(0))),('$$PATCH^XPDUTL(PATCH)) D
  1. . W !,"You must first install "_PATCH_"." S XPDQUIT=2
  1. ;
  1. S PATCH="LR*5.2*1024"
  1. I ($O(^LAB(60,0))),('$$PATCH^XPDUTL(PATCH)) D
  1. . W !,"You must first install "_PATCH_"." S XPDQUIT=2
  1. ;
  1. ;IHS/OIT/ENM 02/03/2010 THE FOLLOWING CODE WAS DISABLED AND FIXED BELOW
  1. ;S PATCH="BQI*1.0*3"
  1. ;I $O(^BQICARE(0)),('$$PATCH^XPDUTL(PATCH)) D
  1. ;. W !,"You must first install "_PATCH_"." S XPDQUIT=2
  1. ;IHS/OIT/ENM 02/03/2010
  1. I $O(^BQICARE(0)),+$$VERSION^XPDUTL("BQI")<1.1 D
  1. . W !,"You must first install iCare Version 1.1 or Greater." S XPDQUIT=2
  1. Q
  1. ;
  1. PRE ;EP;
  1. ; clean out old AXDR entry in Package file
  1. NEW DA,DIK
  1. S DA=$O(^DIC(9.4,"C","AXDR",0)) Q:'DA
  1. S DIK="^DIC(9.4,"
  1. D ^DIK
  1. Q
  1. ;
  1. POST ;EP; post init subroutine
  1. D SITE,PKG,DIKZ55,CHS,DUPTEST,XPAR,OLDMRG,ZEROS,POS323
  1. Q
  1. ;
  1. SITE ;----- EDIT SITE PARAMETERS ;IHS/PHXAO/AEF
  1. ;SETS 'DAYS BEFORE FINAL VERIFY' AND 'DAYS BETWEEN VERIFY AND MERGE'
  1. ;TO ZERO IN THE DUPLICATE RESOLUTION FILE #15.1
  1. ;
  1. D BMES^XPDUTL("EDITING DUPLICATE RESOLUTION SITE PARAMETERS")
  1. ;
  1. N DA,DIE,DR,FILE,X,Y
  1. ;
  1. S FILE=0
  1. F S FILE=$O(^VA(15.1,FILE)) Q:'FILE D
  1. . S DIE="^VA(15.1,"
  1. . S DA=FILE
  1. . S DR=".13////0;.14////0;1.03///180"
  1. . D ^DIE
  1. ;
  1. Q
  1. ;
  1. PKG ;----- CLEAN UP PACKAGE FILE ;IHS/PHXAO/AEF
  1. ;
  1. D BMES^XPDUTL("CLEANING UP PACKAGE FILE...")
  1. ;
  1. ;----- CLEAN UP ENTRIES WITH MISSING ZERO NODES
  1. D BMES^XPDUTL("CLEANING UP ENTRIES WITH MISSING ZERO NODES...")
  1. N DA,DIK,IEN,X,Y
  1. S IEN=0
  1. F S IEN=$O(^DIC(9.4,IEN)) Q:'IEN D
  1. . Q:$D(^DIC(9.4,IEN,0))
  1. . S DIK="^DIC(9.4,"
  1. . S DA=IEN
  1. . D ^DIK
  1. . D BMES^XPDUTL(IEN)
  1. ;
  1. ;----- CLEAN UP AFFECTS REC0RD MERGE MULTIPLE
  1. N IEN
  1. D BMES^XPDUTL("CLEANING UP 'AFFECTS RECORD MERGE' MULTIPLE...")
  1. S IEN=0
  1. F S IEN=$O(^DIC(9.4,IEN)) Q:'IEN D
  1. . K ^DIC(9.4,IEN,20)
  1. ;
  1. ; Now clean up AMRG xref ;IHS/OIT/LJF
  1. K ^DIC(9.4,"AMRG")
  1. NEW DIK,DA S DIK="^DIC(9.4,DA(1),20,",DIK(1)=".01^AMRG"
  1. S DA(1)=0
  1. F S DA(1)=$O(^DIC(9.4,DA(1))) Q:'DA(1) D ENALL^DIK
  1. ;
  1. Q
  1. ;
  1. DIKZ55 ;----- FIXING PHARMACY PATIENT FILE #55 TO WORK WITH MERGE
  1. ; released with APSP patch 1005 but not called during install
  1. ; it also recompiles all xrefs for the file
  1. D BMES^XPDUTL("Removing duplicate xref 9999999902 in Pharmacy Patient File.")
  1. D DELIX^DDMOD(55.03,.01,999999902,"W")
  1. ;
  1. Q
  1. ;
  1. CHS ;----- REINDEX "AC" XREF ON PATIENT FIELD OF THE TRANSACTION RECORD;IHS/PAO/AEF
  1. ; SUBFIELD OF THE DOCUMENT SUBFIELD OF THE CHS FACILITY FILE
  1. ;
  1. N BPMDA1,BPMDA2,DA,DIK,X,Y
  1. ;
  1. D BMES^XPDUTL("Re-indexing the ""AC"" xref in the CHS Facility file...")
  1. ;
  1. S BPMDA2=0
  1. F S BPMDA2=$O(^ACHSF(BPMDA2)) Q:'BPMDA2 D
  1. . S BPMDA1=0
  1. . F S BPMDA1=$O(^ACHSF(BPMDA2,"D",BPMDA1)) Q:'BPMDA1 D
  1. . . S DA(1)=BPMDA1
  1. . . S DA(2)=BPMDA2
  1. . . S DIK="^ACHSF("_DA(2)_",""D"","_DA(1)_",""T"","
  1. . . S DIK(1)="2^AC"
  1. . . D ENALL^DIK
  1. Q
  1. ;
  1. DUPTEST ; stuff Duplicate Tests multiple in file 15.1
  1. ; may contain old uncertified merge calls so replacing whole subfile
  1. D BMES^XPDUTL("Updating Duplicate Tests Logic")
  1. ;
  1. NEW DA,DIK,DIC,DLAYGO,DIE,DR,X,Y,BPMN
  1. ; first delete everything in multiple
  1. S DIK="^VA(15.1,2,11,",DA(1)=2
  1. S BPMN=0 F S BPMN=$O(^VA(15.1,2,11,BPMN)) Q:'BPMN S DA=BPMN D ^DIK
  1. ;
  1. ; now add in the current logic
  1. S DIC="^VA(15.1,2,11,",DA(1)=2,DIC(0)="L",DLAYGO=15.111
  1. F BPMN=1:1:9 D
  1. . S X=$P($T(TESTS+BPMN),";;",2) K DD,DO D FILE^DICN Q:'Y
  1. . S DIE=DIC,DA=+Y
  1. . S DR=".02///"_$P($T(TESTS+BPMN),";;",3)_";.03///"_$P($T(TESTS+BPMN),";;",4)_";.04///"_$P($T(TESTS+BPMN),";;",5)
  1. . S DR=DR_";.05///"_$P($T(TESTS+BPMN),";;",6)_";.06///"_$P($T(TESTS+BPMN),";;",7)_";.07///"_$P($T(TESTS+BPMN),";;",8)
  1. . D ^DIE
  1. Q
  1. ;
  1. XPAR ; add an instance of BPM USE IHS LOGIC parameter
  1. D BMES^XPDUTL("Adding IHS parameter BPM USE IHS LOGIC")
  1. D ADD^XPAR("PKG","BPM USE IHS LOGIC",1,1)
  1. D CHG^XPAR("PKG","BPM USE IHS LOGIC",1,1)
  1. Q
  1. ;
  1. OLDMRG ; clean up databases if old merge software used
  1. ; need to add -9 nodes and remove "B" cross-references
  1. D BMES^XPDUTL("Cleaning up old patient merge entries")
  1. NEW NAME,DFN
  1. S NAME="*"
  1. F S NAME=$O(^DPT("B",NAME)) Q:NAME'["*" D
  1. . S DFN=0 F S DFN=$O(^DPT("B",NAME,DFN)) Q:'DFN D
  1. . . Q:$P($G(^DPT(DFN,0)),U,19)<1 ;not an old merge
  1. . . ;Q:$G(^DPT(DFN,-9)) ;already has -9 node
  1. . . S ^DPT(DFN,-9)=$P(^DPT(DFN,0),U,19)
  1. . . S ^AUPNPAT(DFN,-9)=^DPT(DFN,-9)
  1. . . K ^DPT("B",NAME,DFN)
  1. . . K ^AUPNPAT("B",DFN,DFN)
  1. Q
  1. ;
  1. ZEROS ; clean up globals with extra zero nodes
  1. D BMES^XPDUTL("Cleaning up extra zero nodes in RPMS globals")
  1. NEW FILE,GLB,FAC,X,NODE
  1. S FILE=1
  1. F S FILE=$O(^DIC(FILE)) Q:'FILE D
  1. . S GLB=$G(^DIC(FILE,0,"GL")) Q:GLB="" Q:GLB["^DIC"
  1. . S GLB=GLB_"0)"
  1. . ;
  1. . ; look for non-standard globals
  1. . I GLB["DUZ(2)" D Q
  1. . . S GLB=$P(GLB,"(",1)
  1. . . S FAC=0 F S FAC=$O(@GLB@(FAC)) Q:'FAC Q:'$D(^AUTTLOC(FAC,0)) D
  1. . . . S GLB=GLB_"("_FAC_",0)"
  1. . . . S X="" F S X=$O(@GLB@(X)) Q:X="" D
  1. . . . . D BMES^XPDUTL("Deleting "_$P(GLB,")",1)_","_X_")")
  1. . . . . S NODE=$P(GLB,")",1)_","_$S(X=+X:X,1:""""_X_"""")_")" K @NODE
  1. . . . S GLB=$P(GLB,"(",1)
  1. . ;
  1. . ; process normal globals
  1. . S X="" F S X=$O(@GLB@(X)) Q:X="" D
  1. . . D BMES^XPDUTL("Deleting "_$P(GLB,")",1)_","_X_")")
  1. . . S NODE=$P(GLB,")",1)_","_$S(X:X,1:""""_X_"""")_")" K @NODE
  1. Q
  1. ;
  1. POS323 ; clean out data in field .323 in file 2
  1. ;IHS does not use PERIOD OF SERVICE field but there is old data there
  1. D BMES^XPDUTL("Cleaning out old Period of Service data")
  1. NEW DFN
  1. S DFN=0 F S DFN=$O(^DPT(DFN)) Q:'DFN D
  1. . Q:$P($G(^DPT(DFN,.32)),U,3)="" ;skip if no data
  1. . S $P(^DPT(DFN,.32),U,3)="" W "."
  1. Q
  1. ;
  1. TESTS ;;
  1. ;;NAME;;1;;XDRPTN;;2;;.01;;100;;-60
  1. ;;SSN;;5;;XDRPTSSN;;2;;.09;;100;;-60
  1. ;;SEX;;10;;XDRPTSX;;2;;.02;;20;;-90
  1. ;;DATE OF DEATH;;20;;XDRPTDOD;;2;;.351;;50;;-50
  1. ;;MOTHER'S MAIDEN NAME;;25;;XDRPTMMN;;2;;.2403;;50;;-90
  1. ;;LAST SEPARATION DATE;;31;;XDRPTLSD;;2;;.327;;50;;-40
  1. ;;CLAIM NUMBER;;32;;XDRPTCLN;;2;;.313;;80;;-60
  1. ;;DATE OF BIRTH;;17;;XDRPTDOB;;2;;.03;;60;;-40
  1. ;;TRIBE OF MEMBERSHIP;;7;;BPMPTTR;;9000001;;1108;;5;;-5