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

PXRMEXPD.m

Go to the documentation of this file.
  1. PXRMEXPD ;SLC/PKR - General packing driver. ;08/02/2013
  1. ;;2.0;CLINICAL REMINDERS;**12,17,16,18,22,26**;Feb 04, 2005;Build 404
  1. ;==========================
  1. BLDDESC(USELLIST,TMPIND) ;If multiple entries have been selected
  1. ;then initialize the description with the selected list.
  1. N IEN,NL,NOUT,TEXT,TEXTOUT
  1. S TEXT(1)="The following Clinical Reminder items were selected for packing:\\"
  1. S FILENUM=0,NL=1
  1. F S FILENUM=$O(USELLIST(FILENUM)) Q:FILENUM="" D
  1. . I NL>1 S NL=NL+1,TEXT(NL)="\\"
  1. . S NL=NL+1,TEXT(NL)=$$GET1^DID(FILENUM,"","","NAME")_"\\"
  1. . S IEN=0
  1. . F S IEN=+$O(USELLIST(FILENUM,"IEN",IEN)) Q:IEN=0 D
  1. .. S NL=NL+1,TEXT(NL)=" "_$$GET1^DIQ(FILENUM,IEN,".01")_"\\"
  1. D FORMAT^PXRMTEXT(1,70,NL,.TEXT,.NOUT,.TEXTOUT)
  1. K ^TMP(TMPIND,$J,"DESC")
  1. F IND=1:1:NOUT S ^TMP(TMPIND,$J,"DESC",1,IND,0)=TEXTOUT(IND)
  1. Q
  1. ;
  1. ;==========================
  1. BLDTEXT(TMPIND) ;Combine the source information and the user's input into the
  1. ;"TEXT" array.
  1. N IC,IND
  1. S (IC,IND)=0
  1. F S IC=$O(^TMP(TMPIND,$J,"SRC",IC)) Q:+IC=0 D
  1. . S IND=IND+1
  1. . S ^TMP(TMPIND,$J,"TEXT",1,IND)=^TMP(TMPIND,$J,"SRC",IC)
  1. ;
  1. S IC=0
  1. F S IC=$O(^TMP(TMPIND,$J,"TXT",1,IC)) Q:+IC=0 D
  1. . S IND=IND+1
  1. . S ^TMP(TMPIND,$J,"TEXT",1,IND)=^TMP(TMPIND,$J,"TXT",1,IC,0)
  1. Q
  1. ;
  1. ;==========================
  1. CLDIQOUT(FILENUM,IEN,FIELD,IENROOT,DIQOUT) ;Clean-up the DIQOUT returned by
  1. ;the GETS^DIQ call.
  1. N NOSTUB
  1. S NOSTUB=0
  1. I (FILENUM=811.4),($P(^PXRMD(811.4,IEN,100),U,1)="N") S NOSTUB=1
  1. ;Remove edit history from all reminder files.
  1. D RMEH^PXRMEXPU(FILENUM,.DIQOUT,NOSTUB)
  1. ;Convert the iens to the FDA adding form.
  1. D CONTOFDA^PXRMEXPU(.DIQOUT,.IENROOT)
  1. ;Remove hospital locations from location lists
  1. I FILENUM=810.9 K DIQOUT(810.944)
  1. ;Don't transport the obsolete taxonomy fields.
  1. I FILENUM=811.2 K DIQOUT(811.22102),DIQOUT(811.22103),DIQOUT(811.22104),DIQOUT(811.23102),DIQOUT(811.23104)
  1. ;TIU conversion for TIU/HS objects
  1. I FILENUM=8925.1,FIELD="**" D TIUCONV(FILENUM,IEN,.DIQOUT)
  1. Q
  1. ;
  1. ;==========================
  1. CMPLIST(CMPLIST,SELLIST,FILELST,ERROR) ;Process the selected list and build a
  1. ;complete list of components to be packed.
  1. N CIEN,IND,JND,FNUM,LRD,NUM,PACKLIST,ROUTINE
  1. S ERROR=0
  1. F IND=1:1:FILELST(0) D
  1. . S FNUM=$P(FILELST(IND),U,1)
  1. . I '$D(SELLIST(FNUM)) Q
  1. . S ROUTINE=$$GETSRTN^PXRMEXPS(FNUM)_"(FNUM,CIEN,.PACKLIST)"
  1. . S NUM=0
  1. . F S NUM=+$O(SELLIST(FNUM,NUM)) Q:NUM=0 S CIEN=SELLIST(FNUM,NUM) D @ROUTINE
  1. ;PACKLIST is built by following all pointers. Reversing the order
  1. ;for the Exchange install should allow resolution of pointers.
  1. S FNUM=""
  1. F S FNUM=$O(PACKLIST(FNUM)) Q:FNUM="" D
  1. . I $D(PACKLIST(FNUM,"ERROR")) D
  1. .. S IND=0,ERROR=ERROR+1
  1. .. I ERROR=1 W !
  1. .. F S IND=+$O(PACKLIST(FNUM,"ERROR",IND)) Q:IND=0 W !,PACKLIST(FNUM,"ERROR",IND)," IEN=",IND
  1. . S IND="IEN",JND=0
  1. . F S IND=+$O(PACKLIST(FNUM,IND),-1) Q:IND=0 S JND=JND+1,CMPLIST(FNUM,JND)=PACKLIST(FNUM,IND)
  1. ;If any definitions have a linked dialog add the linked dialog to the
  1. ;selection list so it can be marked as selected.
  1. I '$D(CMPLIST(811.9)) Q
  1. S NUM=$O(SELLIST(801.41,"IEN"),-1)
  1. S IND=0
  1. F S IND=$O(CMPLIST(811.9,IND)) Q:IND="" D
  1. . S LRD=$G(^PXD(811.9,CMPLIST(811.9,IND),51))
  1. . I LRD'="" S NUM=NUM+1,SELLIST(801.41,NUM)=LRD,SELLIST(801.41,"IEN",LRD)=NUM
  1. I ERROR D
  1. . W !,"Cannot create the packed file due to the above error(s)."
  1. . H 2
  1. Q
  1. ;
  1. ;==========================
  1. CRE ;Pack a reminder component and store it in the repository.
  1. N CMPLIST,CNT,DIEN,DERRFND,DERRMSG,EFNAME,ERROR,FAIL,FAILTYPE,FILELST
  1. N OUTPUT,POA,RANK,SERROR,SELLIST,SUCCESS,TMPIND,USELLIST
  1. S TMPIND="PXRMEXPR"
  1. K ^TMP(TMPIND,$J)
  1. S FILELST(1)=811.4_U_$$GET1^DID(811.4,"","","NAME")
  1. S FILELST(2)=810.8_U_$$GET1^DID(810.8,"","","NAME")
  1. S FILELST(3)=811.9_U_$$GET1^DID(811.9,"","","NAME")
  1. S FILELST(4)=801.41_U_$$GET1^DID(801.41,"","","NAME")
  1. S FILELST(5)=810.7_U_$$GET1^DID(810.7,"","","NAME")
  1. S FILELST(6)=810.2_U_$$GET1^DID(810.2,"","","NAME")
  1. S FILELST(7)=810.4_U_$$GET1^DID(810.4,"","","NAME")
  1. S FILELST(8)=810.9_U_$$GET1^DID(810.9,"","","NAME")
  1. S FILELST(9)=811.6_U_$$GET1^DID(811.6,"","","NAME")
  1. S FILELST(10)=811.2_U_$$GET1^DID(811.2,"","","NAME")
  1. S FILELST(11)=811.5_U_$$GET1^DID(811.5,"","","NAME")
  1. S FILELST(12)=801_U_$$GET1^DID(801,"","","NAME")
  1. S FILELST(13)=801.1_U_$$GET1^DID(801.1,"","","NAME")
  1. S FILELST(0)=13
  1. D PACKORD(.RANK)
  1. ;
  1. ;Get the list to pack.
  1. D FSEL(.SELLIST,.FILELST)
  1. ;
  1. K VALMHDR
  1. I '$D(SELLIST) S VALMHDR(1)="No reminder items were selected!" Q
  1. ;Save the user's selections.
  1. M USELLIST=SELLIST
  1. ;Process the selected list to build a complete list of components
  1. ;to be packed.
  1. D CMPLIST(.CMPLIST,.SELLIST,.FILELST,.ERROR)
  1. I ERROR K ^TMP(TMPIND,$J) Q
  1. ;
  1. ;Check reminder dialogs for errors
  1. N FAILTYPE
  1. S FAIL=0
  1. I $D(SELLIST(801.41)) D I FAIL="F" K ^TMP(TMPIND,$J) Q
  1. .W !,"Checking reminder dialog(s) for errors."
  1. . S DIEN=0
  1. .;Check individual reminder dialogs
  1. . F S DIEN=$O(SELLIST(801.41,"IEN",DIEN)) Q:DIEN'>0 D
  1. .. I FAIL=0 W "."
  1. .. S FAILTYPE=$$RETARR^PXRMDLRP(DIEN,.OUTPUT) Q:'$D(OUTPUT)
  1. .. I FAILTYPE="F" S FAIL="F"
  1. .. I FAILTYPE="W",FAIL=0 S FAIL="W"
  1. .. W !!,$S(FAILTYPE="W":"**WARNING**",1:"**FATAL ERROR**")
  1. .. S CNT=0 F S CNT=$O(OUTPUT(CNT)) Q:CNT'>0 W !,OUTPUT(CNT)
  1. .. K OUTPUT
  1. .;
  1. . I FAIL="W" H 2
  1. . I FAIL=0 W !,"No problems found." H 1 Q
  1. . I FAIL="F" W !!,"Cannot create the packed file. Please correct the above fatal error(s)." H 2
  1. ;
  1. ;Create the header information.
  1. D HEADER(TMPIND,.USELLIST,.SELLIST,.RANK,.EFNAME)
  1. I EFNAME=-1 Q
  1. ;
  1. ;Order the component list.
  1. D ORDER(.CMPLIST,.RANK,.POA)
  1. ;Pack the list
  1. D PACK(.CMPLIST,.POA,TMPIND,.SELLIST,.SERROR)
  1. I SERROR K ^TMP(TMPIND,$J) Q
  1. ;Add information to the description about quick orders, TIU health
  1. ;summary objects, and health summaries that are included but are
  1. ;not exchangeable.
  1. D NEXINFO(TMPIND)
  1. D STOREPR^PXRMEXU2(.SUCCESS,EFNAME,TMPIND,.SELLIST)
  1. K ^TMP(TMPIND,$J)
  1. I SUCCESS D
  1. . S VALMHDR(1)=EFNAME_" was saved in the Exchange File."
  1. . D BLDLIST^PXRMEXLC(1)
  1. E D
  1. . S VALMHDR(1)="Creation of Exchange File entry "_EFNAME
  1. . S VALMHDR(2)="failed; it was not saved!"
  1. Q
  1. ;
  1. ;==========================
  1. FSEL(LIST,FILELST) ;Select file list.
  1. N ALIST,DIR,DIROUT,DIRUT,DONE,DTOUT,DUOUT,IND,X,Y
  1. F IND=1:1:FILELST(0) S ALIST(IND)=$$RJ^XLFSTR(IND,4," ")_" "_$P(FILELST(IND),U,2)
  1. M DIR("A")=ALIST
  1. S DIR("A")="Select a file"
  1. S DIR(0)="NO^1:"_FILELST(0)
  1. S DONE=0
  1. F Q:DONE D
  1. . W !!,"Select from the following reminder files:"
  1. . D ^DIR
  1. . I (Y="")!(Y["^") S DONE=1 Q
  1. . I $D(DIROUT)!$D(DIRUT) S DONE=1 Q
  1. . I $D(DUOUT)!$D(DTOUT) S DONE=1 Q
  1. . D IENSEL(.LIST,Y,.FILELST)
  1. Q
  1. ;
  1. ;==========================
  1. IENSEL(LIST,ID,FILELST) ;Select entries from the selected file.
  1. N DIC,DIR,DIROUT,DIRUT,DONE,DTOUT,DUOUT,FILENUM,NUMF,X,Y
  1. S (DIC,FILENUM)=$P(FILELST(ID),U,1)
  1. S NUMF=+$O(LIST(FILENUM,""),-1)
  1. S DIC(0)="QEA"
  1. S DONE=0
  1. F Q:DONE D
  1. . D ^DIC
  1. . I Y=-1 S DONE=1 Q
  1. . I $D(DIROUT)!$D(DIRUT) S DONE=1 Q
  1. . I $D(DUOUT)!$D(DTOUT) S DONE=1 Q
  1. . S NUMF=NUMF+1
  1. . S LIST(FILENUM,NUMF)=+Y
  1. . S LIST(FILENUM,"IEN",+Y)=NUMF
  1. . W !,"Enter another one or just press enter to go back to file selection."
  1. Q
  1. ;
  1. ;==========================
  1. GETTEXT(FILENUM,IEN,TMPIND,INDEX) ;Let the user input some text.
  1. N DIC,DWLW,DWPK,FIELDNUM,TYPE
  1. ;If this is the description text, (signfied by FILENUM>0) load the
  1. ;description or short description as the default.
  1. I FILENUM>0 D
  1. . S FIELDNUM=$$FLDNUM^DILFD(FILENUM,"DESCRIPTION"),TYPE="WP"
  1. . I FIELDNUM=0 S FIELDNUM=$$FLDNUM^DILFD(FILENUM,"SHORT DESCRIPTION"),TYPE="SD"
  1. E S FIELDNUM=0
  1. I FIELDNUM>0 D
  1. . N MSG,WP,X
  1. . I TYPE="WP" D
  1. .. S X=$$GET1^DIQ(FILENUM,IEN,FIELDNUM,"Z","WP","MSG")
  1. .. M ^TMP(TMPIND,$J,INDEX,1)=WP
  1. . I TYPE="SD" D
  1. .. S X=$$GET1^DIQ(FILENUM,IEN,FIELDNUM,"","","MSG")
  1. .. S ^TMP(TMPIND,$J,INDEX,1,1,0)=X
  1. S DIC="^TMP(TMPIND,$J,"""_INDEX_""",1,"
  1. S DWLW=72,DWPK=1
  1. D EN^DIWE
  1. Q
  1. ;
  1. ;==========================
  1. GDIQF(FILENUM,FILENAME,IEN,IND,TMPIND,SELLIST,SERROR) ;Save file entries into
  1. ;^TMP(TMPIND,$J).
  1. N CSUM,DIQOUT,IENROOT,FIELD,MSG,NUM
  1. K DIQOUT,IENROOT
  1. ;If the file entry is ok to install then get the entire entry,
  1. ;otherwise just get the .01.
  1. S FIELD=$S($$IOKTP^PXRMEXFI(FILENUM,IEN):"**",1:.01)
  1. ;
  1. ;Items from file 142, 142.5, and 8925.1 need to be added to the
  1. ;SELLIST array if $$IOKTP returns "**". These items are IEN specific
  1. ;and the check needs to be done at time of packing this is why they
  1. ;are added to SELLIST.
  1. I ((FILENUM=142)!(FILENUM=142.5)!(FILENUM=8925.1))&(FIELD="**") D
  1. .S NUM=$O(SELLIST(FILENUM,"IEN",""),-1)
  1. .S NUM=NUM+1,SELLIST(FILENUM,"IEN",IEN)=NUM,SELLIST(FILENUM,NUM)=IEN
  1. ;
  1. D GETS^DIQ(FILENUM,IEN,FIELD,"N","DIQOUT","MSG")
  1. I $D(MSG) D Q
  1. . S SERROR=1
  1. . N ETEXT
  1. . S ETEXT="GETS^DIQ failed for "_FILENAME_", ien="_IEN_";"
  1. . W !,ETEXT
  1. . W !,"it returned the following error:"
  1. . D AWRITE^PXRMUTIL("MSG")
  1. . H 2
  1. . K MSG
  1. D CLDIQOUT(FILENUM,IEN,FIELD,.IENROOT,.DIQOUT)
  1. S ^TMP("PXRMEXCS",$J,IND,FILENAME)=$$DIQOUTCS^PXRMEXCS(.DIQOUT)
  1. ;Load the converted DIQOUT into TMP.
  1. M ^TMP(TMPIND,$J,IND,FILENAME)=DIQOUT
  1. M ^TMP(TMPIND,$J,IND,FILENAME_"_IENROOT")=IENROOT
  1. Q
  1. ;
  1. ;==========================
  1. GRTN(ROUTINE,TMPIND,SERROR) ;Save routines into ^TMP(TMPIND,$J).
  1. N DIF,IEN,IND,RA,TEMP,X,XCNP
  1. S X=ROUTINE
  1. X ^%ZOSF("TEST")
  1. I $T D
  1. . K RA
  1. . S DIF="RA("
  1. . S XCNP=0
  1. . X ^%ZOSF("LOAD")
  1. . S ^TMP("PXRMEXCS",$J,"ROUTINE",X)=$$ROUTINE^PXRMEXCS(.RA)
  1. . M ^TMP(TMPIND,$J,"ROUTINE",X)=RA
  1. E D
  1. . S SERROR=1
  1. . W !,"Warning could not find routine ",X
  1. . H 2
  1. Q
  1. ;
  1. ;==========================
  1. ;information.
  1. N DIR,EXTYPE,IEN,IND,FILENAME,FILENUM,NFNUM,NIEN,PNAME,Y
  1. S (FILENAME,FILENUM,IEN,NIEN)="",NFNUM=0
  1. F S FILENUM=$O(USELLIST(FILENUM)) Q:FILENUM="" S NFNUM=NFNUM+1
  1. I NFNUM=1 D
  1. . S FILENUM=$O(USELLIST(""))
  1. . S IND="",NIEN=0
  1. . F S IND=$O(USELLIST(FILENUM,IND)) Q:IND="IEN" S NIEN=NIEN+1
  1. . I NIEN=1 D
  1. .. S IND=$O(USELLIST(FILENUM,""))
  1. .. S IEN=USELLIST(FILENUM,IND)
  1. .. S NAME=$$GET1^DIQ(FILENUM,IEN,.01)
  1. .. S FILENAME=$$GET1^DID(FILENUM,"","","NAME")
  1. ..;If only one item was selected make it the default.
  1. .. S DIR("B")=NAME
  1. ;Get the Exchange file entry name.
  1. S DIR(0)="FAU^3:64"
  1. S DIR("A")="Enter the Exchange File entry name: "
  1. D ^DIR
  1. I (Y="")!($D(DTOUT))!($D(DUOUT)) S EFNAME=-1 Q
  1. S EFNAME=Y
  1. K DIR
  1. ;Save the source information.
  1. D PUTSRC(FILENAME,EFNAME,TMPIND)
  1. S PNAME=$S(NIEN=1:FILENAME,1:"Exchange File entry")
  1. ;If multiple items were selected for packing initialize the
  1. ;description with the selection list.
  1. I (NFNUM>1)!(NIEN>1) D BLDDESC(.USELLIST,TMPIND)
  1. ;If a single item was selected the description will be initialized
  1. ;with the selected item's description. In either case the user can
  1. ;input additional description text.
  1. W !,"Enter a description of the ",PNAME," you are packing." H 2
  1. D GETTEXT(FILENUM,IEN,TMPIND,"DESC")
  1. ;
  1. ;Have the user input keywords for indexing the entry.
  1. W !,"Enter keywords or phrases to help index the entry you are packing."
  1. W !,"Separate the keywords or phrases on each line with commas." H 2
  1. D GETTEXT(0,0,TMPIND,"KEYWORD")
  1. ;
  1. ;Combine the source and input text into the "TEXT" array.
  1. D BLDTEXT(TMPIND)
  1. Q
  1. ;
  1. ;==========================
  1. NEXINFO(TMPIND) ;Add information to the description about quick orders,
  1. ;TIU health summary objects, and health summaries that are included
  1. ;but are not exchangeable.
  1. N NL,NLS
  1. S (NL,NLS)=$P($G(^TMP(TMPIND,$J,"DESC",1,0)),U,4)
  1. I $D(^TMP($J,"ORDER DIALOG")) D
  1. . I NL>NLS S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)=""
  1. . S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)="Non-exchangeable order dialog(s):"
  1. . D NEXINFOA(TMPIND,"ORDER DIALOG",.NL)
  1. I $D(^TMP($J,"TIU OBJECT")) D
  1. . I NL>NLS S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)=""
  1. . S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)="Non-exchangeable TIU object(s):"
  1. . D NEXINFOA(TMPIND,"TIU OBJECT",.NL)
  1. I $D(^TMP($J,"HS OBJECT")) D
  1. . I NL>NLS S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)=""
  1. . S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)="Non-exchangeable health summary object(s):"
  1. . D NEXINFOA(TMPIND,"HS OBJECT",.NL)
  1. I $D(^TMP($J,"HS TYPE")) D
  1. . I NL>NLS S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)=""
  1. . S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)="Non-exchangeable health summary type(s):"
  1. . D NEXINFOA(TMPIND,"HS TYPE",.NL)
  1. I $D(^TMP($J,"HS COMP")) D
  1. . I NL>NLS S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)=""
  1. . S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)="Non-exchangeable health summary component(s):"
  1. . D NEXINFOA(TMPIND,"HS COMP",.NL)
  1. I $D(^TMP($J,"LOCATION LIST")) D
  1. . I NL>NLS S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)=""
  1. . S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)="Non-exchangeable location list hospital locations:"
  1. . D NEXINFOA(TMPIND,"LOCATION LIST",.NL)
  1. I NL>NLS S $P(^TMP(TMPIND,$J,"DESC",1,0),U,3,4)=NL_U_NL
  1. Q
  1. ;
  1. ;==========================
  1. NEXINFOA(TMPIND,SUB,NL) ;
  1. N IEN,LNUM
  1. I SUB'["ORDER" S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)=$$REPEAT^XLFSTR("-",79)
  1. S IEN=0
  1. F S IEN=$O(^TMP($J,SUB,IEN)) Q:IEN'>0 D
  1. .S LNUM=0
  1. .F S LNUM=$O(^TMP($J,SUB,IEN,LNUM)) Q:LNUM="" D
  1. ..S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)=^TMP($J,SUB,IEN,LNUM)
  1. I SUB'["ORDER" S NL=NL+1,^TMP(TMPIND,$J,"DESC",1,NL,0)=$$REPEAT^XLFSTR("-",79)
  1. K ^TMP($J,SUB)
  1. Q
  1. ;
  1. ;==========================
  1. ORDER(CMPLIST,RANK,POA) ;Order the component list so pointers can be resolved.
  1. N FILENUM,ORDER,PORDER
  1. S FILENUM="",ORDER=0
  1. F S FILENUM=$O(CMPLIST(FILENUM)) Q:FILENUM="" D
  1. . S PORDER=$G(RANK("FN",FILENUM))
  1. . I PORDER="" S ORDER=ORDER+1,PORDER=ORDER
  1. . S POA(PORDER)=FILENUM
  1. Q
  1. ;
  1. ;==========================
  1. PACK(CMPLIST,POA,TMPIND,SELLIST,SERROR) ;Create the packed entry, store it in
  1. ;^TMP(TMPIND,$J). TMPIND should be namespaced and set by the caller.
  1. N IEN,IND,JND,KND,FILENAME,FILENUM,ROUTINE
  1. W !,"Packing components ..."
  1. S (KND,SERROR)=0
  1. S IND=""
  1. F S IND=$O(POA(IND)) Q:IND="" D
  1. . S FILENUM=POA(IND)
  1. . S FILENAME=$S(FILENUM=0:"ROUTINE",1:$$GET1^DID(FILENUM,"","","NAME"))
  1. . S JND=""
  1. . F S JND=$O(CMPLIST(FILENUM,JND)) Q:JND="" D
  1. .. S IEN=CMPLIST(FILENUM,JND)
  1. .. I FILENUM=0 W !,"Adding routine ",IEN
  1. .. E W !,"Adding ",FILENAME," ",$$GET1^DIQ(FILENUM,IEN,.01),", IEN=",IEN
  1. .. I FILENUM=0 D GRTN(IEN,TMPIND,.SERROR)
  1. .. I FILENUM>0 S KND=KND+1 D GDIQF(FILENUM,FILENAME,IEN,KND,TMPIND,.SELLIST,.SERROR)
  1. ;
  1. S ^TMP(TMPIND,$J,"NUMF")=KND
  1. W !,"Packing is complete."
  1. ;If there were any errors saving the data kill the ^TMP array.
  1. I SERROR K ^TMP(TMPIND,$J)
  1. Q
  1. ;
  1. ;==========================
  1. PACKORD(RANK) ;
  1. S RANK("FN",801.41)=7000,RANK(7000)=801.41
  1. S RANK("FN",810.2)=11000,RANK(11000)=810.2
  1. S RANK("FN",810.4)=8000,RANK(8000)=810.4
  1. S RANK("FN",810.7)=10000,RANK(10000)=810.7
  1. S RANK("FN",810.8)=9000,RANK(9000)=810.8
  1. S RANK("FN",810.9)=4000,RANK(4000)=810.9
  1. S RANK("FN",811.2)=3000,RANK(3000)=811.2
  1. S RANK("FN",811.4)=2000,RANK(2000)=811.4
  1. S RANK("FN",811.5)=5000,RANK(5000)=811.5
  1. S RANK("FN",811.6)=1000,RANK(1000)=811.6
  1. S RANK("FN",811.9)=6000,RANK(6000)=811.9
  1. S RANK("FN",142.1)=100000,RANK(100000)=142.1
  1. S RANK("FN",142)=100100,RANK(100100)=142
  1. S RANK("FN",142.5)=100200,RANK(100200)=142.5
  1. S RANK("FN",8925.1)=100300,RANK(100300)=8925.1
  1. S RANK("FN",801)=100500,RANK(100500)=801
  1. S RANK("FN",801.1)=100400,RANK(100400)=801.1
  1. Q
  1. ;
  1. ;==========================
  1. PUTSRC(FILENAME,NAME,TMPIND) ;Save the source information.
  1. N LOC
  1. S LOC=$$SITE^VASITE
  1. I FILENAME'="" S ^TMP(TMPIND,$J,"SRC","FILENAME")=FILENAME
  1. S ^TMP(TMPIND,$J,"SRC","NAME")=NAME
  1. S ^TMP(TMPIND,$J,"SRC","USER")=$$GET1^DIQ(200,DUZ,.01)
  1. S ^TMP(TMPIND,$J,"SRC","SITE")=$P(LOC,U,2)
  1. S ^TMP(TMPIND,$J,"SRC","DATE")=$$FMTE^XLFDT($$NOW^XLFDT,"5Z")
  1. Q
  1. ;
  1. ;==========================
  1. TIUCONV(FILENUM,IEN,ARRAY) ;Convert health summary object to external.
  1. N HSO,IENS,NAME
  1. S IENS="+"_IEN_","
  1. ;Allows non-objects to be packed up
  1. I ARRAY(FILENUM,IENS,.04)'="OBJECT" Q
  1. ;
  1. I $G(ARRAY(FILENUM,IENS,9))'["$$TIU^GMTSOBJ" D Q
  1. . S ARRAY(FILENUM,IENS,9)="NOT A HS OBJECT"
  1. S HSO=$P(ARRAY(FILENUM,IENS,9),",",2)
  1. S HSO=$P(HSO,")")
  1. ;Handle corrupted health summary object names.
  1. I +HSO>0 S NAME=$P($G(^GMT(142.5,HSO,0)),U,1)
  1. E S NAME="MISSING"
  1. S ARRAY(FILENUM,IENS,9)="S X=$$TIU^GMTSOBJ(DFN,"_NAME_")"
  1. S ARRAY(FILENUM,IENS,99)=""
  1. Q
  1. ;