PXRMREDF ; SLC/PJH - Edit PXRM reminder findings. ;06/01/2021
;;2.0;CLINICAL REMINDERS;**4,6,12,26,47,46,65**;Feb 04, 2005;Build 438
;
; API ICR
;$$FILE^XLFSHAN 6157
;
; Called by PXRMREDT which newes and initializes DEF, DEF1, DEF2.
;
SET S:'$D(^PXD(811.9,DA,20,0)) ^PXD(811.9,DA,20,0)="^811.902V" Q
;Display ALL findings
;
;--------------------
DSPALL(TYPE,NODE,DA,LIST) ;
I '$D(LIST) D Q
. I TYPE="D" W !!,"Reminder has no findings!",!
. I TYPE="T" W !!,"Reminder Term has no findings!",!
N FINUM,FMTSTR,FNAME,FTYPE,IND,NL,OUTPUT,TEXTSTR
W !!,"Choose from:",!
S FMTSTR="2L1^60L1^9L1^3R"
S FTYPE=""
F S FTYPE=$O(LIST(FTYPE)) Q:FTYPE="" D
. S FNAME=0
. F S FNAME=$O(LIST(FTYPE,FNAME)) Q:FNAME="" D
.. S FINUM=0
.. F S FINUM=$O(LIST(FTYPE,FNAME,FINUM)) Q:FINUM="" D
... S TEXTSTR=FTYPE_U_FNAME_U_"Finding #"_U_FINUM
... D COLFMT^PXRMTEXT(FMTSTR,TEXTSTR," ",.NL,.OUTPUT)
... F IND=1:1:NL W !,OUTPUT(IND)
;Update
D LIST^PXRMREDT(NODE,DA,.DEF1,.LIST)
Q
;
;Edit individual FINDING entry
;-----------------------------
FEDIT(IEN) ;
N CFIEN,DA,DIC,DIE,DR,ETYPE,GLOB
N STATUS,TERMSTAT,TIEN,TERMTYPE,VF,WPIEN,Y
S DA(1)=IEN
S DIC="^PXD(811.9,"_IEN_",20,"
I $P(^PXD(811.9,IEN,100),U)="N",$G(PXRMINST)'=1 S DIC(0)="QEA"
E S DIC(0)="QEAL"
S DIC("A")="Select FINDING: "
S DIC("P")="811.902V"
D ^DIC
I Y=-1 S DTOUT=1 Q
S DIE=DIC K DIC
S DIE("NO^")="OUTOK"
S DA=+Y,GLOB=$P($P(Y,U,2),";",2) Q:GLOB=""
S TYPE=$G(DEF1(GLOB))
S SDA(2)=DA(1),SDA(1)=DA
;Save term IEN
S STATUS=0
I TYPE="CF" S CFIEN=$P($P(Y,U,2),";",1) D HELP^PXRMCF(CFIEN)
I TYPE="MH" D WARN^PXRMMH
I TYPE="RT" S TIEN=$P($P(Y,U,2),";",1)
;Finding record fields
W !!,"Editing Finding Number: "_$G(DA)
S DR=".01;3;I X=""0Y"" S Y=6;1;2;6;7;8;9;12;17"
;Taxonomy - use inactive problems
I TYPE="TX" D
.S TERMSTAT=$$TAXNODE^PXRMSTA1($P($P(Y,U,2),";"))
.I TERMSTAT="P" S DR=DR_";10" Q
.I TERMSTAT'=0 S DR=DR_";10",STATUS=1
I TYPE="RT" D
.S TERMTYPE=$$TERMTYPE(TIEN)
.I TERMTYPE["H" S DR=DR_";11//0"
;Health Factor - within category rank
I TYPE="HF" S DR=DR_";11//0"
;If V file INCLUDE VISIT DATA
S VF=$S(TYPE="ED":1,TYPE="EX":1,TYPE="HF":1,TYPE="IM":1,TYPE="ST":1,TYPE="TX":1,1:0)
I TYPE="RT",$P(TERMTYPE,U,2)="VF" S VF=1
I VF S DR=DR_";28"
;
;Immunization - Immunization Search Criteria
I TYPE="IM" S DR=DR_";29"
;Mental Health - scale
I TYPE="MH" S DR=DR_";13"
;Radiology procedure.
I TYPE="RP" S STATUS=1
;Orderable Item
I TYPE="OI" S DR=DR_";27",STATUS=1
;Rx Type
I (TYPE="DC")!(TYPE="DG")!(TYPE="DR") S DR=DR_";16;27",STATUS=1
;Condition, make the default for Condition Case Sensitive NO
S DR=DR_";14;15//NO;18"
I TYPE="CF" S DR=DR_";26"
;Found/not found text
S DR=DR_";4;5"
;
I TYPE="RT" D
. I TERMTYPE["D" S DR=DR_";16;27",STATUS=1
. I TERMTYPE["I" S DR=DR_";29"
. I TERMTYPE["O" S DR=DR_";27",STATUS=1
. I TERMTYPE["R" S STATUS=1
. I TERMTYPE["T" S STATUS=1
.I TERMTYPE[2 D
.. N MSG
.. S MSG(1)="Cannot set a status since the term contains multiple types of findings"
.. S MSG(2)="Edit the status field at the term level for each finding" H 2
.. D EN^DDIOL(.MSG)
;Edit finding record
D ^DIE
S $P(^PXD(811.9,IEN,20,0),U,3)=0
I $D(Y) S DTOUT=1 Q
;Check if deleted
I '$D(DA) Q
I STATUS=1,$D(Y)=0 D STATUS^PXRMSTA1(.DA,"D")
;
S ETYPE=$P(^PXD(811.9,IEN,20,SDA(1),0),U,1)
;Option to edit term findings
I $P(ETYPE,";",2)="PXRMD(811.5," D
. S TIEN=$P(ETYPE,";",1)
. D TMAP(IEN,TIEN)
Q
;
;Edit individual function finding entry
;-----------------------------
FFEDIT(IEN) ;
N DA,DIC,DIE,DR,Y
S DA(1)=IEN
S DIC="^PXD(811.9,"_IEN_",25,"
S DIC(0)="QEAL"
S DIC("A")="Select FUNCTION FINDING: "
D ^DIC
I Y=-1 S DTOUT=1 Q
S DIE=DIC K DIC
S DA=+Y
;Finding record fields
S DR=".01;3"
;Edit finding record
D ^DIE
I $D(Y) S DTOUT=1 Q
I '$D(DA) Q
;If the function string is null don't do the rest of the fields.
I $G(^PXD(811.9,IEN,25,DA,3))="" Q
S DR="20;1;2;11;12;15;I X=""0Y"" S Y=16;13;14;16"
D ^DIE
I $D(Y) S DTOUT=1 Q
I '$D(DA) Q
;Check if deleted
Q
;
;Edit Reminder Function Findings
;----------------------
FFIND ;
N DTOUT,DUOUT
F D Q:$D(DUOUT)!$D(DTOUT)
.D FFEDIT(DA) I $D(DUOUT)!$D(DTOUT) Q
K DUOUT,DTOUT
Q
;
;Edit Reminder Findings
;----------------------
FIND(LIST) ;
N DTOUT,DUOUT,NODE,SDA
D SET ; Check if node defined
S NODE="^PXD(811.9)"
F D Q:$D(DUOUT)!$D(DTOUT)
.;Display list of existing reminder findings
.W !!,"Reminder Definition Findings"
.D DSPALL("D",NODE,DA,.LIST)
.;Edit findings
.D FEDIT(DA) I $D(DUOUT)!$D(DTOUT) D LIST^PXRMREDT(NODE,DA,.DEF1,.LIST) Q
.;Update list with finding changes
.D LIST^PXRMREDT(NODE,DA,.DEF1,.LIST)
Q
;
;General help text routine
;-------------------------
HELP(CALL) ;
N HTEXT
N DIWF,DIWL,DIWR,IC
S DIWF="C70",DIWL=0,DIWR=70
;
I CALL=1 D
.S HTEXT(1)="Select the type of finding you wish to change or add."
.S HTEXT(2)="Type '?' for a list of the available finding types."
I CALL=2 D
.S HTEXT(1)="Select section of the reminder you wish to edit or 'All'"
.S HTEXT(2)="to step through all sections of the reminder definition."
I CALL=3 D
.S HTEXT(1)="Select 'Y' to edit the findings mapped to this term"
.S HTEXT(2)="or 'N' to return to select another reminder finding."
;
K ^UTILITY($J,"W")
S IC=""
F S IC=$O(HTEXT(IC)) Q:IC="" D
. S X=HTEXT(IC)
. D ^DIWP
W !
S IC=0
F S IC=$O(^UTILITY($J,"W",0,IC)) Q:IC="" D
. W !,^UTILITY($J,"W",0,IC,0)
K ^UTILITY($J,"W")
W !
Q
;
;Display TERM findings
;--------------------
TDSP(DA) ;
N FIRST,SUB,SUB1,TLST
S FIRST=1,SUB="",SUB1=""
;Build list of term findings
D TLST(.TLST,DA)
;Display list
F S SUB=$O(TLST(SUB)) Q:SUB="" D
.S SUB1=0
.F S SUB1=$O(TLST(SUB,SUB1)) Q:SUB1="" D
..I FIRST S FIRST=0 W !!,"Reminder Term Findings:",!!
..W SUB
..W ?8,SUB1,!
I FIRST W !!,"Term has no mapped findings",!!
Q
;
;List Reminders using this term
;------------------------------
TERMS(TIEN,RIEN) ;
;RIEN will be the reminder IEN if called from reminder edit
;or zero if called from term edit
N ARRAY,FIND,IEN,SUB,TCNT,RNAME
;Scan all reminders in file #811.9
S IEN=0,FIND="PXRMD(811.5,",TCNT=0
F S IEN=$O(^PXD(811.9,IEN)) Q:'IEN D
.;Exclude current reminder called in reminder edit
.I RIEN,IEN=RIEN Q
.;Check the term findings
.I '$D(^PXD(811.9,IEN,20,"E",FIND,TIEN)) Q
.;Add to reminder array
.S RNAME=$P($G(^PXD(811.9,IEN,0)),U)
.I RNAME="" S RNAME=IEN
.I '$D(ARRAY(RNAME)) S TCNT=TCNT+1
.S ARRAY(RNAME)=""
;
;Display list of reminders using the term
I TCNT D
.N TXT
.S TXT="This Reminder Term is" S:RIEN TXT=TXT_" also"
.S TXT=TXT_" used by the following Reminder Definition"
.I TCNT>1 S TXT=TXT_"s"
.W !!,TXT_":"
.S RNAME="" F S RNAME=$O(ARRAY(RNAME)) Q:RNAME="" W !," ",RNAME
Q
;
;------------------------------
;Check term for finding item to edit status item
TERMTYPE(TIEN) ;
N DRUG,FOUND,HF,ORD,OTHER,RAD,RESULT,TAX,TYPE,VF
S (DRUG,FOUND,HF,IMM,ORD,OTHER,RAD,RESULT,TAX,VF)=0
S TYPE="" F S TYPE=$O(^PXRMD(811.5,TIEN,20,"B",TYPE)) Q:TYPE="" D
. I TYPE["AUTTEDT(" S (OTHER,VF)=1 Q
. I TYPE["AUTTHF(" S (HF,OTHER,VF)=1 Q
. I TYPE["AUTTIMM(" S (IMM,OTHER,VF)=1 Q
. I TYPE["AUTTSK(" S (OTHER,VF)=1 Q
. I TYPE["ORD" S (ORD,FOUND)=1 Q
. I TYPE["PS" S (DRUG,FOUND)=1 Q
. I TYPE["PXD(811.2" S (FOUND,TAX,VF)=1 Q
. I TYPE["RAMIS" S (FOUND,RAD)=1 Q
. S OTHER=1
I RAD=1,ORD=0,TAX=0,DRUG=0,OTHER=0 S RESULT="R"
I RAD=0,ORD=1,TAX=0,DRUG=0,OTHER=0 S RESULT="O"
I RAD=0,ORD=0,TAX=1,DRUG=0,OTHER=0 S RESULT="T"
I RAD=0,ORD=0,TAX=0,DRUG=1,OTHER=0 S RESULT="D"
I OTHER=1 S RESULT=1 I FOUND=1 S RESULT=2
I RESULT="T" S RESULT=$$TAXTYPE^PXRMSTA1(TIEN,"")
I HF=1 S RESULT="H"_RESULT
I IMM=1 S RESULT="I"_RESULT
I VF=1 S RESULT=RESULT_U_"VF"
Q RESULT
;
;Build list of mapped findings for term
;--------------------------------------
TLST(ARRAY,DA) ;
N TYPE,DATA,GLOB,IEN,NAME,NODE,SUB
;Clear passed arrays
K ARRAY
;Build cross reference global to file number
;Get each finding
S SUB=0 F S SUB=$O(^PXRMD(811.5,DA,20,SUB)) Q:'SUB D
.S DATA=$G(^PXRMD(811.5,DA,20,SUB,0)) I DATA="" Q
.;Determine global and global ien
.S NODE=$P(DATA,U),GLOB=$P(NODE,";",2),IEN=$P(NODE,";")
.;Ignore null entries
.I (GLOB="")!(IEN="") Q
.;Work out the file type
.S TYPE=$G(DEF1(GLOB)) Q:TYPE=""
.S NAME=$P($G(@(U_GLOB_IEN_",0)")),U)
.S ARRAY(TYPE,NAME)=""
Q
;
;Map Term findings
;-----------------
TMAP(RIEN,TIEN) ;
N TOPT,TNAM
;Display any other reminders using this term
D TERMS(TIEN,RIEN)
;Term name
S TNAM=$P($G(^PXRMD(811.5,TIEN,0)),U)
;Give option to edit mapped findings (Y/N)
D TMASK(.TOPT,TNAM) Q:$D(DUOUT)!($D(DTOUT))
;Edit term findings
I TOPT="Y" D TRMED(TIEN)
Q
;
;Option to edit term findings
;----------------------------
TMASK(YESNO,TNAM) ;
N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
S DIR(0)="YA0"
S DIR("A")="Do you want to edit mapped findings for "_TNAM_": "
S (DIR("B"),YESNO)="N"
S DIR("?")="Enter Y or N. For detailed help type ??"
S DIR("??")=U_"D HELP^PXRMREDF(3)"
W !
D ^DIR K DIR
I $D(DIROUT)!$D(DIRUT) Q
I $D(DTOUT)!$D(DUOUT) Q
S YESNO=$E(Y(0))
Q
;
;Term edit
;---------
TRMED(DA) ;
N CS1,CS2,DIC,DLAYGO,DTOUT,DUOUT,Y
K DLAYGO,DTOUT,DUOUT,Y
;Display term findings
D TDSP(DA)
;Initialize change history
;DBIA 6157
S CS1=$$FILE^XLFSHAN(256,811.5,DA)
;Edit term findings
S DIC="^PXRMD(811.5,"
D EDIT^PXRMTMED(DIC,DA)
;Update change history
S CS2=$$FILE^XLFSHAN(256,811.5,DA)
I CS2=0 Q
I CS2'=CS1 D SEHIST^PXRMUTIL(811.5,DIC,DA)
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPXRMREDF 9826 printed Nov 22, 2024@16:58:59 Page 2
PXRMREDF ; SLC/PJH - Edit PXRM reminder findings. ;06/01/2021
+1 ;;2.0;CLINICAL REMINDERS;**4,6,12,26,47,46,65**;Feb 04, 2005;Build 438
+2 ;
+3 ; API ICR
+4 ;$$FILE^XLFSHAN 6157
+5 ;
+6 ; Called by PXRMREDT which newes and initializes DEF, DEF1, DEF2.
+7 ;
SET if '$DATA(^PXD(811.9,DA,20,0))
SET ^PXD(811.9,DA,20,0)="^811.902V"
QUIT
+1 ;Display ALL findings
+2 ;
+3 ;--------------------
DSPALL(TYPE,NODE,DA,LIST) ;
+1 IF '$DATA(LIST)
Begin DoDot:1
+2 IF TYPE="D"
WRITE !!,"Reminder has no findings!",!
+3 IF TYPE="T"
WRITE !!,"Reminder Term has no findings!",!
End DoDot:1
QUIT
+4 NEW FINUM,FMTSTR,FNAME,FTYPE,IND,NL,OUTPUT,TEXTSTR
+5 WRITE !!,"Choose from:",!
+6 SET FMTSTR="2L1^60L1^9L1^3R"
+7 SET FTYPE=""
+8 FOR
SET FTYPE=$ORDER(LIST(FTYPE))
if FTYPE=""
QUIT
Begin DoDot:1
+9 SET FNAME=0
+10 FOR
SET FNAME=$ORDER(LIST(FTYPE,FNAME))
if FNAME=""
QUIT
Begin DoDot:2
+11 SET FINUM=0
+12 FOR
SET FINUM=$ORDER(LIST(FTYPE,FNAME,FINUM))
if FINUM=""
QUIT
Begin DoDot:3
+13 SET TEXTSTR=FTYPE_U_FNAME_U_"Finding #"_U_FINUM
+14 DO COLFMT^PXRMTEXT(FMTSTR,TEXTSTR," ",.NL,.OUTPUT)
+15 FOR IND=1:1:NL
WRITE !,OUTPUT(IND)
End DoDot:3
End DoDot:2
End DoDot:1
+16 ;Update
+17 DO LIST^PXRMREDT(NODE,DA,.DEF1,.LIST)
+18 QUIT
+19 ;
+20 ;Edit individual FINDING entry
+21 ;-----------------------------
FEDIT(IEN) ;
+1 NEW CFIEN,DA,DIC,DIE,DR,ETYPE,GLOB
+2 NEW STATUS,TERMSTAT,TIEN,TERMTYPE,VF,WPIEN,Y
+3 SET DA(1)=IEN
+4 SET DIC="^PXD(811.9,"_IEN_",20,"
+5 IF $PIECE(^PXD(811.9,IEN,100),U)="N"
IF $GET(PXRMINST)'=1
SET DIC(0)="QEA"
+6 IF '$TEST
SET DIC(0)="QEAL"
+7 SET DIC("A")="Select FINDING: "
+8 SET DIC("P")="811.902V"
+9 DO ^DIC
+10 IF Y=-1
SET DTOUT=1
QUIT
+11 SET DIE=DIC
KILL DIC
+12 SET DIE("NO^")="OUTOK"
+13 SET DA=+Y
SET GLOB=$PIECE($PIECE(Y,U,2),";",2)
if GLOB=""
QUIT
+14 SET TYPE=$GET(DEF1(GLOB))
+15 SET SDA(2)=DA(1)
SET SDA(1)=DA
+16 ;Save term IEN
+17 SET STATUS=0
+18 IF TYPE="CF"
SET CFIEN=$PIECE($PIECE(Y,U,2),";",1)
DO HELP^PXRMCF(CFIEN)
+19 IF TYPE="MH"
DO WARN^PXRMMH
+20 IF TYPE="RT"
SET TIEN=$PIECE($PIECE(Y,U,2),";",1)
+21 ;Finding record fields
+22 WRITE !!,"Editing Finding Number: "_$GET(DA)
+23 SET DR=".01;3;I X=""0Y"" S Y=6;1;2;6;7;8;9;12;17"
+24 ;Taxonomy - use inactive problems
+25 IF TYPE="TX"
Begin DoDot:1
+26 SET TERMSTAT=$$TAXNODE^PXRMSTA1($PIECE($PIECE(Y,U,2),";"))
+27 IF TERMSTAT="P"
SET DR=DR_";10"
QUIT
+28 IF TERMSTAT'=0
SET DR=DR_";10"
SET STATUS=1
End DoDot:1
+29 IF TYPE="RT"
Begin DoDot:1
+30 SET TERMTYPE=$$TERMTYPE(TIEN)
+31 IF TERMTYPE["H"
SET DR=DR_";11//0"
End DoDot:1
+32 ;Health Factor - within category rank
+33 IF TYPE="HF"
SET DR=DR_";11//0"
+34 ;If V file INCLUDE VISIT DATA
+35 SET VF=$SELECT(TYPE="ED":1,TYPE="EX":1,TYPE="HF":1,TYPE="IM":1,TYPE="ST":1,TYPE="TX":1,1:0)
+36 IF TYPE="RT"
IF $PIECE(TERMTYPE,U,2)="VF"
SET VF=1
+37 IF VF
SET DR=DR_";28"
+38 ;
+39 ;Immunization - Immunization Search Criteria
+40 IF TYPE="IM"
SET DR=DR_";29"
+41 ;Mental Health - scale
+42 IF TYPE="MH"
SET DR=DR_";13"
+43 ;Radiology procedure.
+44 IF TYPE="RP"
SET STATUS=1
+45 ;Orderable Item
+46 IF TYPE="OI"
SET DR=DR_";27"
SET STATUS=1
+47 ;Rx Type
+48 IF (TYPE="DC")!(TYPE="DG")!(TYPE="DR")
SET DR=DR_";16;27"
SET STATUS=1
+49 ;Condition, make the default for Condition Case Sensitive NO
+50 SET DR=DR_";14;15//NO;18"
+51 IF TYPE="CF"
SET DR=DR_";26"
+52 ;Found/not found text
+53 SET DR=DR_";4;5"
+54 ;
+55 IF TYPE="RT"
Begin DoDot:1
+56 IF TERMTYPE["D"
SET DR=DR_";16;27"
SET STATUS=1
+57 IF TERMTYPE["I"
SET DR=DR_";29"
+58 IF TERMTYPE["O"
SET DR=DR_";27"
SET STATUS=1
+59 IF TERMTYPE["R"
SET STATUS=1
+60 IF TERMTYPE["T"
SET STATUS=1
+61 IF TERMTYPE[2
Begin DoDot:2
+62 NEW MSG
+63 SET MSG(1)="Cannot set a status since the term contains multiple types of findings"
+64 SET MSG(2)="Edit the status field at the term level for each finding"
HANG 2
+65 DO EN^DDIOL(.MSG)
End DoDot:2
End DoDot:1
+66 ;Edit finding record
+67 DO ^DIE
+68 SET $PIECE(^PXD(811.9,IEN,20,0),U,3)=0
+69 IF $DATA(Y)
SET DTOUT=1
QUIT
+70 ;Check if deleted
+71 IF '$DATA(DA)
QUIT
+72 IF STATUS=1
IF $DATA(Y)=0
DO STATUS^PXRMSTA1(.DA,"D")
+73 ;
+74 SET ETYPE=$PIECE(^PXD(811.9,IEN,20,SDA(1),0),U,1)
+75 ;Option to edit term findings
+76 IF $PIECE(ETYPE,";",2)="PXRMD(811.5,"
Begin DoDot:1
+77 SET TIEN=$PIECE(ETYPE,";",1)
+78 DO TMAP(IEN,TIEN)
End DoDot:1
+79 QUIT
+80 ;
+81 ;Edit individual function finding entry
+82 ;-----------------------------
FFEDIT(IEN) ;
+1 NEW DA,DIC,DIE,DR,Y
+2 SET DA(1)=IEN
+3 SET DIC="^PXD(811.9,"_IEN_",25,"
+4 SET DIC(0)="QEAL"
+5 SET DIC("A")="Select FUNCTION FINDING: "
+6 DO ^DIC
+7 IF Y=-1
SET DTOUT=1
QUIT
+8 SET DIE=DIC
KILL DIC
+9 SET DA=+Y
+10 ;Finding record fields
+11 SET DR=".01;3"
+12 ;Edit finding record
+13 DO ^DIE
+14 IF $DATA(Y)
SET DTOUT=1
QUIT
+15 IF '$DATA(DA)
QUIT
+16 ;If the function string is null don't do the rest of the fields.
+17 IF $GET(^PXD(811.9,IEN,25,DA,3))=""
QUIT
+18 SET DR="20;1;2;11;12;15;I X=""0Y"" S Y=16;13;14;16"
+19 DO ^DIE
+20 IF $DATA(Y)
SET DTOUT=1
QUIT
+21 IF '$DATA(DA)
QUIT
+22 ;Check if deleted
+23 QUIT
+24 ;
+25 ;Edit Reminder Function Findings
+26 ;----------------------
FFIND ;
+1 NEW DTOUT,DUOUT
+2 FOR
Begin DoDot:1
+3 DO FFEDIT(DA)
IF $DATA(DUOUT)!$DATA(DTOUT)
QUIT
End DoDot:1
if $DATA(DUOUT)!$DATA(DTOUT)
QUIT
+4 KILL DUOUT,DTOUT
+5 QUIT
+6 ;
+7 ;Edit Reminder Findings
+8 ;----------------------
FIND(LIST) ;
+1 NEW DTOUT,DUOUT,NODE,SDA
+2 ; Check if node defined
DO SET
+3 SET NODE="^PXD(811.9)"
+4 FOR
Begin DoDot:1
+5 ;Display list of existing reminder findings
+6 WRITE !!,"Reminder Definition Findings"
+7 DO DSPALL("D",NODE,DA,.LIST)
+8 ;Edit findings
+9 DO FEDIT(DA)
IF $DATA(DUOUT)!$DATA(DTOUT)
DO LIST^PXRMREDT(NODE,DA,.DEF1,.LIST)
QUIT
+10 ;Update list with finding changes
+11 DO LIST^PXRMREDT(NODE,DA,.DEF1,.LIST)
End DoDot:1
if $DATA(DUOUT)!$DATA(DTOUT)
QUIT
+12 QUIT
+13 ;
+14 ;General help text routine
+15 ;-------------------------
HELP(CALL) ;
+1 NEW HTEXT
+2 NEW DIWF,DIWL,DIWR,IC
+3 SET DIWF="C70"
SET DIWL=0
SET DIWR=70
+4 ;
+5 IF CALL=1
Begin DoDot:1
+6 SET HTEXT(1)="Select the type of finding you wish to change or add."
+7 SET HTEXT(2)="Type '?' for a list of the available finding types."
End DoDot:1
+8 IF CALL=2
Begin DoDot:1
+9 SET HTEXT(1)="Select section of the reminder you wish to edit or 'All'"
+10 SET HTEXT(2)="to step through all sections of the reminder definition."
End DoDot:1
+11 IF CALL=3
Begin DoDot:1
+12 SET HTEXT(1)="Select 'Y' to edit the findings mapped to this term"
+13 SET HTEXT(2)="or 'N' to return to select another reminder finding."
End DoDot:1
+14 ;
+15 KILL ^UTILITY($JOB,"W")
+16 SET IC=""
+17 FOR
SET IC=$ORDER(HTEXT(IC))
if IC=""
QUIT
Begin DoDot:1
+18 SET X=HTEXT(IC)
+19 DO ^DIWP
End DoDot:1
+20 WRITE !
+21 SET IC=0
+22 FOR
SET IC=$ORDER(^UTILITY($JOB,"W",0,IC))
if IC=""
QUIT
Begin DoDot:1
+23 WRITE !,^UTILITY($JOB,"W",0,IC,0)
End DoDot:1
+24 KILL ^UTILITY($JOB,"W")
+25 WRITE !
+26 QUIT
+27 ;
+28 ;Display TERM findings
+29 ;--------------------
TDSP(DA) ;
+1 NEW FIRST,SUB,SUB1,TLST
+2 SET FIRST=1
SET SUB=""
SET SUB1=""
+3 ;Build list of term findings
+4 DO TLST(.TLST,DA)
+5 ;Display list
+6 FOR
SET SUB=$ORDER(TLST(SUB))
if SUB=""
QUIT
Begin DoDot:1
+7 SET SUB1=0
+8 FOR
SET SUB1=$ORDER(TLST(SUB,SUB1))
if SUB1=""
QUIT
Begin DoDot:2
+9 IF FIRST
SET FIRST=0
WRITE !!,"Reminder Term Findings:",!!
+10 WRITE SUB
+11 WRITE ?8,SUB1,!
End DoDot:2
End DoDot:1
+12 IF FIRST
WRITE !!,"Term has no mapped findings",!!
+13 QUIT
+14 ;
+15 ;List Reminders using this term
+16 ;------------------------------
TERMS(TIEN,RIEN) ;
+1 ;RIEN will be the reminder IEN if called from reminder edit
+2 ;or zero if called from term edit
+3 NEW ARRAY,FIND,IEN,SUB,TCNT,RNAME
+4 ;Scan all reminders in file #811.9
+5 SET IEN=0
SET FIND="PXRMD(811.5,"
SET TCNT=0
+6 FOR
SET IEN=$ORDER(^PXD(811.9,IEN))
if 'IEN
QUIT
Begin DoDot:1
+7 ;Exclude current reminder called in reminder edit
+8 IF RIEN
IF IEN=RIEN
QUIT
+9 ;Check the term findings
+10 IF '$DATA(^PXD(811.9,IEN,20,"E",FIND,TIEN))
QUIT
+11 ;Add to reminder array
+12 SET RNAME=$PIECE($GET(^PXD(811.9,IEN,0)),U)
+13 IF RNAME=""
SET RNAME=IEN
+14 IF '$DATA(ARRAY(RNAME))
SET TCNT=TCNT+1
+15 SET ARRAY(RNAME)=""
End DoDot:1
+16 ;
+17 ;Display list of reminders using the term
+18 IF TCNT
Begin DoDot:1
+19 NEW TXT
+20 SET TXT="This Reminder Term is"
if RIEN
SET TXT=TXT_" also"
+21 SET TXT=TXT_" used by the following Reminder Definition"
+22 IF TCNT>1
SET TXT=TXT_"s"
+23 WRITE !!,TXT_":"
+24 SET RNAME=""
FOR
SET RNAME=$ORDER(ARRAY(RNAME))
if RNAME=""
QUIT
WRITE !," ",RNAME
End DoDot:1
+25 QUIT
+26 ;
+27 ;------------------------------
+28 ;Check term for finding item to edit status item
TERMTYPE(TIEN) ;
+1 NEW DRUG,FOUND,HF,ORD,OTHER,RAD,RESULT,TAX,TYPE,VF
+2 SET (DRUG,FOUND,HF,IMM,ORD,OTHER,RAD,RESULT,TAX,VF)=0
+3 SET TYPE=""
FOR
SET TYPE=$ORDER(^PXRMD(811.5,TIEN,20,"B",TYPE))
if TYPE=""
QUIT
Begin DoDot:1
+4 IF TYPE["AUTTEDT("
SET (OTHER,VF)=1
QUIT
+5 IF TYPE["AUTTHF("
SET (HF,OTHER,VF)=1
QUIT
+6 IF TYPE["AUTTIMM("
SET (IMM,OTHER,VF)=1
QUIT
+7 IF TYPE["AUTTSK("
SET (OTHER,VF)=1
QUIT
+8 IF TYPE["ORD"
SET (ORD,FOUND)=1
QUIT
+9 IF TYPE["PS"
SET (DRUG,FOUND)=1
QUIT
+10 IF TYPE["PXD(811.2"
SET (FOUND,TAX,VF)=1
QUIT
+11 IF TYPE["RAMIS"
SET (FOUND,RAD)=1
QUIT
+12 SET OTHER=1
End DoDot:1
+13 IF RAD=1
IF ORD=0
IF TAX=0
IF DRUG=0
IF OTHER=0
SET RESULT="R"
+14 IF RAD=0
IF ORD=1
IF TAX=0
IF DRUG=0
IF OTHER=0
SET RESULT="O"
+15 IF RAD=0
IF ORD=0
IF TAX=1
IF DRUG=0
IF OTHER=0
SET RESULT="T"
+16 IF RAD=0
IF ORD=0
IF TAX=0
IF DRUG=1
IF OTHER=0
SET RESULT="D"
+17 IF OTHER=1
SET RESULT=1
IF FOUND=1
SET RESULT=2
+18 IF RESULT="T"
SET RESULT=$$TAXTYPE^PXRMSTA1(TIEN,"")
+19 IF HF=1
SET RESULT="H"_RESULT
+20 IF IMM=1
SET RESULT="I"_RESULT
+21 IF VF=1
SET RESULT=RESULT_U_"VF"
+22 QUIT RESULT
+23 ;
+24 ;Build list of mapped findings for term
+25 ;--------------------------------------
TLST(ARRAY,DA) ;
+1 NEW TYPE,DATA,GLOB,IEN,NAME,NODE,SUB
+2 ;Clear passed arrays
+3 KILL ARRAY
+4 ;Build cross reference global to file number
+5 ;Get each finding
+6 SET SUB=0
FOR
SET SUB=$ORDER(^PXRMD(811.5,DA,20,SUB))
if 'SUB
QUIT
Begin DoDot:1
+7 SET DATA=$GET(^PXRMD(811.5,DA,20,SUB,0))
IF DATA=""
QUIT
+8 ;Determine global and global ien
+9 SET NODE=$PIECE(DATA,U)
SET GLOB=$PIECE(NODE,";",2)
SET IEN=$PIECE(NODE,";")
+10 ;Ignore null entries
+11 IF (GLOB="")!(IEN="")
QUIT
+12 ;Work out the file type
+13 SET TYPE=$GET(DEF1(GLOB))
if TYPE=""
QUIT
+14 SET NAME=$PIECE($GET(@(U_GLOB_IEN_",0)")),U)
+15 SET ARRAY(TYPE,NAME)=""
End DoDot:1
+16 QUIT
+17 ;
+18 ;Map Term findings
+19 ;-----------------
TMAP(RIEN,TIEN) ;
+1 NEW TOPT,TNAM
+2 ;Display any other reminders using this term
+3 DO TERMS(TIEN,RIEN)
+4 ;Term name
+5 SET TNAM=$PIECE($GET(^PXRMD(811.5,TIEN,0)),U)
+6 ;Give option to edit mapped findings (Y/N)
+7 DO TMASK(.TOPT,TNAM)
if $DATA(DUOUT)!($DATA(DTOUT))
QUIT
+8 ;Edit term findings
+9 IF TOPT="Y"
DO TRMED(TIEN)
+10 QUIT
+11 ;
+12 ;Option to edit term findings
+13 ;----------------------------
TMASK(YESNO,TNAM) ;
+1 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
+2 SET DIR(0)="YA0"
+3 SET DIR("A")="Do you want to edit mapped findings for "_TNAM_": "
+4 SET (DIR("B"),YESNO)="N"
+5 SET DIR("?")="Enter Y or N. For detailed help type ??"
+6 SET DIR("??")=U_"D HELP^PXRMREDF(3)"
+7 WRITE !
+8 DO ^DIR
KILL DIR
+9 IF $DATA(DIROUT)!$DATA(DIRUT)
QUIT
+10 IF $DATA(DTOUT)!$DATA(DUOUT)
QUIT
+11 SET YESNO=$EXTRACT(Y(0))
+12 QUIT
+13 ;
+14 ;Term edit
+15 ;---------
TRMED(DA) ;
+1 NEW CS1,CS2,DIC,DLAYGO,DTOUT,DUOUT,Y
+2 KILL DLAYGO,DTOUT,DUOUT,Y
+3 ;Display term findings
+4 DO TDSP(DA)
+5 ;Initialize change history
+6 ;DBIA 6157
+7 SET CS1=$$FILE^XLFSHAN(256,811.5,DA)
+8 ;Edit term findings
+9 SET DIC="^PXRMD(811.5,"
+10 DO EDIT^PXRMTMED(DIC,DA)
+11 ;Update change history
+12 SET CS2=$$FILE^XLFSHAN(256,811.5,DA)
+13 IF CS2=0
QUIT
+14 IF CS2'=CS1
DO SEHIST^PXRMUTIL(811.5,DIC,DA)
+15 QUIT
+16 ;