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

AUMUPD4.m

Go to the documentation of this file.
  1. AUMUPD4 ;IHS/OIT/NKD - SCB UPDATE 05/23/2012 ;
  1. ;;12.0;TABLE MAINTENANCE;**3**;SEP 27,2011;Build 1
  1. ;
  1. ADDOK ;----- "ADDED" MESSAGE
  1. D RSLT($J("",5)_"ADDED : "_L)
  1. Q
  1. ;
  1. ADDFAIL ;----- "FAILED" MESSAGE
  1. D RSLT($J("",5)_$$M(0)_"ADD FAILED => "_L)
  1. Q
  1. ;
  1. DASH ;----- PRT DASH LINE
  1. D RSLT("")
  1. D RSLT($$REPEAT^XLFSTR("-",$S($G(IOM):IOM-10,1:70)))
  1. D RSLT("")
  1. Q
  1. ;
  1. DIE ;----- DIE EDIT
  1. N @($P($T(SVARS),";",3))
  1. L +(@(DIE_DA_")")):10
  1. E D RSLT($J("",5)_$$M(0)_"Entry '"_DIE_DA_"' IS LOCKED. NOTIFY PROGRAMMER.") S Y=1 Q
  1. D ^DIE
  1. L -(@(DIE_DA_")"))
  1. Q
  1. ;
  1. DIK ;--- KILL ENTRY
  1. N @($P($T(SVARS),";",3)),DIK
  1. D ^DIK
  1. Q
  1. ;
  1. FILE ;--- FILE NEW ENTRY
  1. N @($P($T(SVARS),";",3))
  1. K DD,DO
  1. S DIC(0)="L"
  1. D FILE^DICN
  1. K DIC,DLAYGO
  1. Q
  1. ;
  1. M(%) ;--- ERROR MESSAGE
  1. Q $S(%=0:"ERROR : ",%=1:"NOT ADDED : ",1:"")
  1. ;
  1. MODOK ;--- IF MOD OK
  1. D RSLT($J("",5)_"CHANGED : "_L)
  1. Q
  1. ;
  1. INAOK ;--- IF INACTIVATE OK
  1. D RSLT($J("",5)_"INACTIVATED : "_L)
  1. Q
  1. ;
  1. DINAOK ;--- IF DUPLICATE INACTIVATE OK
  1. D RSLT($J("",2)_"LOCAL DUPLICATE INACTIVATED : "_L)
  1. Q
  1. ;
  1. RSLT(%) ;--- ISSUE MESSAGES DURING INSTALL
  1. N @($P($T(SVARS),";",3))
  1. D MES^XPDUTL(%)
  1. Q
  1. ;
  1. IXDIC(DIC,DIC0,D,X,DLAYGO) ;
  1. ;--- CALL TO FILEMAN IX^DIC
  1. N @($P($T(SVARS),";",3))
  1. S DIC(0)=DIC0
  1. K DIC0
  1. I '$G(DLAYGO) K DLAYGO
  1. D IX^DIC
  1. Q Y
  1. ;
  1. PCLASALL ;EP --- PROVIDER TABLE UPDATE
  1. N C,CI,A,S,I,II,L,N,NI,AUMI,AUMII
  1. S C=$O(^DIC(7,"D","")),A="" ;TRAVERSE THE D INDEX (CODE)
  1. F Q:$L(C)<1 D
  1. .S I=$O(^DIC(7,"D",C,"")) ;STORE THE IEN
  1. .;ITERATE THROUGH MASTER RETRIEVING CODES
  1. .F Q:$L(I)<1 D
  1. ..N S
  1. ..;IF THE LOCAL CODE MATCHES, UPDATE THE LOCAL ENTRY AND REMOVE FROM THE MASTER
  1. ..F AUMII=1:1:$P(AUMPRV(0),"^",4) I $D(AUMPRV(AUMII,0)) S CI=$P(AUMPRV(AUMII,0),"^",1) Q:$D(S) D
  1. ...I CI=C D RSLT("SERVICES RENDERED BY (PROVIDER) CODE CHANGES"),PCLASDIE S S="" K AUMPRV(AUMII,0)
  1. ..I '$D(S) S A=A_I_"^" ;IF NOT FOUND IN THE MASTER, STORE IEN IN LOCAL VARIABLE
  1. ..S I=$O(^DIC(7,"D",C,I)) ;ITERATE TO THE NEXT IEN WITH THIS CODE
  1. .S C=$O(^DIC(7,"D",C)) ;TRAVERSE TO THE NEXT CODE
  1. ;ITERATE THROUGH THE STORED IENs
  1. F AUMI=1:1 S I=$P(A,"^",AUMI) Q:$L(I)<1 D
  1. .N S
  1. .S N=$P(^DIC(7,I,0),"^",1) ;STORE THE NAME
  1. .;ITERATE THROUGH MASTER RETRIEVING NAMES
  1. .F AUMII=1:1:$P(AUMPRV(0),"^",4) I $D(AUMPRV(AUMII,0)) S NI=$P(AUMPRV(AUMII,0),"^",2) Q:$D(S) D
  1. ..;IF THE LOCAL NAME MATCHES, UPDATE THE LOCAL ENTRY AND REMOVE FROM THE MASTER
  1. ..I NI=N D RSLT("SERVICES RENDERED BY (PROVIDER) NAME CHANGES"),PCLASDIE S S="" K AUMPRV(AUMII,0)
  1. .;IF NOT FOUND, INACTIVATE LOCAL ENTRY
  1. .I '$D(S) D
  1. ..D RSLT("SERVICES RENDERED BY (PROVIDER) INACTIVATE")
  1. ..S L=$P(^DIC(7,I,9999999),"^",1)_" "_N_" "_$P(^DIC(7,I,9999999),"^",2)
  1. ..S DIE="^DIC(7,",DA=I,DR="9999999.06///"_DT D ^DIE
  1. ..I $D(Y) D RSLT($J("",5)_$$M(0)_"INACTIVATE PROVIDER CODE FAILED => "_L) Q
  1. ..D RSLT($J("",5)_"INACTIVATED : "_L)
  1. ;ITERATE THROUGH REMAINING MASTER ENTRIES AND ADD
  1. F AUMI=1:1:$P(AUMPRV(0),"^",4) I $D(AUMPRV(AUMI,0)) D
  1. .D RSLT("SERVICES RENDERED BY (PROVIDER) ADD")
  1. .S C=$P(AUMPRV(AUMI,0),"^",1),N=$P(AUMPRV(AUMI,0),"^",2),A=$P(AUMPRV(AUMI,0),"^",3),P=$P(AUMPRV(AUMI,0),"^",4),R=$P(AUMPRV(AUMI,0),"^",5)
  1. .S L=C_" "_N_$J("",(32-$L(N)))_A
  1. .I $D(^DIC(7,"D",C)) D RSLT($J("",5)_$$M(1)_"PROVIDER CODE EXISTS => "_C),RSLT("") Q
  1. .S DLAYGO=7,DIC="^DIC(7,",X=N,DIC("DR")="1///"_A_";9999999.01///"_C_";9999999.03///"_P_";9999999.05///"_R
  1. .D FILE
  1. .D @$S(Y>0:"ADDOK",1:"ADDFAIL")
  1. .K AUMPRV(AUMI,0)
  1. Q
  1. PCLASDIE ;
  1. N C,N,A,P,R,L,DIE,DA,DR
  1. S C=$P(AUMPRV(AUMII,0),"^",1),N=$P(AUMPRV(AUMII,0),"^",2),A=$P(AUMPRV(AUMII,0),"^",3),P=$P(AUMPRV(AUMII,0),"^",4),R=$P(AUMPRV(AUMII,0),"^",5)
  1. S L=C_" "_N_" "_A
  1. S DIE="^DIC(7,",DA=I,DR=".01///"_N_";1///"_A_";9999999.01///"_C_";9999999.03///"_P_";9999999.05///"_R
  1. I $L($P(AUMPRV(AUMII,0),"^",6))>0 S DR=DR_";9999999.06///"_$P(AUMPRV(AUMII,0),"^",6)
  1. D ^DIE
  1. I $D(Y) D RSLT($J("",5)_$$M(0)_"EDIT PROVIDER CODE FAILED => "_L) Q
  1. D MODOK
  1. Q
  1. EDTMOD ;EP - update education topics
  1. N AUMACT,AUMNAM,AUMMNE,AUMMJT,AUMOUTC,AUMSTD,AUMRES,FDA,NEWIEN,ERR,I,AUMCHG,AUMD0,AUMCNT,AUMIEN
  1. I '$D(EDTC) D RSLT("PATIENT EDUCATION TOPICS") S EDTC=""
  1. S AUMCHG=0,U="^",AUMIEN="",AUMACT=$P(L,U,1)
  1. S AUMNAM=$$CLEAN($P(L,U,2)),AUMMNE=$$CLEAN($P(L,U,3)),AUMMJT=$$CLEAN($P(L,U,4)),AUMOUTC=$P(L,U,5),AUMSTD=$P(L,U,6)
  1. S L=AUMMNE_$J("",13-$L(AUMMNE))_AUMNAM_$J("",51-$L(AUMNAM))_AUMMJT
  1. K AUMRES
  1. D FIND^DIC(9999999.09,"","@;.01;1;.06","PX",AUMNAM,,"B",,,"AUMRES")
  1. S AUMCNT=$P($G(AUMRES("DILIST",0)),"^",1)
  1. I AUMCNT=0 S AUMIEN="" ; No matches found, create new
  1. I AUMCNT=1 S AUMIEN=$P($G(AUMRES("DILIST",1,0)),"^",1) ; One match found, store IEN
  1. I AUMCNT>1 S AUMIEN=$P($G(AUMRES("DILIST",$P($G(AUMRES("DILIST",0)),"^",1),0)),"^",1)
  1. I 'AUMIEN D
  1. . K AUMRES
  1. . D FIND^DIC(9999999.09,"","@;.01;1;.06","PX",AUMMNE,,"C","I ($P(^(0),U,3)'=1),($P(^(0),U)=$$UP^XLFSTR($P(^(0),U)))",,"AUMRES") ;
  1. . S AUMCNT=$P($G(AUMRES("DILIST",0)),"^",1)
  1. . I AUMCNT=0 S AUMIEN="" ; No matches found, create new
  1. . I AUMCNT=1 S AUMIEN=$P($G(AUMRES("DILIST",1,0)),"^",1) ; One match found, store IEN
  1. . I AUMCNT>1 S AUMIEN=$P($G(AUMRES("DILIST",$P($G(AUMRES("DILIST",0)),"^",1),0)),"^",1)
  1. ;
  1. I 'AUMIEN,$L(AUMACT)>0 D Q
  1. . D RSLT($J("",5)_"INACTIVATE TOPIC FAILED : TOPIC DOES NOT EXIST => "_L)
  1. I 'AUMIEN D
  1. . K FDA,NEWIEN,ERR
  1. . S FDA(9999999.09,"+1,",.01)=AUMNAM ; Name (.01)
  1. . S FDA(9999999.09,"+1,",1)=AUMMNE ; Mnemonic (1)
  1. . D UPDATE^DIE(,"FDA","NEWIEN","ERR")
  1. . I $D(ERR) D ADDFAIL Q
  1. . S AUMIEN=NEWIEN(1),AUMCHG=1
  1. Q:'AUMIEN
  1. S AUMD0=$G(^AUTTEDT(AUMIEN,0))
  1. ;
  1. K FDA
  1. S FDA(9999999.09,AUMIEN_",",.01)=AUMNAM ; Name (.01)
  1. S FDA(9999999.09,AUMIEN_",",1)=AUMMNE ; Mnemonic (1)
  1. S FDA(9999999.09,AUMIEN_",",.06)=AUMMJT ; Major Topic (.06)
  1. S FDA(9999999.09,AUMIEN_",",.03)=$S($L(AUMACT)>0:1,1:"@") ; Inactive Flag (.03)
  1. D UPDATE^DIE(,"FDA",)
  1. I AUMD0'=$G(^AUTTEDT(AUMIEN,0)) S AUMCHG=1
  1. ;
  1. ; Outcome (1101) WP
  1. D TEXT(.AUMOUTC) ; convert string to WP array
  1. D WP^DIE(9999999.09,AUMIEN_",",1101,,"AUMOUTC")
  1. ;
  1. ; Standards (1102) WP
  1. D TEXT(.AUMSTD) ; convert string to WP array
  1. D WP^DIE(9999999.09,AUMIEN_",",1102,,"AUMSTD")
  1. ;
  1. I AUMCHG D @$S($D(NEWIEN):"ADDOK",$L(AUMACT)>0:"INAOK",1:"MODOK")
  1. ;
  1. K AUMRES,FDA
  1. D FIND^DIC(9999999.09,"","@;.01;1;.06","PX",AUMNAM,,"B","I ($P(^(0),U,3)'=1),(Y'=AUMIEN)",,"AUMRES")
  1. S AUMCNT=$P($G(AUMRES("DILIST",0)),"^",1)
  1. I AUMCNT>0 D RSLT("DUPLICATE NAMES FOUND FOR : "_AUMMNE_$J("",13-$L(AUMMNE))_AUMNAM)
  1. F I=1:1:AUMCNT D
  1. . N L
  1. . S L=$P(AUMRES("DILIST",I,0),"^",3)_$J("",13-$L($P(AUMRES("DILIST",I,0),"^",3)))_$P(AUMRES("DILIST",I,0),"^",2)
  1. . S FDA(9999999.09,$P(AUMRES("DILIST",I,0),"^",1)_",",.03)="1" ; Inactive Flag (.03)
  1. . D DINAOK
  1. I AUMCNT D UPDATE^DIE(,"FDA",)
  1. ;
  1. K AUMRES,FDA
  1. D FIND^DIC(9999999.09,"","@;.01;1;.06","PX",AUMMNE,,"C","I ($P(^(0),U,3)'=1),(Y'=AUMIEN)",,"AUMRES")
  1. S AUMCNT=$P($G(AUMRES("DILIST",0)),"^",1)
  1. I AUMCNT>0 D RSLT("DUPLICATE MNEMONICS FOUND FOR : "_AUMMNE_$J("",13-$L(AUMMNE))_AUMNAM)
  1. F I=1:1:AUMCNT D
  1. . N L
  1. . S L=$P(AUMRES("DILIST",I,0),"^",3)_$J("",13-$L($P(AUMRES("DILIST",I,0),"^",3)))_$P(AUMRES("DILIST",I,0),"^",2)
  1. . S FDA(9999999.09,$P(AUMRES("DILIST",I,0),"^",1)_",",.03)="1" ; Inactive Flag (.03)
  1. . D DINAOK
  1. I AUMCNT D UPDATE^DIE(,"FDA",)
  1. ;
  1. Q
  1. MJTMOD ;EP - update major education topics
  1. N AUMNAM,AUMMNE,AUMRES,FDA,NEWIEN,ERR,AUMCHG,AUMD0,AUMCNT,AUMIEN
  1. I '$D(MJTC) D RSLT("PATIENT EDUCATION MAJOR TOPICS") S MJTC=""
  1. S AUMCHG=0,U="^",AUMIEN=""
  1. S AUMNAM=$$CLEAN($P(L,U,1)),AUMMNE=$$CLEAN($E($P(L,U,2),1,4))
  1. S L=AUMMNE_$J("",7-$L(AUMMNE))_AUMNAM
  1. K AUMRES
  1. D FIND^DIC(99999.91,"","@;.01;.02","PX",AUMMNE,,"B",,,"AUMRES")
  1. S AUMCNT=$P($G(AUMRES("DILIST",0)),"^",1)
  1. I AUMCNT=0 S AUMIEN="" ; No matches found, create new
  1. I AUMCNT=1 S AUMIEN=$P($G(AUMRES("DILIST",1,0)),"^",1) ; One match found, store IEN
  1. I AUMCNT>1 S AUMIEN=$P($G(AUMRES("DILIST",$P($G(AUMRES("DILIST",0)),"^",1),0)),"^",1)
  1. I 'AUMIEN D
  1. . K FDA,NEWIEN,ERR
  1. . S FDA(99999.91,"+1,",.01)=AUMNAM ; Name (.01)
  1. . S FDA(99999.91,"+1,",.02)=AUMMNE ; Abbreviation (.02)
  1. . D UPDATE^DIE(,"FDA","NEWIEN","ERR")
  1. . I $D(ERR) D ADDFAIL Q
  1. . S AUMIEN=NEWIEN(1),AUMCHG=1
  1. Q:'AUMIEN
  1. S AUMD0=$G(^AUTTEDMT(AUMIEN,0))
  1. ;
  1. K FDA
  1. S FDA(99999.91,AUMIEN_",",.01)=AUMNAM ; Name (.01)
  1. S FDA(99999.91,AUMIEN_",",.02)=AUMMNE ; Abbreviation (.02)
  1. D UPDATE^DIE(,"FDA",)
  1. I AUMD0'=$G(^AUTTEDMT(AUMIEN,0)) S AUMCHG=1
  1. ;
  1. I AUMCHG D @$S($D(NEWIEN):"ADDOK",1:"MODOK")
  1. Q
  1. CLEAN(X) ;
  1. N CNT,AUMSTR
  1. S AUMSTR=X
  1. S CNT=0 F S CNT=$F(X," -") Q:'CNT S $E(X,CNT-2,CNT-1)="-"
  1. S CNT=0 F S CNT=$F(X,"- ") Q:'CNT S $E(X,CNT-2,CNT-1)="-"
  1. S CNT=0 F S CNT=$F(X," ") Q:'CNT S $E(X,CNT-2,CNT-1)=" "
  1. I $E(X,1)=" " S X=$E(X,2,$L(X))
  1. I $E(X,$L(X))=" " S X=$E(X,1,$L(X)-1)
  1. Q X
  1. TEXT(X) ;
  1. N AUMSTR,I,J
  1. S AUMSTR=X,I=1,J=1
  1. K X
  1. F I=1:1:$L(AUMSTR,"|") D
  1. . Q:$L($P(AUMSTR,"|",I))=0
  1. . S X(J)=$P(AUMSTR,"|",I),J=J+1
  1. Q
  1. SVARS ;;A,C,E,F,L,M,N,O,P,R,S,T,V;Single-character work variables
  1. Q
  1. PKLST ;EP - Check to see what EHR pick lists might be affected
  1. D RSLT("DISPLAYING EHR PICKLISTS CONTAINING INACTIVE EDUCATION TOPICS")
  1. N PKNAM,PK1,PK2,PK3,PXEDT,AUMDSP
  1. S PKNAM="",PK1=0
  1. F S PK1=$O(^BGOEDTPR(PK1)) Q:PK1'?1N.N D
  1. .S AUMDSP=1
  1. .S PK2="" F S PK2=$O(^BGOEDTPR(PK1,PK2)) Q:PK2'?1N.N D
  1. ..S:PK2=0 PKNAM=$P(^BGOEDTPR(PK1,PK2),U,1)
  1. ..S PK3=0 F S PK3=$O(^BGOEDTPR(PK1,PK2,PK3)) Q:PK3'?1N.N D
  1. ...S PXEDT=$P($G(^BGOEDTPR(PK1,PK2,PK3,0)),U,1)
  1. ...Q:PXEDT=""
  1. ...Q:$P($G(^AUTTEDT(PXEDT,0)),U,3)'=1
  1. ...N AUMMNE,AUMNAM,AUMINA
  1. ...S AUMMNE=$P(^AUTTEDT(PXEDT,0),"^",2),AUMNAM=$P(^AUTTEDT(PXEDT,0),"^",1),AUMINA=$$FMTE^XLFDT($P(^AUTTEDT(PXEDT,0),"^",5))
  1. ...I AUMDSP D RSLT(""),RSLT("INACTIVE TOPIC(S) FOUND IN EHR PICKLIST: "_$P(^BGOEDTPR(PK1,0),"^",1)) S AUMDSP=0
  1. ...D RSLT($J("",4)_AUMMNE_$J("",13-$L(AUMMNE))_"'"_AUMNAM_"'"_$J("",51-$L(AUMNAM))_AUMINA)
  1. ...Q
  1. ..Q
  1. .Q
  1. Q