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

ACDCNV.m

Go to the documentation of this file.
  1. ACDCNV ;IHS/ADC/EDE/KML - CONVERT CS 3TO4, 4TO3; [ 07/06/1999 4:22 PM ]
  1. ;;4.1;CHEMICAL DEPENDENCY MIS;**2**;MAY 11, 1998
  1. ; Modified for Y2k compliance IHS/DSD/HJT 6/22/1999
  1. ;
  1. ; This routine converts CS visits from v3 to v4 style, and from
  1. ; v4 to v3 style, depending on the passed parameter.
  1. ;
  1. EP(ACDDIR) ;EP
  1. ; acddir determines direction of conversion. 3=v3tov4, 4=v4tov3
  1. D INIT
  1. Q:ACDQ
  1. D CONVERT
  1. D EOJ
  1. Q
  1. ;
  1. INIT ; INITIALIZATION
  1. D ^XBKVAR
  1. S ACDQ=1
  1. S ACDDIR=$G(ACDDIR)
  1. I ACDDIR'=+ACDDIR D INITERR Q
  1. I "34"'[ACDDIR D INITERR Q
  1. K ^TMP("ACD",$J)
  1. D ^ACD
  1. S ACDHV=$O(^ACDVIS("A"),-1)
  1. S $P(^ACDVIS(0),U,3)=ACDHV
  1. S ACDQ=0
  1. Q
  1. ;
  1. INITERR ; PARAMETER ERROR
  1. W !,"Invalid parameter!",!,*7
  1. Q
  1. ;
  1. CONVERT ; CONVERT VISITS
  1. W !,"Converting visits "
  1. S ACDCTR=0
  1. S ACDVIEN=0
  1. F S ACDVIEN=$O(^ACDVIS(ACDVIEN)) Q:'ACDVIEN!(ACDVIEN>ACDHV) I $D(^ACDVIS(ACDVIEN,0)) S ACDVIS=^(0) I $P(ACDVIS,U,4)="CS" D CONVERT2
  1. Q
  1. ;
  1. CONVERT2 ; CONVERT ONE CS VISIT
  1. S ACDCTR=ACDCTR+1
  1. W:'(ACDCTR#100) "."
  1. S ACDVDT=$P(ACDVIS,U) ; visit date cyymmdd
  1. S ACDVDT5=$E(ACDVDT,1,5) ; visit date cyymm
  1. S ACDVDAY=+$E(ACDVDT,6,7) ; visit day of the month
  1. S ACDCOMPC=$P(ACDVIS,U,2) ; component code ien
  1. S ACDPAT=$P(ACDVIS,U,5) ; patient ien
  1. S ACDCOMPT=$P(ACDVIS,U,7) ; component type
  1. S ACDBWP=$P($G(^ACDVIS(ACDVIEN,"BWP")),U) ; program back pointer
  1. D @("CONVERT"_ACDDIR)
  1. Q
  1. ;
  1. CONVERT3 ; CONVERT V3 TO V4 (this label used in indirect do)
  1. S ACDFV=0
  1. I '$D(^TMP("ACD",$J,ACDBWP,ACDPAT,ACDCOMPC,ACDCOMPT,ACDVDT5)) D FIXVSIT
  1. S ACDVTOV=^TMP("ACD",$J,ACDBWP,ACDPAT,ACDCOMPC,ACDCOMPT,ACDVDT5)
  1. S ACDCSIEN=0
  1. F S ACDCSIEN=$O(^ACDCS("C",ACDVIEN,ACDCSIEN)) Q:'ACDCSIEN D FIXCS
  1. Q:ACDFV ; quit if first visit for month
  1. S DIK="^ACDVIS(",DA=ACDVIEN D DIK^ACDFMC
  1. Q
  1. ;
  1. FIXVSIT ; FIX VISIT .01 FIELD
  1. S ^TMP("ACD",$J,ACDBWP,ACDPAT,ACDCOMPC,ACDCOMPT,ACDVDT5)=ACDVIEN
  1. Q:$E(ACDVDT,6,7)="00" ; visit already v4 style
  1. ;Begin Y2k fix IHS/DSD/HJT 6/22/1999
  1. ; The date in this DIE string is sent through %DT without restrictions.
  1. ; if, i.e. "10-00" (Oct 2000) is entered it will not evaluate properly
  1. ;S DIE="^ACDVIS(",DA=ACDVIEN,DR=".01///"_$E(ACDVDT,4,5)_"-"_$E(ACDVDT,2,3)
  1. ;%DT will require a 4-digit year in order to work properly...
  1. S DIE="^ACDVIS(",DA=ACDVIEN,DR=".01///"_$E(ACDVDT,4,5)_"-"_($E(ACDVDT,1,3)+1700) ;Y2000
  1. ;End Y2k fix
  1. D DIE^ACDFMC
  1. S ACDFV=1
  1. Q
  1. ;
  1. FIXCS ; SET .01 FIELD OF CS AND REPOINT
  1. S DR=""
  1. S:$E(ACDVDT,6,7)'="00" DR=".01///"_ACDVDAY_";"
  1. S DR=DR_"99.99////"_ACDVTOV
  1. S DIE="^ACDCS(",DA=ACDCSIEN
  1. D DIE^ACDFMC
  1. Q
  1. ;
  1. CONVERT4 ; CONVERT V4 TO V3 (this label used in indirect do)
  1. Q:$E(ACDVDT,6,7)'="00" ; visit already v3 style
  1. K ^TMP("ACD",$J,"CS DAY")
  1. S ACDCSIEN=0
  1. F S ACDCSIEN=$O(^ACDCS("C",ACDVIEN,ACDCSIEN)) Q:'ACDCSIEN I $D(^ACDCS(ACDCSIEN,0)) S X=^(0),^TMP("ACD",$J,"CS DAY",$P(X,U),ACDCSIEN)=""
  1. S ACDCSDAY=0
  1. F S ACDCSDAY=$O(^TMP("ACD",$J,"CS DAY",ACDCSDAY)) Q:'ACDCSDAY D GENVSIT,REPOINT
  1. S DIK="^ACDVIS(",DA=ACDVIEN D DIK^ACDFMC ; delete 00 day CS visit
  1. Q
  1. ;
  1. GENVSIT ; GENERATE NEW VISIT
  1. S X=ACDVDT5_$S($L(ACDCSDAY)=1:"0",1:"")_ACDCSDAY
  1. S DIC="^ACDVIS(",DIC("DR")="",DIC(0)="L",DLAYGO=9002172.1
  1. D FILE^ACDFMC
  1. S ACDNVIEN=+Y
  1. S %X="^ACDVIS("_ACDVIEN_","
  1. S %Y="^ACDVIS("_ACDNVIEN_","
  1. D %XY^%RCR
  1. S X=ACDVDT5_$S($L(ACDCSDAY)=1:"0",1:"")_ACDCSDAY
  1. S $P(^ACDVIS(ACDNVIEN,0),U)=X
  1. S DIK="^ACDVIS(",DA=ACDNVIEN D IX1^DIK
  1. Q
  1. ;
  1. REPOINT ; REPOINT CS TO NEW VISIT
  1. S ACDCSIEN=0
  1. F S ACDCSIEN=$O(^TMP("ACD",$J,"CS DAY",ACDCSDAY,ACDCSIEN)) Q:'ACDCSIEN D
  1. . S DIE="^ACDCS(",DA=ACDCSIEN,DR="99.99////"_ACDNVIEN
  1. . D DIE^ACDFMC
  1. . Q
  1. Q
  1. ;
  1. EOJ ;
  1. K ^TMP("ACD",$J)
  1. D ^ACDKILL
  1. Q