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

PXRMP26D.m

Go to the documentation of this file.
  1. PXRMP26D ;SLC/AGP - Dialog Conversion for PXRM*2.0*26. ;05/07/2014
  1. ;;2.0;CLINICAL REMINDERS;**26**;Feb 04, 2005;Build 404
  1. Q
  1. ;
  1. ;this code is used to add prompts to a dialog from file 801.45. This
  1. ;should only be called when an existing dialog contains a taxonomy
  1. ;and prompts are not set in the dialog.
  1. PROMPTS(DIEN,SEL,DEFAULT,IENCNT,FDA) ;
  1. N CNT,CODE,DIR,DNUM,ENC,FIELD,IEN,IENS,NAME,NODE,NUM,PROMPT,PROMPTS,START,VALUE,Y
  1. ;
  1. ;if prompts already defined then Quit keeps existing functionality
  1. ;in sync prompts at element level override prompts for taxonomy
  1. D MES^XPDUTL("Adding prompts to the dialog.")
  1. S START=+$O(^PXRMD(801.41,DIEN,10,""),-1) I START>0 Q
  1. ;
  1. S CODE="" F S CODE=$O(DEFAULT(CODE)) Q:CODE="" D
  1. .I SEL="P",CODE="POV" Q
  1. .I SEL="D",CODE="CPT" Q
  1. .S CNT=0 F S CNT=$O(DEFAULT(CODE,"ADDFIND",CNT)) Q:CNT'>0 D
  1. ..S NODE=DEFAULT(CODE,"ADDFIND",CNT)
  1. ..S IEN=$P(NODE,U)
  1. ..I $D(^PXRMD(801.41,DIEN,10,"D",IEN))>0 Q
  1. ..I $D(PROMPTS(IEN))>0 I $L(PROMPTS(IEN),U)<$L(NODE,U) S PROMPTS(IEN)=NODE
  1. ..S PROMPTS(IEN)=NODE
  1. ;
  1. I '$D(PROMPTS) Q
  1. S START=+$O(^PXRMD(801.41,DIEN,10,""),-1)
  1. S DNUM=0
  1. S IEN=0,CNT=0 F S IEN=$O(PROMPTS(IEN)) Q:IEN'>0 D
  1. .S CNT=CNT+1,START=START+1,DNUM=DNUM+1
  1. .S IENCNT=IENCNT+1,IENS="+"_IENCNT_","_DIEN_","
  1. .;S IENCNT=IENCNT+1,IENS="+"_IENCNT_",1,"
  1. .S NAME=$P($G(^PXRMD(801.41,DIEN,0)),U)
  1. .S NODE=PROMPTS(IEN),CNT=$L(NODE,U)
  1. .I $P(NODE,U,3)>0 Q
  1. .S FDA(801.412,IENS,.01)=START
  1. .S FDA(801.412,IENS,2)=IEN
  1. .I CNT=1 Q
  1. .F NUM=2:1:CNT D
  1. ..I NUM=3 Q
  1. ..I NUM=4 Q
  1. ..S VALUE=$P(NODE,U,NUM) I $G(VALUE)="" Q
  1. ..S FIELD=$S(NUM=2:9,NUM=4:.01,NUM=5:6,NUM=6:7,NUM=7:8,1:"") I $G(FIELD)="" Q
  1. ..S FDA(801.412,IENS,FIELD)=VALUE
  1. Q
  1. ;
  1. ;this is used to add a taxonomy to a finding in a dialog. Set field
  1. ;123 to N this should keep the functionality to the same as pre-ICD10
  1. ;functionality.
  1. ADDFIND(DIEN,TAX,UPD,DEFAULT,IENCNT,FDA) ;
  1. N TNAME
  1. S TNAME=$P(^PXD(811.2,TAX,0),U)
  1. D MES^XPDUTL("Adding Taxonomy "_TNAME_" as a Finding Item.")
  1. N IENS
  1. S IENS=DIEN_","
  1. S FDA(801.41,IENS,15)=TAX_";PXD(811.2,"
  1. I UPD=2 S FDA(801.41,IENS,123)="N" Q
  1. ;S FDA(801.41,IENS,123)="A"
  1. ;I UPD=0 D ADDPROMPT(DIEN,TAX,.DEFAULT,.IENCNT,.FDA)
  1. Q
  1. ;
  1. ADDFIND1(DIEN,TAX,DEFAULT,IENCNT,FDA) ;
  1. ;additional finding addition does not add prompts to the dialog.
  1. ;this should keep existing functionality in place
  1. ;may need a decision on this
  1. N TNAME
  1. S TNAME=$P(^PXD(811.2,TAX,0),U)
  1. D MES^XPDUTL("Adding Taxonomy "_TNAME_" as an Additional Finding Item.")
  1. N IENS
  1. S IENCNT=IENCNT+1,IENS="+"_IENCNT_","_DIEN_","
  1. ;S IENCNT=IENCNT+1,IENS="?+"_IENCNT_",1,"
  1. S FDA(801.4118,IENS,.01)=TAX_";PXD(811.2,"
  1. Q
  1. ;
  1. ;This is used to pulled the default taxonomy field values from 801.45
  1. ; into 801.41 when updating a dialog that contains a taxonomy.
  1. ADDTAXFL(DIEN,TAX,CODE,DEFAULT,IENCNT,FDA) ;
  1. ;D MES^XPDUTL("Adding default Taxonomy Field Values for "_CODE_".")
  1. D MES^XPDUTL("Adding default Header Text for "_CODE_".")
  1. N ENCTYPE,IENS,NODEIEN,RESULT,TEMP,VALUE,X
  1. S VALUE=$$ADDTAXF1^PXRMDTAX(CODE,.DEFAULT)
  1. S X=$S(CODE="POV":141,1:142)
  1. S IENS=DIEN_","
  1. S FDA(801.41,IENS,X)=VALUE
  1. Q
  1. ;
  1. ;use to build an array of codes to create a taxonomy from
  1. BLDARRAY(DIEN,ARRAY,TCNT,TEXT) ;
  1. N CLASS,CNT,CODESYSN,CODESYS,FNUM,IEN,NAME,TEMP
  1. S CNT=0
  1. S NAME=$P($G(^PXRMD(801.41,DIEN,0)),U)
  1. S TCNT=TCNT+1,TEXT(TCNT)="Dialog "_NAME_" Pre-conversion codes"
  1. F CODESYS="ICD9(","ICPT(" D
  1. .S IEN=0 F S IEN=$O(^XTMP(PXRMXTMP,"DIALOG",DIEN,CODESYS,IEN)) Q:IEN'>0 D
  1. ..S CODESYSN=$S(CODESYS[9:"ICD",1:"CPT")
  1. ..S CNT=CNT+1,ARRAY("CODE",CODESYSN,IEN)="I"_U_1
  1. ..S TCNT=TCNT+1,TEXT(TCNT)=" "_$S(CODESYSN="ICD":"Diagnosis Code",1:"Procedure Code")_": "_$$GET1^DIQ($S(CODESYSN="ICD":80,1:81),IEN,.01)
  1. I CNT=0 Q
  1. S TCNT=TCNT+1,TEXT(TCNT)=""
  1. S NAME=$P($G(^PXRMD(801.41,DIEN,0)),U)
  1. S CLASS=$P($G(^PXRMD(801.41,DIEN,100)),U)
  1. I CLASS="N" S NAME=$P(NAME,"-",2),CLASS="L"
  1. S TEMP=$$RTAXNAME^PXRMDUTL(NAME)
  1. S ARRAY("NAME")=TEMP
  1. S ARRAY("COUNT")=CNT
  1. S ARRAY("CLASS")=CLASS
  1. S ARRAY("SOURCE")="Reminder Dialog IEN: "_DIEN
  1. Q
  1. ;
  1. BLDTAXC(TEXT,TCNT,TIEN,DIEN) ;
  1. N ARRAY,CNT,CODESYS,DNAME,TNAME,X
  1. S TNAME=$P(^PXD(811.2,TIEN,0),U)
  1. S DNAME=$P(^PXRMD(801.41,DIEN,0),U)
  1. S TCNT=TCNT+1,TEXT(TCNT)="Taxonomy "_TNAME_" added to dialog."
  1. S TCNT=TCNT+1,TEXT(TCNT)="Taxonomy "_TNAME_" post-conversion codes list:"
  1. F X="POV","CPT" D
  1. .K CODESYS,ARRAY
  1. .D BLDCODE^PXRMDTAX(X,.CODESYS),CODES^PXRMDLLB(TIEN,.CODESYS,.ARRAY)
  1. .S CNT=0 F S CNT=$O(ARRAY(CNT)) Q:CNT'>0 S TCNT=TCNT+1,TEXT(TCNT)=" "_$S(X="POV":"Diagnosis Code",1:"Procedure Code")_": "_$P($P(ARRAY(CNT),U,2),":")
  1. Q
  1. ;create new taxonomy from dialog findings/additional findings,
  1. ;trap errors, and store new taxonomy and codes
  1. CREATE(ARRAY,DIEN,TCNT,TEXT) ;
  1. N CNT,IEN,CODESYS,CODE,ERR
  1. S IEN=$$CRETAX^PXRMTXIM("",.ARRAY,.ERR)
  1. I $D(ERR) D
  1. .I IEN=0 D Q
  1. ..S TCNT=TCNT+1,TEXT(TCNT)="ERROR: A taxonomy could not be created"
  1. ..S ^XTMP(PXRMXTMP,"DIALOG ERROR",DIEN,"ERROR")="Could not create a taxonomy. Dialog had the following codes assigned:"
  1. ..;S ^XTMP(PXRMXTMP,"DIALOG ERROR",DIEN,"ERROR","DIALOG IEN")=DIEN
  1. ..M ^XTMP(PXRMXTMP,"DIALOG ERROR",DIEN,"ERROR","CODE")=ARRAY("CODE")
  1. .I IEN>0 D
  1. ..S TCNT=TCNT+1,TEXT(TCNT)="ERROR: failed to add all the codes to the Taxonomy "_ARRAY("NAME")
  1. ..S ^XTMP(PXRMXTMP,"TAXONOMY ERROR",IEN,"ERROR")="Could not add the following codes to the Taxonomy "_ARRAY("NAME")
  1. ..M ^XTMP(PXRMXTMP,"TAXONOMY ERROR",IEN,"ERROR","CODE")=ERR
  1. ..;S ^XTMP(PXRMXTMP,"TAXONOMY ERROR",IEN,"ERROR","TAXIEN")=IEN
  1. I IEN=0 Q 0
  1. S ^XTMP(PXRMXTMP,"TAXONOMY",IEN)=""
  1. S ^XTMP(PXRMXTMP,"TAXONOMY",IEN,"NAME")=ARRAY("NAME") K ARRAY("NAME")
  1. S ^XTMP(PXRMXTMP,"TAXONOMY",IEN,"COUNT")=ARRAY("COUNT") K ARRAY("COUNT")
  1. M ^XTMP(PXRMXTMP,"TAXONOMY",IEN,"DATA")=ARRAY("CODE")
  1. D BLDTAXC(.TEXT,.TCNT,IEN,DIEN)
  1. Q IEN
  1. ;
  1. ;determine if a new taxonomy needs to be use or if new taxonomy
  1. ;already exist
  1. CRETAX ;
  1. N ARRAY,CNT,DIEN,FIND,HASCODE,IEN,NAME,TAX,TCNT,TEXT,TYPE
  1. D MES^XPDUTL(" ")
  1. D MES^XPDUTL("Dialogs updates")
  1. S DIEN=0 F S DIEN=$O(^XTMP(PXRMXTMP,"DIALOG",DIEN)) Q:DIEN'>0 D
  1. .I $G(^XTMP(PXRMXTMP,"DIALOG",DIEN,"DONE"))=1 Q
  1. .K ARRAY,TEXT
  1. .S TCNT=0
  1. .D BLDARRAY(DIEN,.ARRAY,.TCNT,.TEXT) I '$D(ARRAY) Q
  1. .S TAX=$$TAXEXIST(.ARRAY,DIEN,.TCNT,.TEXT) I TAX>0 S ^XTMP(PXRMXTMP,"DIALOG",DIEN,"PXD(811.2,",TAX)=2
  1. .I TAX<1 S TAX=$$CREATE(.ARRAY,DIEN,.TCNT,.TEXT) I TAX>0 S ^XTMP(PXRMXTMP,"DIALOG",DIEN,"PXD(811.2,",TAX)=2
  1. .S TCNT=TCNT+1,TEXT(TCNT)=""
  1. .D MES^XPDUTL(.TEXT)
  1. Q
  1. ;
  1. ;DEBUG CODE del to make clean-up easier for errors while in development
  1. DELXTMP ;
  1. N ARRAY,DIEN,FIND,PXRMXTMP,TEMP,TIEN
  1. S PXRMXTMP="PXRM DIALOG CONVERSION",TEMP="DIALOG",FIND="PXD(811.2,"
  1. S DIEN=0 F S DIEN=$O(^XTMP(PXRMXTMP,TEMP,DIEN)) Q:DIEN'>0 D
  1. .S TIEN=0 F S TIEN=$O(^XTMP(PXRMXTMP,TEMP,DIEN,FIND,TIEN)) Q:TIEN'>0 D
  1. ..I +$G(^XTMP(PXRMXTMP,TEMP,DIEN,FIND,TIEN))=2 S ARRAY(DIEN,TIEN)=""
  1. S DIEN=0 F S DIEN=$O(ARRAY(DIEN)) Q:DIEN'>0 D
  1. .S TIEN=0 F S TIEN=$O(ARRAY(DIEN,TIEN)) Q:TIEN'>0 D
  1. ..K ^XTMP(PXRMXTMP,TEMP,DIEN,FIND,TIEN)
  1. Q
  1. ;
  1. ;build edit history from FDA array.
  1. EDITDES(DIEN,FDA,WP) ;
  1. N CNT
  1. S CNT=1
  1. D MES^XPDUTL("Updating edit history of the dialog.")
  1. i $g(FDA(801.41,DIEN_",",13))'="" S CNT=CNT+1,WP(CNT,0)=" Set Resolution Type to Done Elsewhere (Historical)"
  1. I $G(FDA(801.41,DIEN_",",15))'="" S CNT=CNT+1,WP(CNT,0)=" Updated Finding Item Field"
  1. I $G(FDA(801.41,DIEN_",",123))'="" S CNT=CNT+1,WP(CNT,0)=" Updated Taxonomy Selection Field to "_$G(FDA(801.41,DIEN_",",123))
  1. I $G(FDA(801.41,DIEN_",",141))'="" S CNT=CNT+1,WP(CNT,0)=" Updated Diagnosis Header Text"
  1. I $G(FDA(801.41,DIEN_",",142))'="" S CNT=CNT+1,WP(CNT,0)=" Updated Diagnosis Header Text"
  1. ;I $D(FDA(801.46)) S CNT=CNT+1,WP(CNT,0)=" Update Taxonomy Fields"
  1. I $D(FDA(801.4118)) S CNT=CNT+1,WP(CNT,0)=" Update Additional Finding Item Multiple"
  1. I $D(FDA(801.412)) S CNT=CNT+1,WP(CNT,0)=" Added prompts to the dialog"
  1. I CNT=1 S CNT=CNT+1,WP(CNT,0)=" Nothing"
  1. Q
  1. ;
  1. ;loops through the xtmp of taxonomy determine the update path
  1. GETLIST ;
  1. N ADDFVPL,CPTSTATUS,DIEN,FINDFVPL,IEN,POVSTATUS,TAXNEEDS,UPDTYPE,VALUE
  1. K ^TMP("PXRMXMZ",$J)
  1. D BLDRLIST^PXRMVPTR(801.41,15,.FINDFVPL)
  1. D BLDRLIST^PXRMVPTR(801.4118,.01,.ADDFVPL)
  1. S CPTSTATUS=$$GETSTAT^PXRMDTAX("CPT"),POVSTATUS=$$GETSTAT^PXRMDTAX("POV")
  1. K ^TMP("PXRMXMZ",$J)
  1. S ^TMP("PXRMXMZ",$J,1,0)="Dialog post-conversion report:"
  1. S DIEN=0 F S DIEN=$O(^XTMP(PXRMXTMP,"DIALOG",DIEN)) Q:DIEN'>0 D
  1. .S IEN=0 F S IEN=$O(^XTMP(PXRMXTMP,"DIALOG",DIEN,"PXD(811.2,",IEN)) Q:IEN'>0 D
  1. ..S UPDTYPE=^XTMP(PXRMXTMP,"DIALOG",DIEN,"PXD(811.2,",IEN)
  1. ..S TAXNEEDS=0
  1. ..I $G(^XTMP(PXRMXTMP,"DIALOG",DIEN,"DONE"))'=1 D UPDATE(DIEN,IEN,UPDTYPE,CPTSTATUS,POVSTATUS,.TAXNEEDS)
  1. ..D BLDTXT^PXRMP26X(DIEN,.FINDFVPL,.ADDFVPL,TAXNEEDS,0)
  1. I $O(^TMP("PXRMXMZ",$J,""),-1)>1 D SEND^PXRMMSG("PXRMXMZ","Clinical Reminder Patch 26 Post-conversion dialog.")
  1. ;K ^TMP("PXRMXMZ",$J)
  1. Q
  1. ;
  1. PRE ;
  1. ;I $$PATCH^XPDUTL("PXRM*2.0*26") Q
  1. N PXRMXTMP,PXRMSKIP
  1. S PXRMXTMP="PXRM DIALOG CONVERSION"
  1. K ^XTMP(PXRMXTMP)
  1. S ^XTMP(PXRMXTMP,0)=$$FMADD^XLFDT(DT,30)_U_DT_U_"PXRM Patch 26 Dialog Conversion"
  1. S PXRMSKIP("VA-WH PAP SMEAR OBTAINED")="",PXRMSKIP("VA-GP AAA PRIOR DIAGNOSIS")=""
  1. S PXRMSKIP("VA-IM FLU H1N1 DONE (1 DOSE)")="",PXRMSKIP("VA-IM FLU H1N1 OUTSIDE (1 DOSE)")=""
  1. S PXRMSKIP("VA-IM FLU HIGH DOSE DONE")="",PXRMSKIP("VA-IM FLU HIGH DOSE OUTSIDE")=""
  1. D BLDLIST^PXRMP26X(.PXRMSKIP)
  1. Q
  1. ;
  1. POST ;
  1. ;I $$PATCH^XPDUTL("PXRM*2.0*26") Q
  1. K ^TMP($J,"PXRM TAX"),^TMP("PXRM DIALOG UPD",$J),^TMP("PXRM DIALOG STR",$J)
  1. N PXRMXTMP
  1. S PXRMXTMP="PXRM DIALOG CONVERSION"
  1. D CRETAX
  1. D GETLIST
  1. D WRITE
  1. D MAKNAT(801.41,"ADD TO PROBLEM LIST","PXRM FV ADD TO PROBLEM LIST")
  1. D RENAME^PXRMUTIL(801.41,"VA-ECOE DX LIST","VA-ECOE DX GROUP")
  1. ;K ^XTMP(PXRMXTMP),^TMP($J,"PXRM TAX"),^TMP("PXRM DIALOG UPD",$J),^TMP("PXRM DIALOG STR",$J)
  1. K ^TMP($J,"PXRM TAX"),^TMP("PXRM DIALOG UPD",$J),^TMP("PXRM DIALOG STR",$J)
  1. Q
  1. ;
  1. MAKNAT(FILENUM,OLDNAME,NEWNAME) ;Rename entry OLDNAME to NEWNAME in
  1. ;file number FILENUM.
  1. N DA,DIE,DR,NIEN,PXRMINST,TEXT
  1. S DA=$$FIND1^DIC(FILENUM,"","BXU",OLDNAME)
  1. I DA=0 Q
  1. S PXRMINST=1
  1. S NIEN=$$FIND1^DIC(FILENUM,"","BXU",NEWNAME) I NIEN>0 Q
  1. S DIE=FILENUM
  1. S DR=".01///^S X=NEWNAME;100///N"
  1. D ^DIE
  1. S TEXT(1)="Converting "_OLDNAME_" IEN: "_DA,TEXT(2)="to national value "_NEWNAME
  1. D MES^XPDUTL(.TEXT)
  1. Q
  1. ;
  1. ;compare array with new taxonomies already created if one matches the
  1. ;array returns that taxonomy IEN
  1. TAXEXIST(ARRAY,DIEN,TCNT,TEXT) ;
  1. N CIEN,CODESYS,FAIL,IEN,MATCH,RESULT,EDATE,SDATE,TAX,TYPE
  1. S RESULT=0,MATCH=0
  1. S TAX=0 F S TAX=$O(^XTMP(PXRMXTMP,"TAXONOMY",TAX)) Q:TAX'>0!(MATCH=1) D
  1. .I ^XTMP(PXRMXTMP,"TAXONOMY",TAX,"COUNT")'=ARRAY("COUNT") Q
  1. .S FAIL=0
  1. .S TYPE="" F S TYPE=$O(^XTMP(PXRMXTMP,"TAXONOMY",TAX,"DATA",TYPE)) Q:TYPE=""!(FAIL=1) D
  1. ..S IEN=0 F S IEN=$O(^XTMP(PXRMXTMP,"TAXONOMY",TAX,"DATA",TYPE,IEN)) Q:IEN'>0!(FAIL=1) D
  1. ...I '$D(ARRAY("CODE",TYPE,IEN)) S FAIL=1 Q
  1. .I FAIL=0 S RESULT=TAX,MATCH=1 D BLDTAXC(.TEXT,.TCNT,RESULT,DIEN)
  1. Q RESULT
  1. ;
  1. ;determine what updates are needed for the Taxonomy
  1. ; add taxonomy as a finding item/additional finding item if prompts
  1. ;should be added
  1. ; calls UPDATE^DIE
  1. UPDATE(DIEN,TAX,UPDTYPE,CPTSTATUS,POVSTATUS,TAXNEEDS) ;
  1. N CLASS,DEFAULT,DNAME,FDA,FIND,IENCNT,IENROOT,IENS,MSG,NAME,SAME,START,TEXT,TDX,TPR,TYPE,TAXSEL
  1. S DNAME=$P($G(^PXRMD(801.41,DIEN,0)),U)
  1. D MES^XPDUTL("Updating record for dialog "_DNAME_" IEN: "_DIEN)
  1. S IENROOT(1)=DIEN
  1. S TDX=$$TOK^PXRMDTAX(TAX,"POV")
  1. S TPR=$$TOK^PXRMDTAX(TAX,"CPT")
  1. I TDX=1 D GETTAXDF^PXRMDTAX(.DEFAULT,"POV",$S(POVSTATUS=2:1,1:0))
  1. I TPR=1 D GETTAXDF^PXRMDTAX(.DEFAULT,"CPT",$S(CPTSTATUS=2:1,1:0))
  1. I TDX=0,TPR=0 D Q
  1. .S ^XTMP(PXRMXTMP,"DIALOG ERROR",DIEN,"ERROR")="A taxonomy does not have codes marked to be used in a dialog."
  1. S IENCNT=DIEN
  1. ;
  1. S FIND=$P($G(^PXRMD(801.41,DIEN,1)),U,5) I FIND'="" D G UPDATEX
  1. .S SAME=0 I FIND[811.2 D
  1. ..;if same find only add prompts if suppress prompts is null
  1. ..I +FIND=TAX D Q
  1. ...S SAME=1
  1. ...I UPDTYPE<2 D
  1. ....S TAXSEL="N"
  1. ....I TPR=1 S TAXSEL="P" I POVSTATUS=2 S FDA(801.41,DIEN_",",13)="2"
  1. ....I TDX=1 S TAXSEL="D" I CPTSTATUS=2 S FDA(801.41,DIEN_",",13)="2"
  1. ....I TPR=1,TDX=1 D
  1. .....K FDA(801.41,DIEN_",",13)
  1. .....S TAXSEL="A"
  1. .....I CPTSTATUS=POVSTATUS,POVSTATUS=2 S FDA(801.41,DIEN_",",13)="2" Q
  1. .....I CPTSTATUS'=POVSTATUS S TAXNEEDS=1
  1. ....S FDA(801.41,DIEN_",",123)=TAXSEL
  1. ....I TDX=1 D ADDTAXFL(DIEN,TAX,"POV",.DEFAULT,.IENCNT,.FDA)
  1. ....I TPR=1 D ADDTAXFL(DIEN,TAX,"CPT",.DEFAULT,.IENCNT,.FDA)
  1. ...I UPDTYPE=1 D PROMPTS(DIEN,TAXSEL,.DEFAULT,.IENCNT,.FDA)
  1. . I SAME=1 Q
  1. . D ADDFIND1(DIEN,TAX,.DEFAULT,.IENCNT,.FDA)
  1. ;
  1. D ADDFIND(DIEN,TAX,UPDTYPE,.DEFAULT,.IENCNT,.FDA)
  1. ;
  1. UPDATEX ;
  1. ;populate edit history
  1. N WP
  1. S WP(1,0)="Reminder Code Conversion Routine did the following:"
  1. D EDITDES(DIEN,.FDA,.WP)
  1. ;S IENCNT=IENCNT+1,IENS="+"_IENCNT_","_DIEN_","
  1. S IENCNT=IENCNT+1,IENS="+"_IENCNT_","_DIEN_","
  1. S FDA(801.44,IENS,.01)=DT
  1. S FDA(801.44,IENS,1)=DUZ
  1. S FDA(801.44,IENS,2)="WP"
  1. ;populate required fields from existing entry
  1. S NAME=$P($G(^PXRMD(801.41,DIEN,0)),U)
  1. S CLASS=$P($G(^PXRMD(801.41,DIEN,100)),U)
  1. S TYPE=$P($G(^PXRMD(801.41,DIEN,0)),U,4)
  1. ;
  1. S FDA(801.41,DIEN_",",.01)=NAME
  1. S FDA(801.41,DIEN_",",4)=TYPE
  1. S FDA(801.41,DIEN_",",100)=CLASS
  1. D UPDATE^DIE("","FDA","","MSG")
  1. I '$D(MSG) S ^XTMP(PXRMXTMP,"DIALOG",DIEN,"DONE")=1
  1. I $D(MSG) D AWRITE^PXRMUTIL("MSG")
  1. S ^XTMP(PXRMXTMP,"DIALOG UPDATED",DIEN)=1
  1. D MES^XPDUTL("Completed record updates for dialog "_DNAME_" IEN: "_DIEN)
  1. D MES^XPDUTL(" ")
  1. Q
  1. ;
  1. ;DEBUG CODE to be deleted
  1. WRITENAM ;
  1. N NAME,PXRMXTMP,TEMP,DIEN
  1. S PXRMXTMP="PXRM DIALOG CONVERSION",TEMP="DIALOG"
  1. S DIEN=0 F S DIEN=$O(^XTMP(PXRMXTMP,TEMP,DIEN)) Q:DIEN'>0 D
  1. .S NAME=$P($G(^PXRMD(801.41,DIEN,0)),U)
  1. .I NAME["WAT" D
  1. ..K ^XTMP(PXRMXTMP,TEMP,DIEN,"ICD9(")
  1. Q
  1. ;
  1. ;write out the final overview when the updates are done
  1. WRITE ;
  1. N ARRAY,CNT,FIRST,IEN,NAME,NODE,TEXT,CODESYS,CODE
  1. S CNT=0
  1. D MES^XPDUTL("Overview")
  1. I $D(^XTMP(PXRMXTMP,"TAXONOMY"))>0 D
  1. . S CNT=0
  1. . ;S CNT=CNT+1,TEXT(CNT)="The following Taxonomies were created:"
  1. . S IEN=0 F S IEN=$O(^XTMP(PXRMXTMP,"TAXONOMY",IEN)) Q:IEN'>0 S CNT=CNT+1
  1. . I CNT>0 D MES^XPDUTL("Created "_CNT_" taxonomies")
  1. ;
  1. I $D(^XTMP(PXRMXTMP,"DIALOG UPDATED"))>0 D
  1. . S CNT=0
  1. . S IEN=0 F S IEN=$O(^XTMP(PXRMXTMP,"DIALOG UPDATED",IEN)) Q:IEN'>0 S CNT=CNT+1
  1. . I CNT>0 D MES^XPDUTL("Updated "_CNT_" dialogs")
  1. I '$D(^XTMP(PXRMXTMP,"DIALOG UPDATED")),$D(^XTMP(PXRMXTMP,"TAXONOMY ERROR")) D MES^XPDUTL("No errors found") Q
  1. S CNT=1
  1. ;
  1. S TEXT(CNT,0)="Manual Correction is needed for the following items"
  1. I $D(^XTMP(PXRMXTMP,"DIALOG ERROR")) D
  1. .S CNT=CNT+1,TEXT(CNT,0)="",CNT=CNT+1,TEXT(CNT,0)="The following dialog(s) had an error in the update process."
  1. .S IEN=0 F S IEN=$O(^XTMP(PXRMXTMP,"DIALOG ERROR",IEN)) Q:IEN'>0 D
  1. ..S NAME=$P($G(^PXRMD(801.41,IEN,0)),U) I NAME="" Q
  1. ..S ARRAY(IEN)=""
  1. ..S CNT=CNT+1,TEXT(CNT,0)=" "_NAME
  1. ..I $D(^XTMP(PXRMXTMP,"DIALOG ERROR",IEN,"CODE")) D
  1. ...S CNT=CNT+1,TEXT(CNT,0)=" List of pre-conversion codes below:"
  1. ...S CODESYS="" F S CODESYS=$O(^XTMP(PXRMXTMP,"DIALOG ERROR",IEN,"CODE",CODESYS)) Q:CODESYS="" D
  1. ....S CODE="" F S CODE=$O(^XTMP(PXRMXTMP,"DIALOG ERROR",IEN,"CODE",CODESYS,CODE)) Q:CODE="" D
  1. .....S CNT=CNT+1,TEXT(CNT,0)=" "_CODESYS_": "_CODE
  1. ..I $D(^XTMP(PXRMXTMP,"DIALOG ERROR",IEN,"ERROR")) S CNT=CNT+1,TEXT(CNT,0)=" "_$G(^XTMP(PXRMXTMP,"DIALOG ERROR",IEN,"ERROR"))
  1. ;
  1. I $D(^XTMP(PXRMXTMP,"TAXONOMY ERROR")) D
  1. .S CNT=CNT+1,TEXT(CNT,0)="",CNT=CNT+1,TEXT(CNT,0)="The following taxonomies are missing codes."
  1. .S IEN=0 F S IEN=$O(^XTMP(PXRMXTMP,"TAXONOMY ERROR",IEN)) Q:IEN'>0 D
  1. ..S NAME=$P($G(^PXD(811.2,IEN,0)),U) I NAME="" Q
  1. ..S CNT=CNT+1,TEXT(CNT,0)=" "_NAME
  1. ..S CNT=CNT+1,TEXT(CNT,0)=" List of pre-conversion codes below:"
  1. ..S CODESYS="" F S CODESYS=$O(^XTMP(PXRMXTMP,"TAXONOMY ERROR",IEN,"CODE",CODESYS)) Q:CODESYS="" D
  1. ...S CODE="" F S CODE=$O(^XTMP(PXRMXTMP,"TAXONOMY ERROR",IEN,"CODE",CODESYS,CODE)) Q:CODE="" D
  1. ....S CNT=CNT+1,TEXT(CNT,0)=" "_CODESYS_": "_CODE
  1. ;
  1. S FIRST=1
  1. S IEN=0 F S IEN=$O(^XTMP(PXRMXTMP,"DIALOG",IEN)) Q:IEN'>0 D
  1. .I $G(^XTMP(PXRMXTMP,"DIALOG",IEN,"DONE"))=1 Q
  1. .I $D(ARRAY(IEN)) Q
  1. .S NAME=$P($G(^PXRMD(801.41,IEN,0)),U) I NAME="" Q
  1. .I FIRST=1 D
  1. ..S CNT=CNT+1,TEXT(CNT,0)="",CNT=CNT+1,TEXT(CNT,0)="The following dialogs took an error in UPDATE^DIE.",FIRST=0
  1. .S CNT=CNT+1,TEXT(CNT,0)=" "_NAME
  1. ;
  1. I CNT>1 D
  1. .K ^TMP("PXRMERRM")
  1. .M ^TMP("PXRMERRM",$J)=TEXT
  1. .D SEND^PXRMMSG("PXRMERRM","Clinical Reminder Patch 26 Errors.")
  1. ;
  1. ;D MES^XPDUTL(.TEXT)
  1. ;D MES^XPDUTL(.TEXT)
  1. Q
  1. ;