| 1 | PXRMEXHF ; SLC/PKR - Routines to select and deal with host files. ;12/21/2004
 | 
|---|
| 2 |  ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
 | 
|---|
| 3 |  ;============================================
 | 
|---|
| 4 | CHF(SUCCESS,LIST,PATH,FILE) ;Put the repository entries in LIST into the
 | 
|---|
| 5 |  ;host file specified by PATH and FILE.
 | 
|---|
| 6 |  N GBL,LIEN,RIEN
 | 
|---|
| 7 |  S SUCCESS=1
 | 
|---|
| 8 |  S LIEN=$O(LIST(""))
 | 
|---|
| 9 |  I LIEN="" Q
 | 
|---|
| 10 |  S RIEN=$$RIEN^PXRMEXU1(LIEN)
 | 
|---|
| 11 |  S GBL="^PXD(811.8,"_RIEN_",100,1,0)"
 | 
|---|
| 12 |  ;Save the first entry.
 | 
|---|
| 13 |  S SUCCESS(LIEN)=$$GTF^%ZISH(GBL,4,PATH,FILE)
 | 
|---|
| 14 |  I SUCCESS(LIEN)=0 Q
 | 
|---|
| 15 |  ;Append any remaining entries.
 | 
|---|
| 16 |  F  S LIEN=$O(LIST(LIEN)) Q:+LIEN=0  D
 | 
|---|
| 17 |  . S RIEN=$$RIEN^PXRMEXU1(LIEN)
 | 
|---|
| 18 |  . S GBL="^PXD(811.8,"_RIEN_",100,1,0)"
 | 
|---|
| 19 |  . S SUCCESS(LIEN)=$$GATF^%ZISH(GBL,4,PATH,FILE)
 | 
|---|
| 20 |  Q
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  ;============================================
 | 
|---|
| 23 | GETEHF() ;Get an existing host file.
 | 
|---|
| 24 |  ;Build a list of all .PRD files in the current directory.
 | 
|---|
| 25 |  N DIR,DIROUT,DIRUT,DTOUT,DUOUT,FILESPEC,FILELIST,PATH,X,Y
 | 
|---|
| 26 |  S FILESPEC("*.PRD")=""
 | 
|---|
| 27 |  S PATH=$$PWD^%ZISH
 | 
|---|
| 28 |  S DIR(0)="FAU"_U_"1:32"
 | 
|---|
| 29 |  S DIR("A")="Enter a path: "
 | 
|---|
| 30 |  S DIR("B")=PATH
 | 
|---|
| 31 |  S DIR("?",1)="A host file is a file on your host system."
 | 
|---|
| 32 |  S DIR("?",2)="A complete host file consists of a path, file name, and extension"
 | 
|---|
| 33 |  S DIR("?",3)="A path consists of a device and directory name."
 | 
|---|
| 34 |  S DIR("?",4)="The default extension is prd (Packed Reminder Definition)."
 | 
|---|
| 35 |  S DIR("?")="The default path is "_PATH
 | 
|---|
| 36 |  D ^DIR
 | 
|---|
| 37 |  I $D(DIROUT)!$D(DIRUT) Q ""
 | 
|---|
| 38 |  I $D(DTOUT)!($D(DUOUT)) Q ""
 | 
|---|
| 39 |  S PATH=Y
 | 
|---|
| 40 |  S Y=$$LIST^%ZISH(PATH,"FILESPEC","FILELIST")
 | 
|---|
| 41 |  I Y D
 | 
|---|
| 42 |  . W !,"The following PRD files were found in ",PATH
 | 
|---|
| 43 |  . S FILE=""
 | 
|---|
| 44 |  . F  S FILE=$O(FILELIST(FILE)) Q:FILE=""  W !,?2,FILE
 | 
|---|
| 45 |  E  W !,"No PRD files were found in path ",PATH
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  K DIR,X,Y
 | 
|---|
| 48 |  S DIR(0)="FAOU"_U_"1:32"
 | 
|---|
| 49 |  S DIR("A")="Enter a file name: "
 | 
|---|
| 50 |  S DIR("?",1)="A file name has the format NAME.EXTENSION, the default extension is PRD"
 | 
|---|
| 51 |  S DIR("?",2)="Therefore if you type in FILE for the file name, the host file will be"
 | 
|---|
| 52 |  S DIR("?")="  "_PATH_"FILE.PRD"
 | 
|---|
| 53 |  D ^DIR
 | 
|---|
| 54 |  I $D(DIROUT)!$D(DIRUT) Q ""
 | 
|---|
| 55 |  I $D(DTOUT)!($D(DUOUT)) Q ""
 | 
|---|
| 56 |  S FILE=Y
 | 
|---|
| 57 |  ;Add the default extension if there isn't one.
 | 
|---|
| 58 |  I FILE'["." S FILE=FILE_".PRD"
 | 
|---|
| 59 |  Q PATH_U_FILE
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 |  ;============================================
 | 
|---|
| 62 | GETHFS() ;Get the name of a host file to store repository entries in.
 | 
|---|
| 63 |  N DIR,DIROUT,DIRUT,DTOUT,DUOUT,FILE,HFNAME,PATH,X,Y
 | 
|---|
| 64 | GETHF ;As a default set the path to the current directory.
 | 
|---|
| 65 |  S PATH=$$PWD^%ZISH
 | 
|---|
| 66 |  S DIR(0)="FAU"_U_"1:32"
 | 
|---|
| 67 |  S DIR("A")="Enter a path: "
 | 
|---|
| 68 |  S DIR("B")=PATH
 | 
|---|
| 69 |  S DIR("?",1)="A host file is a file on your host system."
 | 
|---|
| 70 |  S DIR("?",2)="A complete host file consists of a path, file name, and extension"
 | 
|---|
| 71 |  S DIR("?",3)="A path consists of a device and directory name."
 | 
|---|
| 72 |  S DIR("?",4)="The default extension is prd (Packed Reminder Definition)."
 | 
|---|
| 73 |  S DIR("?")="The default path is "_PATH
 | 
|---|
| 74 |  D ^DIR
 | 
|---|
| 75 |  I $D(DIROUT)!$D(DIRUT) Q 0
 | 
|---|
| 76 |  I $D(DTOUT)!($D(DUOUT)) Q 0
 | 
|---|
| 77 |  S PATH=Y
 | 
|---|
| 78 |  K DIR,X,Y
 | 
|---|
| 79 |  S DIR(0)="FAU"_U_"1:32"
 | 
|---|
| 80 |  S DIR("A")="Enter a file name: "
 | 
|---|
| 81 |  S DIR("?",1)="A file name has the format NAME.EXTENSION, the default extension is PRD"
 | 
|---|
| 82 |  S DIR("?",2)="Therefore if you type in FILE for the file name, the host file will be"
 | 
|---|
| 83 |  S DIR("?")="  "_PATH_"FILE.PRD"
 | 
|---|
| 84 |  D ^DIR
 | 
|---|
| 85 |  I $D(DIROUT)!$D(DIRUT) Q 0
 | 
|---|
| 86 |  I $D(DTOUT)!($D(DUOUT)) Q 0
 | 
|---|
| 87 |  S FILE=Y
 | 
|---|
| 88 |  ;Add the default extension if there isn't one.
 | 
|---|
| 89 |  I FILE'["." S FILE=FILE_".PRD"
 | 
|---|
| 90 |  S HFNAME=PATH_FILE
 | 
|---|
| 91 |  S DIR(0)="YAO"
 | 
|---|
| 92 |  S DIR("A")="Will save selected entries to host file "_HFNAME_"?: "
 | 
|---|
| 93 |  S DIR("B")="Y"
 | 
|---|
| 94 |  K X,Y
 | 
|---|
| 95 |  D ^DIR
 | 
|---|
| 96 |  I $D(DIROUT)!$D(DIRUT) Q 0
 | 
|---|
| 97 |  I $D(DTOUT)!($D(DUOUT)) Q 0
 | 
|---|
| 98 |  I 'Y G GETHF
 | 
|---|
| 99 |  Q PATH_U_FILE
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 |  ;============================================
 | 
|---|
| 102 | LHF(SUCCESS,PATH,FILE) ;Load a host file containing repository entries into
 | 
|---|
| 103 |  ;the repository.
 | 
|---|
| 104 |  N CURRL,CSUM,DATEP,DONE,EXTYPE,FDA,GBL,IENROOT,IND,LINE
 | 
|---|
| 105 |  N MSG,NENTRY,NLINES,RETMP,RNAME,SITE,SOURCE,SSOURCE,US,USER,VRSN
 | 
|---|
| 106 |  K ^TMP($J,"EXHF")
 | 
|---|
| 107 |  S GBL="^TMP($J,""EXHF"",1,0)"
 | 
|---|
| 108 |  S GBL=$NA(@GBL)
 | 
|---|
| 109 |  S SUCCESS=$$FTG^%ZISH(PATH,FILE,GBL,3)
 | 
|---|
| 110 |  I 'SUCCESS Q
 | 
|---|
| 111 |  ;Make sure it has the correct format.
 | 
|---|
| 112 |  I (^TMP($J,"EXHF",1,0)'["xml")!(^TMP($J,"EXHF",2,0)'="<REMINDER_EXCHANGE_FILE_ENTRY>") D  Q
 | 
|---|
| 113 |  . W !,"This host file does not have the correct format!"
 | 
|---|
| 114 |  . H 2
 | 
|---|
| 115 |  . S SUCCESS=0
 | 
|---|
| 116 |  . K ^TMP($J,"EXHF")
 | 
|---|
| 117 |  W !,"Loading host file ",PATH,FILE
 | 
|---|
| 118 |  S RETMP="^TMP($J,""EXLHF"")"
 | 
|---|
| 119 |  S (CURRL,DONE,NENTRY,NLINES,SSOURCE)=0
 | 
|---|
| 120 |  F  Q:DONE  D
 | 
|---|
| 121 |  . S CURRL=CURRL+1
 | 
|---|
| 122 |  . I '$D(^TMP($J,"EXHF",CURRL,0)) S DONE=1 Q
 | 
|---|
| 123 |  . S LINE=^TMP($J,"EXHF",CURRL,0)
 | 
|---|
| 124 |  . S NLINES=NLINES+1
 | 
|---|
| 125 |  . S ^TMP($J,"EXLHF",NLINES,0)=LINE
 | 
|---|
| 126 |  . I LINE["<PACKAGE_VERSION>" S VRSN=$$GETTAGV^PXRMEXU3(LINE,"<PACKAGE_VERSION>")
 | 
|---|
| 127 |  . I LINE["<EXCHANGE_TYPE>" S EXTYPE=$$GETTAGV^PXRMEXU3(LINE,"<EXCHANGE_TYPE>",1)
 | 
|---|
| 128 |  . I LINE="<SOURCE>" S SSOURCE=1
 | 
|---|
| 129 |  . I SSOURCE D
 | 
|---|
| 130 |  .. I LINE["<NAME>" S RNAME=$$GETTAGV^PXRMEXU3(LINE,"<NAME>",1)
 | 
|---|
| 131 |  .. I LINE["<USER>" S USER=$$GETTAGV^PXRMEXU3(LINE,"<USER>",1)
 | 
|---|
| 132 |  .. I LINE["<SITE>" S SITE=$$GETTAGV^PXRMEXU3(LINE,"<SITE>",1)
 | 
|---|
| 133 |  .. I LINE["<DATE_PACKED>" S DATEP=$$GETTAGV^PXRMEXU3(LINE,"<DATE_PACKED>")
 | 
|---|
| 134 |  . I LINE="</SOURCE>" D
 | 
|---|
| 135 |  .. S SSOURCE=0
 | 
|---|
| 136 |  .. S SOURCE=USER_" at "_SITE
 | 
|---|
| 137 |  .;See if the entry is loaded into the temporary storage.
 | 
|---|
| 138 |  . I LINE="</REMINDER_EXCHANGE_FILE_ENTRY>" D
 | 
|---|
| 139 |  .. S NLINES=0
 | 
|---|
| 140 |  .. S NENTRY=NENTRY+1
 | 
|---|
| 141 |  ..;Make sure it has the correct format.
 | 
|---|
| 142 |  .. I (^TMP($J,"EXLHF",1,0)'["xml")!(^TMP($J,"EXLHF",2,0)'="<REMINDER_EXCHANGE_FILE_ENTRY>") D  Q
 | 
|---|
| 143 |  ... W !,"There is a problem reading this host file try a new copy of it."
 | 
|---|
| 144 |  ... S SUCCESS=0
 | 
|---|
| 145 |  ... H 2
 | 
|---|
| 146 |  ..;Make sure this entry does not already exist.
 | 
|---|
| 147 |  .. I $$REXISTS^PXRMEXIU(RNAME,DATEP) D
 | 
|---|
| 148 |  ... W !,RNAME," with a date packed of ",DATEP
 | 
|---|
| 149 |  ... W !,"is already in the Exchange File."
 | 
|---|
| 150 |  ... S SUCCESS(NENTRY)=0
 | 
|---|
| 151 |  ... H 2
 | 
|---|
| 152 |  .. E  D
 | 
|---|
| 153 |  ... K FDA,IENROOT
 | 
|---|
| 154 |  ... S FDA(811.8,"+1,",.01)=RNAME
 | 
|---|
| 155 |  ... S FDA(811.8,"+1,",.02)=SOURCE
 | 
|---|
| 156 |  ... S FDA(811.8,"+1,",.03)=DATEP
 | 
|---|
| 157 |  ... S FDA(811.8,"+1,",115)=$S($G(EXTYPE)="":"REMINDER",1:EXTYPE)
 | 
|---|
| 158 |  ... D UPDATE^PXRMEXPU(.US,.FDA,.IENROOT)
 | 
|---|
| 159 |  ... S SUCCESS(NENTRY)=US
 | 
|---|
| 160 |  ...;Create the description and save the data.
 | 
|---|
| 161 |  ... N DESCT,DESL,KEYWORDT
 | 
|---|
| 162 |  ... D DESC^PXRMEXU3(RETMP,.DESCT)
 | 
|---|
| 163 |  ... D KEYWORD^PXRMEXU3(RETMP,.KEYWORDT)
 | 
|---|
| 164 |  ... S DESL("RNAME")=RNAME,DESL("SOURCE")=SOURCE,DESL("DATEP")=DATEP
 | 
|---|
| 165 |  ... S DESL("VRSN")=VRSN
 | 
|---|
| 166 |  ... D DESC^PXRMEXU1(IENROOT(1),.DESL,"DESCT","KEYWORDT")
 | 
|---|
| 167 |  ... M ^PXD(811.8,IENROOT(1),100)=^TMP($J,"EXLHF")
 | 
|---|
| 168 |  .. K ^TMP($J,"EXLHF")
 | 
|---|
| 169 |  ;
 | 
|---|
| 170 |  ;Check the success of the entry installs.
 | 
|---|
| 171 |  S SUCCESS=1
 | 
|---|
| 172 |  S IND=""
 | 
|---|
| 173 |  F  S IND=$O(SUCCESS(IND)) Q:+IND=0  D
 | 
|---|
| 174 |  . I 'SUCCESS(IND) S SUCCESS=0 Q
 | 
|---|
| 175 |  K ^TMP($J,"EXHF"),^TMP($J,"EXLHF")
 | 
|---|
| 176 |  Q
 | 
|---|
| 177 |  ;
 | 
|---|