Single Patient Record Back-up

From VistApedia
Revision as of 06:56, 4 November 2009 by Harshal (talk | contribs)
Jump to: navigation, search

Thanks [Alan] for the program.

This program retrieves single patient record from VistA

USER>D ^%CD

Namespace: VISTA You're in namespace VISTA Default directory is c:\cachesys\mgr\vista\ VISTA>

VISTA>D ^NAM5SSN

"===========================================" VISTA SELECT PATIENT PROCEDURE: "==========================================="

Select PATIENT NAME: ONE

  1   ONE,IMAGEPATIENT        4-15-53    666061001     NO     NSC VETERAN
  2   ONE,INPATIENT        3-9-45    666000801     NO     NSC VETERAN
  3   ONE,OUTPATIENT        3-9-45    666000601     NO     NSC VETERAN
  4   ONE,PATIENT        4-7-35    666000001     YES     SC VETERAN
  5   ONEHUNDRED,INPATIENT        3-9-45    666000900     NO     NSC VETERAN

ENTER '^' TO STOP, OR CHOOSE 1-5: 4 ONE,PATIENT 4-7-35 666000001 YES SC VETERAN

Enrollment Priority: GROUP 3    Category: IN PROCESS    End Date:

"===========================================" NAME5SSN SELECTED PATIENT DATA: "==========================================="

Name: ONE,PATIENT SSN: 666000001 SEX: M DOB: APR 7,1935 ADDRESS: 1312 Ashton Place

CITY: Rowling STATE: WEST VIRGINIA ZIP: 99998 PHONE: 222-555-8235

"==========================================="

VISTA> "=======================================================================" FILE OUTPUT "======================================================================="

Name^ONE,PATIENT^SSN^666000001^SEX^M^DOB^APR 7,1935^ADDRESS^1312 Ashton Place^CITY^Rowling^STATE^WEST VIRGINIA^ZIP^99998PHONE^222-555-8235^

"========================================================================"

- Show quoted text -

NAM5SSN ; Lab 9 M1; VISTA SELECT PATIENT NAME: W NAME & SSN; AHR; 09/28/2009
Setting up a VistA environment
USER>D ^%CD
Namespace
VISTA
You're in namespace VISTA
Default directory is c
\cachesys\mgr\vista\
VISTA>S DUZ=10000000020
VISTA>D ^XUP
Setting up programmer environment
This is a TEST account.
Terminal Type set to
C-VT320
Select OPTION NAME
VISTA>
VISTA>D ^NAM5SSN
Assuming you want field #9 from File #2, the name of the field is retrieved
with the MUMPS expression
WRITE $PIECE(^DD(2,9,0),"^",1),!
observe the difference between
field number and global subscript location
Select DATA DICTIONARY UTILITY OPTION
LIST FILE ATTRIBUTES
START WITH WHAT FILE
PATIENT//
GO TO WHAT FILE
PATIENT//
Select SUB-FILE
Select LISTING FORMAT
STANDARD// CUSTOM-TAILORED
SORT BY
LABEL// NUMBER
START WITH NUMBER
FIRST//
WITHIN NUMBER, SORT BY
FIRST PRINT ATTRIBUTE
LABEL
THEN PRINT ATTRIBUTE
NUMBER
THEN PRINT ATTRIBUTE
GLOBAL SUBSCRIPT LOCATION
THEN PRINT ATTRIBUTE
Heading (S/C)
FIELD SEARCH//
DEVICE
0;80;999 TELNET
PATIENT FILE FIELD SEARCH SEP 24,2009 22
01 PAGE 1
LABEL NUMBER GLOBAL
SUBSCRIPT LOCATION
Below is the section on address. Note
Field Label, Number, and Global Subscript Location
"---------------------------------------------------------------------------­-----"
NAME .01 0;1
SEX .02 0;2
DATE OF BIRTH .03 0;3
AGE .033 ;
MARITAL STATUS .05 0;5
RACE .06 0;6
OCCUPATION .07 0;7
RELIGIOUS PREFERENCE .08 0;8
DUPLICATE STATUS .081 0;18
PATIENT MERGED TO .082 0;19
CHECK FOR DUPLICATE .083 0;20
SOCIAL SECURITY NUMBER .09 0;9
STREET ADDRESS [LINE 1] .111 .11;1
ZIP+4 .1112 .11;12
STREET ADDRESS [LINE 2] .112 .11;2
STREET ADDRESS [LINE 3] .113 .11;3
CITY .114 .11;4
STATE .115 .11;5
ZIP CODE .116 .11;6
COUNTY .117 .11;7
ADDRESS CHANGE DT/TM .118 .11;13
ADDRESS CHANGE SOURCE .119 .11;14
Thus the first line of the address is in piece 1 of subscript " .11"
Like so
$P(^DPT(patientnum,.11),"^",1)
And CITY is in piece 4
$P(^DPT(patnumber,.11),"^",4)
Addressing this bit of MUMPS code
S ZSTATE=$P(^DD(5,STATE,0),"^",1)
this says (in MUMPS-ish English)
create a local variable for this process only named ZSTATE
with the value found by reading the local variable STATE
and using it as a FileMan Field Number.
Use this FileMan Field Number to find the FileMan Field Name
by looking it up in the Data Dictionary of the File #5.
(not stated, but known by me, File #5 is the VistA STATE File)
The Field Name is found by retrieving the "Zeroth" node of the
Data Dictionary, and then processing it by removing the first piece
of the string stored in that zeroth node value, which is itself a
string of characters, using a "^" (caret character) as a delimiter.
This does NOT do what you have been saying you want to do.
If you want to look up the name of a state using the index for that
state (the internal entry number of that entry in the STATE File)
you must look in the global used for the STATE File.
If you use the internal entry number of the state as if it were a field
number, you will get the wrong information.
If you want to get the value of a particular state, you must find out the
global root for the STATE File. I happen to know that the global root
for the STATE File is "^DIC(5," I know this because I use the FileMan
inquire option to find it.
Select OPTION
INQUIRE TO FILE ENTRIES
OUTPUT FROM WHAT FILE
STATE// FILE
Select FILE
STATE
ANOTHER ONE
STANDARD CAPTIONED OUTPUT? Yes// (Yes)
Include COMPUTED fields
(N/Y/R/B): NO// BOTH Computed Fields and Record Number
(IEN)
NUMBER
5 NAME: STATE
APPLICATION GROUP
VA
DESCRIPTION
This file contains the name of the state (or outlying area) as
issued by the Department of Veterans Affairs and issued in M-1, Part I,
Appendix B. These entries should remain as distributed and should not be
edited or updated unless done via a software upgrade or under direction of VA
Central Office.
GLOBAL NAME (c)
^DIC(5, ENTRIES (c): 82
DD ACCESS (c)
# WR ACCESS (c): #
DEL ACCESS (c)
# LAYGO ACCESS (c): #
VERSION (c)
5.3 COMPILED CROSS-REFERENCES (c): NO
After I find out the global root for the STATE File, I have to get the
value for the NAME
of the STATE. I happen to know this is in the Zeroth node and the
first piece using
"^" as a delimiter.
So the code should be
SET ZSTATE=$P(^DIC(5,STATE,0),"^",1)
FROM
DGPHIST ;WASH/ERC - PURPLE HEART REQUEST HISTORY ;23 AUG 00 ;
5.3;Registration;**343**,Aug 13, 1993

EN ;Entry point N DGDFN,DGPAT,DGNAM,DGSSN N SEX,DOB,ADDRESS,CITY,STATE,ZIP,PHONE

I DTIME="" S DTIME=30 ; added 1 line; TIMEOUT 4 READ set if ^XUP not run

S DTIME=9999

W !,"===========================================" W !,"VISTA SELECT PATIENT PROCEDURE: ",! W "===========================================",!

S DGDFN=$$GETDFN() Q:DGDFN'>0

S DGNAM=$$NAME(DGDFN)

S DGSSN=$$SSN(DGDFN)

S SEX=$P($G(^DPT(DGDFN,0)),"^",2)

S DOB=$P($G(^DPT(DGDFN,0)),"^",3)

FileMan Internal to External Date
X ^DD("DD")
Internal to External Date
Introduction to Date/Time Formats
 %DT
This introduction pertains to this and the %DT calls. %DT is used to validate date/time input and convert it to VA FileMan's conventional internal format
"YYYMMDD.HHMMSS", where:
YYY is number of years since 1700 (hence always 3 digits)
MM is month number (00-12)
DD is day number (00-31)
HH is hour number (00-23)
MM is minute number (01-59)
SS is the seconds number (01-59)
This format allows for representation of imprecise dates like JULY '78 or 1978 (which would be equivalent to 2780700 and 2780000, respectively). Dates are always returned as a canonic number (no trailing zeroes after the decimal).
There are two ways to convert a date from internal YYYMMDD format to external format€�this call and DD^%DT. (This is the reverse of what %DT does.) Simply set the variable Y equal to the internal date and execute ^DD("DD").
Example
>S Y=2690720.163 X ^DD("DD") W Y
JUL 20,1969@1630
This results in Y being equal to JUL 20,1969@16
30. (No space before the 4-digit year.)
Input Variable
Y
(Required) This contains the internal date to be converted. If this has five or six decimal places, seconds will automatically be returned.
Output Variable
Y
Y is returned as the external form of the date.
See also DT^DIO2, which takes an internal date in the variable Y and writes out its external form.
March 1999 VA FileMan V. 22.0 Programmer Manual 1-5
Revised December 2007

S Y=DOB X ^DD("DD") S DOB=Y

MUMPS DATE, DOES NOT APPLY; S ZDOB=$ZDATE(DOB)

S ADDRESS=$P(^DPT(DGDFN,.11),"^",1)

S CITY=$P(^DPT(DGDFN,.11),"^",4)

S STATE=$P(^DPT(DGDFN,.11),"^",5) SET ZSTATE=$P(^DIC(5,STATE,0),"^",1)

S ZIP=$P(^DPT(DGDFN,.11),"^",6)

S PHONE=$P(^DPT(DGDFN,.13),"^",1)

cell .13;10
S CELLPHONE=$P(^DPT(DGDFN,.13),"^",10)
e-mail address .13;3
S EMAIL=$P(^DPT(DGDFN,.13),"^",3)

W !,"===========================================" W !,"NAME5SSN SELECTED PATIENT DATA: " W !,"===========================================",! W !,"Name: ",DGNAM," SSN: ",DGSSN W !,"SEX: ",SEX," DOB: ",DOB," ADDRESS: ",ADDRESS

W !,"CITY: ",CITY," STATE: ",ZSTATE," ZIP: ",ZIP W !,"PHONE: ", PHONE,! W !,"===========================================",!

To write to an external file name

set externalfilename="C:\Documents and Settings\robinson\My Documents\HOMEWORK\MUMPS\Lab 09\out_file.txt" open externalfilename:("NRW") use externalfilename

write to the selected file
write a text file with the format
Field Id Name^Field Data^

W "Name^",DGNAM,"^SSN^",DGSSN,"^" ; Line I have written W "SEX^",SEX,"^DOB^",DOB,"^ADDRESS^",ADDRESS,"^"