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

PXHFMGR.m

Go to the documentation of this file.
  1. PXHFMGR ;SLC/PKR - List Manager routines for Health Factors. ;11/05/2018
  1. ;;1.0;PCE PATIENT CARE ENCOUNTER;**211**;Aug 12, 1996;Build 454
  1. ;
  1. ;=========================================
  1. ADD ;Add a new entry.
  1. S VALMBCK="R"
  1. D CLEAR^VALM1
  1. N CAT,CLASS,DIR,DIRUT,DOHS,ETYPE,L3C,LEN,NAME,TEXT,X,Y
  1. NAME S DIR(0)="9999999.64,.01A"
  1. S DIR("A")="Enter a new Health Factor Name: "
  1. D ^DIR
  1. I $D(DIRUT) S VALMBCK="R" Q
  1. S NAME=X
  1. I $D(^AUTTHF("B",NAME)) D G NAME
  1. . S TEXT(1)=NAME_" already exists, choose a different name or use the EDIT action to edit that entry."
  1. . S TEXT(2)=" "
  1. . D EN^DDIOL(.TEXT)
  1. ;
  1. S DIR(0)="9999999.64,.1A"
  1. S DIR("A")="Enter the Entry Type: "
  1. D ^DIR
  1. I $D(DIRUT) S VALMBCK="R" Q
  1. S ETYPE=Y(0)
  1. ;If the Entry Type is "C" check the name for the appended "[C]".
  1. I ETYPE="CATEGORY" S NAME=$$CATNCHK(NAME)
  1. I NAME="^" G NAME
  1. S LEN=$L(NAME),L3C=$E(NAME,(LEN-2),LEN)
  1. ;If the name has the appended '[C]' make sure the Entry Type is
  1. ;category.
  1. I (ETYPE="FACTOR"),(L3C="[C]") D G NAME
  1. . S TEXT(1)="Factor names cannot end with '[C]', try again."
  1. . S TEXT(2)=" "
  1. . D EN^DDIOL(.TEXT)
  1. . H 2
  1. ;
  1. ;Category is required for factors.
  1. I ETYPE="FACTOR" D
  1. . S DIR(0)="9999999.64,.03A"
  1. . S DIR("A")="Enter the Category: "
  1. . D ^DIR
  1. . I '$D(DIRUT) S CAT=$P(Y,U,2)
  1. I $D(DIRUT) S VALMBCK="R" Q
  1. ;
  1. S DIR(0)="9999999.64,100A"
  1. S DIR("A")="Enter the Class: "
  1. D ^DIR
  1. I $D(DIRUT) S VALMBCK="R" Q
  1. S CLASS=Y(0)
  1. ;
  1. S DIR(0)="9999999.64,.08A"
  1. S DIR("A")="Enter Display on Health Summary: "
  1. D ^DIR
  1. I $D(DIRUT) S VALMBCK="R" Q
  1. S DOHS=Y(0)
  1. N FDA,IEN,MSG
  1. S FDA(9999999.64,"+1,",.01)=NAME
  1. I $G(CAT)'="" S FDA(9999999.64,"+1,",.03)=CAT
  1. S FDA(9999999.64,"+1,",.08)=DOHS
  1. S FDA(9999999.64,"+1,",.1)=ETYPE
  1. S FDA(9999999.64,"+1,",100)=CLASS
  1. D UPDATE^DIE("E","FDA","IEN","MSG")
  1. I $D(MSG) D Q
  1. . D EN^DDIOL("FileMan could not create the new entry, the FileMan error message is:")
  1. . D AWRITE^PXUTIL("MSG")
  1. . H 3
  1. D SMANEDIT^PXHFSM(IEN(1),1)
  1. Q
  1. ;
  1. ;=========================================
  1. BLDLIST(NODE) ;Build the list of Health Factor file entries.
  1. N IEN,DESC,NAME
  1. K ^TMP(NODE,$J)
  1. ;Build the list in alphabetical order.
  1. S NAME="",VALMCNT=0
  1. F S NAME=$O(^AUTTHF("B",NAME)) Q:NAME="" D
  1. . S IEN=$O(^AUTTHF("B",NAME,""))
  1. . S VALMCNT=VALMCNT+1
  1. . S ^TMP(NODE,$J,"SEL",VALMCNT)=IEN
  1. . S ^TMP(NODE,$J,"IEN",IEN)=VALMCNT
  1. . S DESC=$G(^AUTTHF(IEN,201,1,0))
  1. . S ^TMP(NODE,$J,VALMCNT,0)=$$FORMAT(VALMCNT,NAME,DESC)
  1. . S ^TMP(NODE,$J,"IDX",VALMCNT,VALMCNT)=""
  1. . S ^TMP(NODE,$J,"LINES",VALMCNT)=VALMCNT_U_VALMCNT
  1. S ^TMP(NODE,$J,"VALMCNT")=VALMCNT
  1. S ^TMP(NODE,$J,"NHF")=VALMCNT
  1. Q
  1. ;
  1. ;=========================================
  1. CATNCHK(NAME) ;If the Entry Type is category make sure the name is
  1. ;appended with [C]. This entry point is used when adding a new entry.
  1. N CNAME
  1. S LEN=$L(NAME),L3C=$E(NAME,(LEN-2),LEN)
  1. I L3C="[C]" Q NAME
  1. D EN^DDIOL("Category names must end with '[C]', appending it for you.")
  1. S CNAME=NAME_" [C]"
  1. D EN^DDIOL(CNAME)
  1. I $L(CNAME)>64 D
  1. . D EN^DDIOL("exceeds 64 characters, it cannot be added, try again!")
  1. . H 3
  1. . S CNAME="^"
  1. Q CNAME
  1. ;
  1. ;=========================================
  1. CLOG(IEN) ;Display the change log.
  1. D LMCLBROW^PXSINQ(9999999.64,"110*",IEN)
  1. Q
  1. ;
  1. ;=========================================
  1. CLOGS ;Display Change Log for a selected entry.
  1. N IEN
  1. ;Get the entry
  1. S IEN=+$$GETSEL("Display the change log for which health factor?")
  1. S VALMBCK="R"
  1. I IEN=0 S VALMBCK="R" Q
  1. D CLOG(IEN)
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. ;=========================================
  1. COPY(IEN) ;Copy a selected entry to a new name.
  1. D FULL^VALM1
  1. D COPY^PXCOPY(9999999.64,IEN)
  1. D BLDLIST^PXHFMGR("PXHFL")
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. ;=========================================
  1. COPYS ;Copy a selected entry.
  1. N IEN
  1. ;Get the entry
  1. S IEN=+$$GETSEL("Select health factor to copy")
  1. I IEN=0 S VALMBCK="R" Q
  1. D COPY(IEN)
  1. Q
  1. ;
  1. ;=========================================
  1. EDITS ;Edit a selected entry.
  1. N CLASS,IEN
  1. ;Get the entry
  1. S IEN=+$$GETSEL("Select the health factor to edit")
  1. I IEN=0 S VALMBCK="R" Q
  1. D SMANEDIT^PXHFSM(IEN,0)
  1. Q
  1. ;
  1. ;=========================================
  1. ENTRY ;Entry code
  1. D INITMPG^PXHFMGR
  1. D BLDLIST^PXHFMGR("PXHFL")
  1. D XQORM
  1. Q
  1. ;
  1. ;=========================================
  1. EXIT ;Exit code
  1. D INITMPG^PXHFMGR
  1. D CLEAN^VALM10
  1. D FULL^VALM1
  1. S VALMBCK="Q"
  1. Q
  1. ;
  1. ;=========================================
  1. FORMAT(NUMBER,NAME,DESC) ;Format entry number, name,
  1. ;and first line of description for LM display.
  1. N CAT,LNAME,TEXT,TDESC,TNAME
  1. S LNAME=$L(NAME)
  1. I LNAME<56 S TNAME=NAME
  1. E D
  1. . N CAT
  1. . S CAT=$S($E(NAME,(LNAME-2),LNAME)="[C]":1,1:0)
  1. . S TNAME=$S('CAT:$E(NAME,1,52)_"...",1:$E(NAME,1,49)_"...[C]")
  1. S TEXT=$$RJ^XLFSTR(NUMBER,5," ")_" "_TNAME
  1. S TDESC=$S(DESC="":"",$L(DESC)<17:DESC,1:$E(DESC,1,13)_"...")
  1. I TDESC'="" S TEXT=TEXT_$$REPEAT^XLFSTR(" ",(63-$L(TEXT)))_TDESC
  1. Q TEXT
  1. ;
  1. ;=========================================
  1. GETSEL(TEXT) ;Get a single selection
  1. N DIR,NHF,X,Y
  1. S NHF=+$G(^TMP("PXHFL",$J,"NHF"))
  1. I NHF=0 Q 0
  1. S DIR(0)="N^1:"_NHF
  1. S DIR("A")=TEXT
  1. D ^DIR
  1. Q +$G(^TMP("PXHFL",$J,"SEL",+Y))
  1. ;
  1. ;=========================================
  1. HELP ;Display help.
  1. N DDS,DIR0,DONE,IND,TEXT
  1. ;DBIA #5746 covers kill and set of DDS. DDS needs to be set or the
  1. ;Browser will kill some ScreenMan variables.
  1. S DDS=1,DONE=0
  1. F IND=1:1 Q:DONE D
  1. . S TEXT(IND)=$P($T(HTEXT+IND),";",3,99)
  1. . I TEXT(IND)="**End Text**" K TEXT(IND) S DONE=1 Q
  1. D BROWSE^DDBR("TEXT","NR","Health Factor Management Help")
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. ;=========================================
  1. HDR ; Header code
  1. S VALMHDR(1)="Health Factor File Entries."
  1. S VALMSG="+ Next Screen - Prev Screen ?? More Actions"
  1. Q
  1. ;
  1. ;=========================================
  1. HTEXT ;Health Factor management help text.
  1. ;;Select one of the following actions:
  1. ;; ADD - add a new health factor.
  1. ;; EDIT - edit a health factor.
  1. ;; COPY - copy an existing health factor to a new health factor.
  1. ;; INQ - health factor inquiry.
  1. ;; CL - health factor change log display.
  1. ;;
  1. ;;You can select the action first and then the entry or choose the entry and then
  1. ;;the action.
  1. ;;
  1. ;;**End Text**
  1. Q
  1. ;
  1. ;=========================================
  1. INITMPG ;Initialize all the ^TMP globals.
  1. K ^TMP("PXHFL",$J)
  1. Q
  1. ;
  1. ;=========================================
  1. INQ(IEN) ;Health Factor inquiry.
  1. S VALMBCK="R"
  1. D BHFINQ^PXHFINQ(IEN)
  1. Q
  1. ;
  1. ;=========================================
  1. INQS ;Display inquiry for selected entries.
  1. S VALMBCK="R"
  1. N IEN
  1. ;Get the entry
  1. S IEN=+$$GETSEL("Display inquiry for which health factor?")
  1. I IEN=0 S VALMBCK="R" Q
  1. D INQ(IEN)
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. ;=========================================
  1. ISMAPPED(IEN) ;Return 1 if the health factor has mapped codes.
  1. I +$P($G(^AUTTHF(IEN,210,0)),U,4)>0 Q 1
  1. Q 0
  1. ;
  1. ;=========================================
  1. PEXIT ; Protocol exit code
  1. S VALMSG="+ Next Screen - Prev Screen ?? More Actions"
  1. ;Reset after page up/down etc
  1. D XQORM
  1. Q
  1. ;
  1. ;=========================================
  1. START ;Main entry point for PX Health Factor Management
  1. N VALMBCK,VALMSG,X
  1. S X="IORESET"
  1. D ENDR^%ZISS
  1. D EN^VALM("PX HEALTH FACTOR MANAGEMENT")
  1. W IORESET
  1. D KILL^%ZISS
  1. Q
  1. ;
  1. ;=========================================
  1. XQORM ;Set range for selection.
  1. N NHF
  1. S NHF=^TMP("PXHFL",$J,"NHF")
  1. S XQORM("#")=$O(^ORD(101,"B","PX HEALTH FACTOR SELECT ENTRY",0))_U_"1:"_NHF
  1. S XQORM("A")="Select Action: "
  1. Q
  1. ;
  1. ;=========================================
  1. XSEL ;Entry action for protocol PX HEALTH FACTOR SELECT ENTRY.
  1. N CLASS,EDITOK,IEN,SEL
  1. S SEL=$P(XQORNOD(0),"=",2)
  1. ;Remove trailing ,
  1. I $E(SEL,$L(SEL))="," S SEL=$E(SEL,1,$L(SEL)-1)
  1. ;Invalid selection
  1. I SEL["," D Q
  1. . W !,"Only one item number allowed." H 2
  1. . S VALMBCK="R"
  1. I ('SEL)!(SEL>VALMCNT)!('$D(@VALMAR@("SEL",SEL))) D Q
  1. . W !,SEL_" is not a valid item number." H 2
  1. . S VALMBCK="R"
  1. ;
  1. ;Get the IEN.
  1. S IEN=^TMP("PXHFL",$J,"SEL",SEL)
  1. S CLASS=$P(^AUTTHF(IEN,100),U,1)
  1. ;
  1. ;Full screen mode
  1. D FULL^VALM1
  1. ;
  1. ;Action list.
  1. N DIR,DIROUT,DIRUT,DTOUT,DUOUT,OPTION,X,Y
  1. S DIR(0)="SBM"_U
  1. S EDITOK=$S(CLASS'="N":1,1:($G(PXNAT)=1)&($G(DUZ(0))="@"))
  1. I EDITOK S DIR(0)=DIR(0)_"EDIT:Edit;"
  1. S DIR(0)=DIR(0)_"COPY:Copy;"
  1. S DIR(0)=DIR(0)_"INQ:Inquire;"
  1. S DIR(0)=DIR(0)_"CL:Change Log;"
  1. S DIR("A")="Select Action: "
  1. S DIR("B")=$S(CLASS="N":"INQ",1:"EDIT")
  1. S DIR("?")="Select from the actions displayed."
  1. D ^DIR
  1. I $D(DIROUT)!$D(DIRUT) S VALMBCK="R" Q
  1. I $D(DTOUT)!$D(DUOUT) S VALMBCK="R" Q
  1. S OPTION=Y
  1. D CLEAR^VALM1
  1. ;
  1. I OPTION="COPY" D COPY^PXHFMGR(IEN)
  1. I OPTION="EDIT" D SMANEDIT^PXHFSM(IEN,0)
  1. I OPTION="INQ" D BHFINQ^PXHFINQ(IEN)
  1. I OPTION="CL" D CLOG^PXHFMGR(IEN)
  1. S VALMBCK="R"
  1. Q
  1. ;