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

RORP019.m

Go to the documentation of this file.
  1. RORP019 ;ALB/KG - CCR PRE/POST-INSTALL PATCH 19 ;3/12/12
  1. ;;1.5;CLINICAL CASE REGISTRIES;**19**;Feb 17, 2006;Build 43
  1. ;
  1. ; This routine uses the following IAs:
  1. ; #2263 ADD^XPAR (supported)
  1. ; #2263 DEL^XPAR (supported)
  1. ; FIND1^DIC (supported)
  1. ; #2053 UPDATE^DIE (supported)
  1. ; #10009 FILE^DICN (supported)
  1. ; #10018 ^DIE (supported)
  1. ; #10000 YMD^%DTC (supported)
  1. ; #5747 CODEABA^ICDEX (controlled)
  1. ; #5747 VSTD^ICDEX (controlled)
  1. ;
  1. ;******************************************************************************
  1. ;******************************************************************************
  1. ; --- ROUTINE MODIFICATION LOG ---
  1. ;
  1. ;PKG/PATCH DATE DEVELOPER MODIFICATION
  1. ;----------- ---------- ----------- ----------------------------------------
  1. ;ROR*1.5*19 FEB 2012 K GUPTA Support for ICD-10 Coding System
  1. ;******************************************************************************
  1. ;******************************************************************************
  1. ;
  1. Q
  1. ;Pre-Install routine for Patch 19
  1. PRE ;
  1. ;Save existing Common Templates in a ^XTMP global and then delete them
  1. D SAVETMPL
  1. Q
  1. ;
  1. ;Post-Install routine for Patch 19
  1. POST ;
  1. N RORRULENAME,RORRULEIEN,RORRULEDESC,RORRULEFILE,RORRULEEXPR,RORHIVDXS,RORHEPCDXS
  1. N RORREGNAME,RORREGIEN,RORRULENAMES,ROREXISTIEN,RORDATA,RORNUM,RORDXS,RORDX,RORICDIEN,ROREXISTICDIEN
  1. ;
  1. ;Updating existing Selection Rule records with Coding System
  1. F RORRULENAME="VA HIV PROBLEM","VA HEPC PROBLEM","VA HIV PTF","VA HEPC PTF","VA HIV VPOV","VA HEPC VPOV" D
  1. . S RORRULEIEN=$$SRLIEN^RORUTL02(RORRULENAME)
  1. . Q:RORRULEIEN<0
  1. . K DIE S DIE="^ROR(798.2,",DA=RORRULEIEN,DR="7////1"
  1. . L +^ROR(798.2,RORRULEIEN):0 I $T D ^DIE L -^ROR(798.2,RORRULEIEN)
  1. ;
  1. ;Adding ICD-10 codes to ICD Search records (#798.5)
  1. S RORHIVDXS="B20.,B97.35,Z21.,O98.711,O98.712,O98.713,O98.719,O98.72,O98.73"
  1. S RORHEPCDXS="B17.10,B17.11,B18.2,B19.20,B19.21,Z22.52"
  1. F RORREGNAME="VA HIV","VA HEPC" D
  1. . S RORREGIEN=$$REGIEN^RORUTL02(RORREGNAME) ;IEN of #798.5 is same as IEN of #798.1
  1. . S RORDXS=$S(RORREGNAME="VA HIV":RORHIVDXS,1:RORHEPCDXS)
  1. . F RORNUM=1:1 S RORDX=$P(RORDXS,",",RORNUM) Q:RORDX="" D
  1. . . S RORICDIEN=+$$CODEABA^ICDEX(RORDX,"",30)
  1. . . Q:RORICDIEN<0
  1. . . S ROREXISTICDIEN=$$FIND1^DIC(798.51,","_RORREGIEN_",","Q",RORICDIEN,"B")
  1. . . Q:ROREXISTICDIEN'=0 ;quit if code is already assigned to rule
  1. . . K RORDATA
  1. . . S RORDATA(1,798.51,"+2,"_RORREGIEN_",",.01)=RORICDIEN
  1. . . D UPDATE^DIE("","RORDATA(1)")
  1. ;
  1. ;Creating new Selection Rule records (#798.2)
  1. S RORRULEDESC="ICD-10 code in problem list"
  1. S RORRULEFILE="9000011"
  1. S RORRULEEXPR="+$D(^ROR(798.5,REGIEN,1,""B"",+{I:DIAGNOSIS}))"
  1. F RORRULENAME="VA HIV PROBLEM (ICD10)","VA HEPC PROBLEM (ICD10)" D
  1. . D NEWRULE(RORRULENAME,RORRULEEXPR,RORRULEFILE,RORRULEDESC)
  1. ;
  1. S RORRULEDESC="ICD-10 code in outpatient file"
  1. S RORRULEFILE="9000010.07"
  1. S RORRULEEXPR="+$D(^ROR(798.5,REGIEN,1,""B"",+{I:POV}))"
  1. F RORRULENAME="VA HIV VPOV (ICD10)","VA HEPC VPOV (ICD10)" D
  1. . D NEWRULE(RORRULENAME,RORRULEEXPR,RORRULEFILE,RORRULEDESC)
  1. ;
  1. S RORRULEDESC="ICD-10 code in inpatient file"
  1. S RORRULEFILE="45"
  1. S RORRULEEXPR="$$PTFRULE^RORUPD09(REGIEN)"
  1. F RORRULENAME="VA HIV PTF (ICD10)","VA HEPC PTF (ICD10)" D
  1. . D NEWRULE(RORRULENAME,RORRULEEXPR,RORRULEFILE,RORRULEDESC)
  1. ;
  1. ;Updating existing Registry records with new Selection Rules
  1. S RORRULENAMES("VA HIV","VA HIV PROBLEM (ICD10)")=""
  1. S RORRULENAMES("VA HIV","VA HIV VPOV (ICD10)")=""
  1. S RORRULENAMES("VA HIV","VA HIV PTF (ICD10)")=""
  1. S RORRULENAMES("VA HEPC","VA HEPC PROBLEM (ICD10)")=""
  1. S RORRULENAMES("VA HEPC","VA HEPC VPOV (ICD10)")=""
  1. S RORRULENAMES("VA HEPC","VA HEPC PTF (ICD10)")=""
  1. F RORREGNAME="VA HIV","VA HEPC" D
  1. . S RORREGIEN=$$REGIEN^RORUTL02(RORREGNAME)
  1. . Q:RORREGIEN<0 ;quit if registry doesn't exist
  1. . S RORRULENAME=""
  1. . F S RORRULENAME=$O(RORRULENAMES(RORREGNAME,RORRULENAME)) Q:RORRULENAME="" D
  1. . . S RORRULEIEN=$$SRLIEN^RORUTL02(RORRULENAME)
  1. . . Q:RORRULEIEN<0 ;quit if rule doesn't exist in 798.2
  1. . . S ROREXISTIEN=$$FIND1^DIC(798.13,","_RORREGIEN_",","X",RORRULENAME,"B")
  1. . . Q:ROREXISTIEN'=0 ;quit if rule is already assigned to registry
  1. . . K RORDATA
  1. . . S RORDATA(1,798.13,"+2,"_RORREGIEN_",",.01)=RORRULENAME
  1. . . D UPDATE^DIE("","RORDATA(1)")
  1. ;
  1. K DIE,DA,DR
  1. ;
  1. ;Build Common Templates with ICD-9 and ICD-10 codes
  1. D UPDTMPL
  1. ;Remove ROR LIST ICD-9 from file #8994. It was replaced by ROR LIST ICD
  1. N DIK,DA
  1. S DIK="^XWB(8994,",DA=$O(^XWB(8994,"B","ROR LIST ICD-9","")) I 'DA Q
  1. D ^DIK
  1. Q
  1. ;
  1. ;Creating a new Selection Rule record in File #798.2
  1. NEWRULE(NAME,EXPR,FILE,DESC) ;
  1. N RORIEN
  1. S RORIEN=$$SRLIEN^RORUTL02(NAME) ;check if rule already exists
  1. I RORIEN<0 S DIC(0)="",DIC="^ROR(798.2,",X=NAME D FILE^DICN S RORIEN=$P(Y,U,1)
  1. K DIC,X,Y
  1. Q:RORIEN<0
  1. L +^ROR(798.2,RORIEN):0
  1. Q:'$T
  1. K DIE S DIE="^ROR(798.2,",DA=RORIEN,DR=".09////1;1////"_EXPR_";2////"_FILE_";4////"_DESC_";7////30"
  1. D ^DIE
  1. L -^ROR(798.2,RORIEN)
  1. K DIE,DA,DR
  1. Q
  1. ;
  1. ;Save existing Common Templates in a ^XTMP global
  1. SAVETMPL ;
  1. N RORLST,RORDATE,%H,RORIPRT,RORBUF,RORENTITY,RORPARAM,RORINSTANCE,RORINSTNAME
  1. ;Save existing common templates in a ^XTMP global
  1. S %H=+$H+180 D YMD^%DTC S RORDATE=X K X
  1. S ^XTMP("RORP19",$J,0)=RORDATE_U_DT_U_"Backup of Common Templates in File 8989.5 by "_$G(DUZ)
  1. S RORENTITY="PKG.CLINICAL CASE REGISTRIES"
  1. S RORPARAM="ROR REPORT PARAMS TEMPLATE"
  1. D GETPLIST^RORRP038(.RORLST,"ROR REPORT PARAMS TEMPLATE","PKG")
  1. S RORIPRT=0
  1. F S RORIPRT=$O(RORLST(RORIPRT)) Q:RORIPRT'>0 D
  1. . S RORINSTANCE=$P(RORLST(RORIPRT),U,1)
  1. . S RORINSTNAME=RORINSTANCE_U_"ROR REPORT PARAMS TEMPLATE"
  1. . D GETPARM^RORRP038(.RORBUF,RORINSTNAME,"PKG")
  1. . Q:$G(RORBUF(0))<0
  1. . K RORBUF(0) Q:$D(RORBUF)<10
  1. . ;save an existing common template
  1. . S ^XTMP("RORP19",$J,RORIPRT)=RORINSTANCE
  1. . M ^XTMP("RORP19",$J,RORIPRT)=RORBUF
  1. . ;delete an existing common template
  1. . D DEL^XPAR(RORENTITY,RORPARAM,RORINSTANCE)
  1. Q
  1. ;
  1. ;Build Common Templates with ICD-9 and ICD-10 codes
  1. UPDTMPL ;
  1. N I,J,RORTMPL,RORVALUE,RORTYPE,RORENTITY,RORPARAM,RORGROUP,RORCNT,RORICDCODES,RORICDCODE,RORICDIEN,RORICDDESC
  1. N RORVERSION,RORCSYS,ROREXTN
  1. S RORENTITY="PKG.CLINICAL CASE REGISTRIES"
  1. S RORPARAM="ROR REPORT PARAMS TEMPLATE"
  1. F ROREXTN="A","B" D
  1. . F I=1:1 S RORTMPL=$P($T(@("TMPLCODE+"_I_"^RORP019"_ROREXTN)),";;",2) Q:RORTMPL="" D
  1. . . S RORTYPE=$P(RORTMPL,"^",1) ;1=XML Header, 2=ICD-9 codes, 3=ICD-10 codes, 9=XML Footer
  1. . . I RORTYPE="1" D ;XML Header Info
  1. . . . S RORGROUP=$P(RORTMPL,"^",2)
  1. . . . S RORINSTANCE="13::"_RORGROUP
  1. . . . S RORVALUE="CCR Predefined Report Template"
  1. . . . S RORCNT=0
  1. . . . S RORCNT=RORCNT+1,RORVALUE(RORCNT,0)="<?xml version="_"""1.0"""_" encoding="_"""UTF-8"""_"?>"
  1. . . . S RORCNT=RORCNT+1,RORVALUE(RORCNT,0)="<PARAMS>"
  1. . . . S RORCNT=RORCNT+1,RORVALUE(RORCNT,0)="<ICDLST>"
  1. . . . S RORCNT=RORCNT+1,RORVALUE(RORCNT,0)="<GROUP ID="""_RORGROUP_""">"
  1. . . I (RORTYPE="2")!(RORTYPE="3") D ;XML Body with ICD-9/ICD-10 codes
  1. . . . S RORICDCODES=$P(RORTMPL,"^",2)
  1. . . . F J=1:1 S RORICDCODE=$P(RORICDCODES,",",J) Q:RORICDCODE="" D
  1. . . . . S RORCNT=RORCNT+1
  1. . . . . S RORCSYS=$S(RORTYPE=2:"1",1:"30")
  1. . . . . S RORICDIEN=$$CODEABA^ICDEX(RORICDCODE,"",RORCSYS)
  1. . . . . Q:'(RORICDIEN>0)
  1. . . . . S RORVERSION=$S(RORTYPE=2:"ICD-9",1:"ICD-10")
  1. . . . . S RORICDDESC=$$XMLENC^RORUTL03($$VSTD^ICDEX(RORICDIEN))
  1. . . . . S RORVALUE(RORCNT,0)="<ICD ID="""_RORICDCODE_""" VERSION="""_RORVERSION_""">"_RORICDDESC_"</ICD>"
  1. . . I RORTYPE="9" D ;XML Footer Info
  1. . . . S RORCNT=RORCNT+1,RORVALUE(RORCNT,0)="</GROUP>"
  1. . . . S RORCNT=RORCNT+1,RORVALUE(RORCNT,0)="</ICDLST>"
  1. . . . S RORCNT=RORCNT+1,RORVALUE(RORCNT,0)="<PANELS>"
  1. . . . S RORCNT=RORCNT+1,RORVALUE(RORCNT,0)="<PANEL ID="_"""160"""_"/>"
  1. . . . S RORCNT=RORCNT+1,RORVALUE(RORCNT,0)="</PANELS>"
  1. . . . S RORCNT=RORCNT+1,RORVALUE(RORCNT,0)="</PARAMS>"
  1. . . . D ADD^XPAR(RORENTITY,RORPARAM,RORINSTANCE,.RORVALUE)
  1. . . . K RORVALUE
  1. Q
  1. ;