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

DG53461.m

Go to the documentation of this file.
  1. DG53461 ;ALB/AEG - DG*5.3*461 POST-INSTALLATION ;7-2-2002
  1. ;;5.3;Registration;**461,1015**;Aug 13, 1993;Build 21
  1. ;
  1. ; This cleanup consists of 1 issue dealing with duplicate
  1. ; CD (Catestropic Disability) Procedure Codes. The patient
  1. ; File (#2) will be searched for entries on living patients
  1. ; who have multiple entries associated with the same procedure
  1. ; and extremity.
  1. ;
  1. EN ; Main Entry Point.
  1. D INIT
  1. Q
  1. INIT ; Initialize Tracking Global and associated checkpoints.
  1. K ^TMP($J),^XTMP("DG-DFN"),^XTMP("DG-P1")
  1. N %,I,X,X1,X2
  1. ; Create Checkpoints.
  1. I $D(XPDNM) D
  1. .I $$VERCP^XPDUTL("DFN")'>0 D
  1. ..S %=$$NEWCP^XPDUTL("DFN","",0)
  1. .I $$VERCP^XPDUTL("P1")'>0 D
  1. ..S %=$$NEWCP^XPDUTL("P1","",0)
  1. ; Initialize the tracking global.
  1. F I="DFN","P1" D
  1. .I $D(^XTMP("DG-"_I)) Q
  1. .S X1=DT,X2=30 D C^%DTC
  1. .S ^XTMP("DG-"_I,0)=X_U_$$DT^XLFDT_"^DG*5.3*461 POST INSTALL "
  1. .S ^XTMP("DG-"_I,0)=^XTMP("DG-"_I,0)_$S(I="DFN":"Patient records",I="P1":"Duplicate Procedures",1:"errors")
  1. I '$D(XPDNM) D
  1. .S ^XTMP("DG-DFN",1)=0
  1. .S ^XTMP("DG-P1",1)=0
  1. ;
  1. ; Check status. If root checkpoint has not completed start the cleanup
  1. I $D(XPDNM) S %=$$VERCP^XPDUTL("DFN") D
  1. .I '$D(^XTMP("DG-DFN",1)) S ^XTMP("DG-DFN",1)=0
  1. .I '$D(^XTMP("DG-P1",1)) S ^XTMP("DG-P1",1)=0
  1. I $G(%)="" S %=0
  1. I %=0 D EN1
  1. Q
  1. ;
  1. EN1 ; Control process flow from this point forward.
  1. D LOOP,DUPL,PURGE
  1. N %
  1. ; Complete checkpoints and get out.
  1. S %=$$COMCP^XPDUTL("DFN"),%=$$COMCP^XPDUTL("P1")
  1. D CLEAN
  1. Q
  1. LOOP ; Initial Pass through the patient file to determine which records have
  1. ; corrupted data.
  1. D BMES^XPDUTL("POST INSTALLATION PROCESSING")
  1. D MES^XPDUTL("----------------------------")
  1. N MESS D MESS^DG53461U D MES^XPDUTL(.MESS)
  1. N DFN,DGCNT,DGDOD
  1. D BMES^XPDUTL("SEARCH ENGINE STARTED AT "_$$FMTE^XLFDT($$NOW^XLFDT))
  1. I '$D(ZTQUEUED) D MES^XPDUTL("Each `.` represents 200 records ...")
  1. S DFN=0 F DGCNT=1:1 S DFN=$O(^DPT(DFN)) Q:'+DFN D
  1. .I '$D(ZTQUEUED) W:'(DGCNT#200) "."
  1. .S DGDOD=$P($G(^DPT(DFN,.35)),U)
  1. .; Ignore patients who have a date of death on file.
  1. .D:'+DGDOD
  1. ..I $D(^DPT(DFN,.397,0)),$P(^DPT(DFN,.397,0),U,4)>0 D
  1. ...N PIEN,P1,I
  1. ...S PIEN="" F S PIEN=$O(^DPT(DFN,.397,"B",PIEN)) Q:'+PIEN S P1="" F S P1=$O(^DPT(DFN,.397,"B",PIEN,P1)) Q:'+P1 D
  1. ....D SETTMP(DFN,P1)
  1. ....; Update Checkpoint
  1. ....N %
  1. ....I $D(XPDNM) S %=$$UPCP^XPDUTL("P1",P1)
  1. ....Q
  1. ...Q
  1. ..Q
  1. .; Update DFN CheckPoint
  1. .N %
  1. .I $D(XPDNM) S %=$$UPCP^XPDUTL("DFN",DFN)
  1. .Q
  1. Q
  1. ;
  1. SETTMP(DFN,P1) ; Return data value of specific entry being looked at
  1. S ^TMP($J,"DFN",DFN)=$P($G(^DPT(DFN,.397,0)),U,4)
  1. S ^TMP($J,"PCODE",DFN,P1)=$G(^DPT(DFN,.397,P1,0))
  1. Q
  1. DUPL ; Clean-up Duplicate Entries.
  1. D BMES^XPDUTL("PARSING DATA TO LOCATE DUPLICATE ENTRIES ...")
  1. N DFN,COUNT,I,IJ,VAL,VAL1
  1. S DFN=""
  1. F S DFN=$O(^TMP($J,"DFN",DFN)) Q:'+DFN D
  1. .S COUNT=$G(^TMP($J,"DFN",DFN))
  1. .F I=1:1:COUNT S VAL=$G(^TMP($J,"PCODE",DFN,I)) F IJ=1:1:COUNT S VAL1=$G(^TMP($J,"PCODE",DFN,IJ)) D
  1. ..I I'=IJ,'$D(^UTILITY("SCRATCH",$J,DFN,IJ,I)) S ^UTILITY("SCRATCH",$J,DFN,I,IJ)=COUNT
  1. ..I VAL=VAL1,I'=IJ,'$D(^UTILITY("SCRATCH",$J,DFN,IJ,I)) D
  1. ...I I>IJ S ^TMP("DUPLICATE",$J,DFN,I)=VAL,^UTILITY($J,"DUP",$P($G(^DPT(DFN,0)),U,1),DFN,VAL)=""
  1. ...I IJ>I S ^TMP("DUPLICATE",$J,DFN,IJ)=VAL1,^UTILITY($J,"DUP",$P($G(^DPT(DFN,0)),U,1),DFN,VAL1)=""
  1. ...Q
  1. ..Q
  1. .Q
  1. K ^TMP($J),^UTILITY("SCRATCH",$J)
  1. Q
  1. PURGE ; Cleanup duplicate CD procedures and report on those procedures.
  1. I '$D(^TMP("DUPLICATE",$J)) D Q
  1. .D M1^DG53461U
  1. I $D(^TMP("DUPLICATE",$J)) D
  1. .D BMES^XPDUTL("PURGING DUPLICATE ENTRIES ...")
  1. .N DFN,PIEN,VAL
  1. .S (DFN,PIEN)=""
  1. .F S DFN=$O(^TMP("DUPLICATE",$J,DFN)) Q:'+DFN D
  1. ..S PIEN="" F S PIEN=$O(^TMP("DUPLICATE",$J,DFN,PIEN)) Q:'+PIEN D
  1. ...N DATA,DGENDA
  1. ...S DATA(.01)="@",DGENDA=PIEN,DGENDA(1)=DFN
  1. ...I '$$UPD^DGENDBS(2.397,.DGENDA,.DATA,.ERROR) D
  1. ....S ^TMP("ERROR",$J,DFN,ERROR)=""
  1. ....K ^UTILITY($J,"DUP",$P($G(^DPT(DFN,0)),U,1))
  1. ....Q
  1. ...Q
  1. ..Q
  1. .Q
  1. I $D(^UTILITY($J,"DUP")) D M2^DG53461U
  1. I $D(^TMP("ERROR",$J)) D M3^DG53461U
  1. Q
  1. CLEAN ; Cleanup symbol table / temp globals and get out.
  1. K ^TMP($J),^UTILITY($J),^XTMP("DG-DFN"),^XTMP("DG-P1")
  1. K MESS,XMZ,ZTQUEUED,ERROR
  1. Q