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

ACD4P1P.m

Go to the documentation of this file.
  1. ACD4P1P ;IHS/ADC/EDE/KML - POST-INIT CONVERSIONS FOR V4.1;
  1. ;;4.1;CHEMICAL DEPENDENCY MIS;;MAY 11, 1998
  1. ;
  1. START ;
  1. W !!,"Beginning the post-init routine ",$T(+0)
  1. W !!,"Installing Protocols..." D ^ACDONIT
  1. W !!,"Installing List templates..." D ^ACDL
  1. I $D(^TMP("ACD",$J,"VIRGIN INSTALL")) W !!,"Virgin install so post-init not necessary.",! K ^TMP("ACD",$J) Q
  1. I '$G(DUZ)!($G(DUZ(0))'["@") W !!,"Either DUZ is not set or you do not have programmer access. I don't",!,"know how you got here but I cannot run this post-int routine.",!! Q
  1. D PGMFIX ; kill most program data
  1. D VXREFS ; kill CDMIS VISIT xrefs
  1. D SERVICE ; convert CDMIS SERVICE file
  1. D LOCATION ; convert CDMIS LOCATION file
  1. D COMPONEN ; convert CDMIS COMPONENT file
  1. D REPOINT ; repoint data files
  1. D TOBACCO ; fix tobacco debacle
  1. D PROBS ; delete problems
  1. D FILE200 ; convert file 6 ptrs to file 200 ptrs
  1. D GBLKILL ; kill file gbls to be restored
  1. D EOJ
  1. Q
  1. ;
  1. PGMFIX ; DELETE PROGRAM DATA
  1. S ACDPGM=0
  1. F S ACDPGM=$O(^ACDF5PI(ACDPGM)) Q:'ACDPGM D
  1. . S ACDN11=$G(^ACDF5PI(ACDPGM,11))
  1. . S DIK="^ACDF5PI(",DA=ACDPGM
  1. . D DIK^ACDFMC
  1. . S DIC="^ACDF5PI(",X="`"_ACDPGM,DIC(0)="LQ",DLAYGO=9002173
  1. . D DIC^ACDFMC
  1. . Q:ACDN11=""
  1. . S ^ACDF5PI(ACDPGM,11)=ACDN11
  1. . Q
  1. Q
  1. ;
  1. VXREFS ; KILL CDMIS VISIT XREFS
  1. K ^ACDVIS("E")
  1. K ^ACDVIS("F")
  1. K ^ACDVIS("G")
  1. K ^ACDVIS("H")
  1. Q
  1. ;
  1. SERVICE ; DELETE CDMIS SERVICE TP AND TPR
  1. W !!,"Now converting your CDMIS SERVICE file."
  1. S ACDSIEN("TP")=$O(^ACDSERV("C","TP",0))
  1. I ACDSIEN("TP") S DIK="^ACDSERV(",DA=ACDSIEN("TP") D DIK^ACDFMC W "."
  1. S ACDSIEN("TPR")=$O(^ACDSERV("C","TPR",0))
  1. I ACDSIEN("TPR") S DIK="^ACDSERV(",DA=ACDSIEN("TPR") D DIK^ACDFMC W "."
  1. S ACDSIEN("OTH")=$O(^ACDSERV("C","OTH",0))
  1. Q
  1. ;
  1. LOCATION ; DELETE CDMIS LOCATION SCHOOL-*
  1. W !!,"Now converting your CDMIS LOCATION file."
  1. ; school-pre-headstart
  1. S ACDLIEN("11")=$O(^ACDLOT("C","11",0))
  1. I ACDLIEN("11") S DIK="^ACDLOT(",DA=ACDLIEN("11") D DIK^ACDFMC W "."
  1. ; school-primary
  1. S ACDLIEN("12")=$O(^ACDLOT("C","12",0))
  1. I ACDLIEN("12") S DIK="^ACDLOT(",DA=ACDLIEN("12") D DIK^ACDFMC W "."
  1. ; school-secondary
  1. S ACDLIEN("13")=$O(^ACDLOT("C","13",0))
  1. I ACDLIEN("13") S DIK="^ACDLOT(",DA=ACDLIEN("13") D DIK^ACDFMC W "."
  1. ; school-post secondary
  1. S ACDLIEN("14")=$O(^ACDLOT("C","14",0))
  1. I ACDLIEN("14") S DIK="^ACDLOT(",DA=ACDLIEN("14") D DIK^ACDFMC W "."
  1. ; school
  1. S ACDLIEN("1")=$O(^ACDLOT("C","1",0))
  1. Q
  1. ;
  1. COMPONEN ; DELETE CDMIS COMPONENETS LARGE, SMALL, & SPECL DROP IN
  1. W !!,"Now converting your CDMIS COMPONENT file."
  1. S ACDCIEN("LARGE DROP IN")=$O(^ACDCOMP("B","LARGE DROP IN",0))
  1. I ACDCIEN("LARGE DROP IN") S DIK="^ACDCOMP(",DA=ACDCIEN("LARGE DROP IN") D DIK^ACDFMC W "."
  1. S ACDCIEN("SMALL DROP IN")=$O(^ACDCOMP("B","SMALL DROP IN",0))
  1. I ACDCIEN("SMALL DROP IN") S DIK="^ACDCOMP(",DA=ACDCIEN("SMALL DROP IN") D DIK^ACDFMC W "."
  1. S ACDCIEN("SPECL DROP IN")=$O(^ACDCOMP("B","SPECL DROP IN",0))
  1. I ACDCIEN("SPECL DROP IN") S DIK="^ACDCOMP(",DA=ACDCIEN("SPECL DROP IN") D DIK^ACDFMC W "."
  1. S ACDCIEN("DROP IN CENTER")=$O(^ACDCOMP("B","DROP IN CENTER",0))
  1. Q
  1. ;
  1. REPOINT ; REPOINT DATA FILES
  1. W !!,"Now repointing files that point to the CDMIS COMPONENT file."
  1. S ACDGBL="^ACDIIF(",ACDFP="15;16,17;18,101;21"
  1. D REPOINT2 ; repoint init/info/fu
  1. S ACDGBL="^ACDPD(",ACDFP="1;2"
  1. D REPOINT2 ; repoint prevention
  1. S ACDGBL="^ACDTDC(",ACDFP="12;13,14;15"
  1. D REPOINT2 ; repoint trans/disc/close
  1. S ACDGBL="^ACDVIS(",ACDFP="1;2"
  1. D REPOINT2 ; repoint visit
  1. S ACDGBL="^ACDPAT(",ACDFP=".03;3"
  1. D REPOINT2 ; repoint client category
  1. S ACDGBL="^ACDINTV(",ACDFP="10;10,11;11"
  1. D REPOINT2 ; repoint interventions
  1. W !!,"Now repointing files that point to the CDMIS SERVICE file."
  1. S ACDRIEN=0
  1. F S ACDRIEN=$O(^ACDCS(ACDRIEN)) Q:ACDRIEN'=+ACDRIEN S X=$G(^ACDCS(ACDRIEN,0)),X=$P(X,U,3) D D:ACDHIT REPCS
  1. . S ACDHIT=0
  1. . I X=ACDLIEN("11") S ACDHIT=1 Q
  1. . I X=ACDLIEN("12") S ACDHIT=1 Q
  1. . I X=ACDLIEN("13") S ACDHIT=1 Q
  1. . I X=ACDLIEN("14") S ACDHIT=1 Q
  1. . Q
  1. Q
  1. ;
  1. REPOINT2 ; REPOINT SPECIFIC FILE
  1. S ACDRIEN=0
  1. F S ACDRIEN=$O(@(ACDGBL_ACDRIEN_")")) Q:ACDRIEN'=+ACDRIEN S ACDNODE0=$G(^(ACDRIEN,0)) D
  1. . Q:ACDNODE0=""
  1. . F ACDY=1:1 S X=$P(ACDFP,",",ACDY) Q:X="" D
  1. .. S F=$P(X,";"),P=$P(X,";",2)
  1. .. S X=$P(ACDNODE0,U,P) D D:ACDHIT REPF
  1. ... S ACDHIT=0
  1. ... I X=ACDCIEN("LARGE DROP IN") S ACDHIT=1 Q
  1. ... I X=ACDCIEN("SMALL DROP IN") S ACDHIT=1 Q
  1. ... I X=ACDCIEN("SPECL DROP IN") S ACDHIT=1 Q
  1. ... Q
  1. .. Q
  1. . Q
  1. K F,P
  1. Q
  1. ;
  1. REPF ; REPOINT FIELD
  1. S DIE=ACDGBL,DA=ACDRIEN,DR=F_"////"_ACDCIEN("DROP IN CENTER")
  1. D DIE^ACDFMC
  1. W "."
  1. Q
  1. ;
  1. REPCS ; REPOINT CDMIS CLIENT SVCS
  1. S DIE="^ACDCS(",DA=ACDRIEN,DR="2////"_ACDLIEN("1")
  1. D DIE^ACDFMC
  1. W "."
  1. Q
  1. ;
  1. TOBACCO ; DELETE TOBACCO FROM DRUGS USED AND SET NEW FIELD
  1. W !!,"Now converting tobacco use to new field."
  1. S ACDTOB1=$O(^ACDDRUG("B","TOBACCO (SMOKING)",0))
  1. S ACDTOB2=$O(^ACDDRUG("B","TOBACCO (SMOKELESS)",0))
  1. I 'ACDTOB1!('ACDTOB2) W !!,"Cannot locate TOBACCO entries in CDMIS DRUG file. No conversion necessary.",! Q
  1. S ACDGBL="^ACDIIF("
  1. D TOBACCO2 ; fix init/info/fu
  1. S ACDGBL="^ACDTDC("
  1. D TOBACCO2 ; fix trans/disc/close
  1. F Y=ACDTOB1,ACDTOB2 S DIK="^ACDDRUG(",DA=Y D ^DIK
  1. Q
  1. ;
  1. TOBACCO2 ; FIX ONE FILE
  1. S ACDRIEN=0
  1. F S ACDRIEN=$O(@(ACDGBL_ACDRIEN_")")) Q:ACDRIEN'=+ACDRIEN S ACDNODE0=$G(^(ACDRIEN,0)) D
  1. . Q:ACDNODE0=""
  1. . K ACDTOB
  1. . S ACDMIEN=0
  1. . ; drug multiple
  1. . F S ACDMIEN=$O(@(ACDGBL_ACDRIEN_",2,"_ACDMIEN_")")) Q:ACDMIEN'=+ACDMIEN S X=+^(ACDMIEN,0) D
  1. .. I X'=ACDTOB1,X'=ACDTOB2 Q ; quit if not tobacco
  1. .. S ACDTOB(X)="" ; save type of tobacco
  1. .. S DIK=ACDGBL_ACDRIEN_",2,",DA(1)=ACDRIEN,DA=ACDMIEN D ^DIK
  1. .. Q
  1. . Q:'$D(ACDTOB) ; no tobacco use for entry
  1. . S Y=$O(ACDTOB(0)) ; get type used
  1. . S ACDTOB=$S(Y=ACDTOB1:1,1:2)
  1. . S X=0
  1. . F Y=ACDTOB1,ACDTOB2 S X=X+$D(ACDTOB(Y))
  1. . S:X>1 ACDTOB=3 ; uses both kinds
  1. . S DIE=ACDGBL,DA=ACDRIEN,DR="30////"_ACDTOB
  1. . D DIE^ACDFMC
  1. . W "."
  1. . Q
  1. Q
  1. ;
  1. PROBS ; DELETE SELECTED PROBLEMS FROM APPROPRIATE FILES
  1. W !!,"Now converting CDMIS PROBLEM file."
  1. S ACDPIEN=$O(^ACDPROB("C",51,0))
  1. I 'ACDPIEN W !!,"Cannot find PREVIOUS TREATMENT in CDMIS PROBLEM file. No conversion necessary.",! Q
  1. S ACDGBL="^ACDIIF(",ACDNODE=3
  1. D PROBSDEL ; fix init/info/fu
  1. S ACDGBL="^ACDTDC(",ACDNODE=3
  1. D PROBSDEL ; fix trans/disc/close
  1. S ACDGBL="^ACDINTV(",ACDNODE=1
  1. D PROBSDEL ; fix interventions
  1. S DIK="^ACDPROB(",DA=ACDPIEN D ^DIK
  1. Q
  1. ;
  1. PROBSDEL ; DELETE ENTRIES FROM FILE
  1. S ACDRIEN=0
  1. F S ACDRIEN=$O(@(ACDGBL_ACDRIEN_")")) Q:ACDRIEN'=+ACDRIEN D
  1. . S ACDMIEN=0
  1. . F S ACDMIEN=$O(@(ACDGBL_ACDRIEN_","_ACDNODE_","_ACDMIEN_")")) Q:ACDMIEN'=+ACDMIEN S Y=+^(ACDMIEN,0) D
  1. .. Q:Y'=ACDPIEN ; not previous treatment
  1. .. S DIK=ACDGBL_ACDRIEN_","_ACDNODE_",",DA(1)=ACDRIEN,DA=ACDMIEN D ^DIK
  1. .. Q
  1. . Q
  1. Q
  1. ;
  1. GBLKILL ; KILL GBLS TO BE RESTORED, INFORM OPERATOR
  1. W !!,"Selected file globals will now be killed. You must now",!
  1. W "restore the globals from acd_0410.g",!!
  1. K ^ACDDRUG,^ACDLOT,^ACDSERV,^ACDPROB ; SAC EXEMPTION (2.3.2.3 Killing of unsubscripted globals is prohibited)
  1. Q
  1. ;
  1. EOJ ;
  1. K ACDCIEN,ACDLIEN,ACDSIEN,ACDNODE,ACDPIEN,ACDRIEN,ACDY
  1. K ACDFP,ACDGBL,ACDHIT,ACDMIEN,ACDN11,ACDNODE0,ACDPGM,ACDTOB1,ACDTOB2
  1. Q
  1. ;
  1. ;
  1. FILE200 ; CONVERT FILE 6 POINTERS TO FILE 200 POINTERS
  1. D ^ACD4P1PB
  1. Q