| 1 | MPIFAG1 ; EHR/DAOU/WCJ - ENTER HEALTH RECORD NUMBER ;1/27/07  21:26
 | 
|---|
| 2 |  ;;1.0; MASTER PATIENT INDEX VISTA ;**40**;30 Apr 99;Build 13
 | 
|---|
| 3 |  ; Copyright (C) 2007 WorldVistA
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ; This program is free software; you can redistribute it and/or modify
 | 
|---|
| 6 |  ; it under the terms of the GNU General Public License as published by
 | 
|---|
| 7 |  ; the Free Software Foundation; either version 2 of the License, or
 | 
|---|
| 8 |  ; (at your option) any later version.
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ; This program is distributed in the hope that it will be useful,
 | 
|---|
| 11 |  ; but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
|---|
| 12 |  ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
|---|
| 13 |  ; GNU General Public License for more details.
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ; You should have received a copy of the GNU General Public License
 | 
|---|
| 16 |  ; along with this program; if not, write to the Free Software
 | 
|---|
| 17 |  ; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 | 
|---|
| 18 |  ;'Modified' MAS Patient Look-up Check Cross-References June 1987
 | 
|---|
| 19 |  ;;;EHR PATIENT REGISTRATION;;
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  ;This routine was originally from IHS routine AG1.
 | 
|---|
| 22 |  ;It was modified so that it could be called from anywhere as long as
 | 
|---|
| 23 |  ;DFN - patient
 | 
|---|
| 24 |  ;DUZ(2) - location
 | 
|---|
| 25 |  ;are defined.
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  ;It was specifcally written so that it could be called within a DR string
 | 
|---|
| 28 |  ;It is used to modify file 9000001 while in file 2.
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 | HRN ;
 | 
|---|
| 31 |  Q:'$G(DUZ(2))
 | 
|---|
| 32 |  Q:'$G(DFN)
 | 
|---|
| 33 |  N IENS,OUT,AG,SEQ,LIEN
 | 
|---|
| 34 |  N DTOUT,DFOUT,DLOUT,DUOUT,DQOUT,Y
 | 
|---|
| 35 |  N FDA,FDAIEN,XXX,PATID
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 |  ; Find HRN for this DFN/location
 | 
|---|
| 38 |  S IENS=","_DFN_","
 | 
|---|
| 39 |  D FIND^DIC(9000001.41,IENS,"@;.01;.02;","X",DUZ(2),,,,,"OUT")
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  ; Check if it's a new location 
 | 
|---|
| 42 |  S SEQ=$O(OUT("DILIST","ID",0))
 | 
|---|
| 43 |  I SEQ S LIEN=$O(OUT("DILIST",2,SEQ)) ;(No point to this!)
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  ; prompt user for HRN
 | 
|---|
| 46 | L1 ;
 | 
|---|
| 47 |  I SEQ S (AG("CH"),AG("OCH"))=OUT("DILIST","ID",SEQ,.02)
 | 
|---|
| 48 |  I 'SEQ S (AG("CH"),AG("OCH"))=$$GENHRN()
 | 
|---|
| 49 |  S DIR(0)="9000001.41,.02",DIR("B")=AG("CH")
 | 
|---|
| 50 |  D ^DIR
 | 
|---|
| 51 |  I 'SEQ,$D(DTOUT) S Y=$G(AG("CH")) K DTOUT
 | 
|---|
| 52 |  I $G(AG("CH"))]"",$D(DTOUT) Q
 | 
|---|
| 53 |  I $D(DUOUT) Q  ;W !,"EXIT NOT ALLOWED ??"
 | 
|---|
| 54 |  ; See if anyone is using that one
 | 
|---|
| 55 |  S AG("CH")=+Y
 | 
|---|
| 56 |  G L3:'$D(^AUPNPAT("D",AG("CH")))
 | 
|---|
| 57 |  Q:$D(^AUPNPAT("D",AG("CH"),$G(DFN)))
 | 
|---|
| 58 |  S AG("D")=0
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  ; someone is using this one already, see if it's the same location
 | 
|---|
| 61 | L2 ;
 | 
|---|
| 62 |  S AG("D")=$O(^AUPNPAT("D",AG("CH"),AG("D")))
 | 
|---|
| 63 |  G L3:AG("D")=""
 | 
|---|
| 64 |  S AG("DD")=0
 | 
|---|
| 65 |  S AG("DD")=$O(^AUPNPAT("D",AG("CH"),AG("D"),AG("DD")))
 | 
|---|
| 66 |  G L2:AG("DD")'=DUZ(2)
 | 
|---|
| 67 |  W !,*7,AG("CH")," is already assigned to ",$P(^DPT(AG("D"),0),U)
 | 
|---|
| 68 |  G L1
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 |  ; let's do it.  unique for this Location
 | 
|---|
| 71 | L3 ;
 | 
|---|
| 72 |  S IENS="?+1,"_DFN_","
 | 
|---|
| 73 |  S FDAIEN(1)=DUZ(2)
 | 
|---|
| 74 |  S XXX="FDA"
 | 
|---|
| 75 |  S FDA(9000001.41,IENS,.01)=DUZ(2)
 | 
|---|
| 76 |  S FDA(9000001.41,IENS,.02)=AG("CH")
 | 
|---|
| 77 |  D UPDATE^DIE("",XXX,"FDAIEN","RET")
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 | CHECK(Y) ;
 | 
|---|
| 82 |  N X,DA S DA(1)=+$G(DFN),DA=DUZ(2),X=Y
 | 
|---|
| 83 |  X $P(^DD(9000001.41,.02,0),U,5,99) Q $D(X)>0
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 | GENHRN() ;
 | 
|---|
| 87 |  N HRN
 | 
|---|
| 88 |  S HRN=$O(^AUPNPAT("D",999999999),-1) I HRN'?.N S HRN="" G Q
 | 
|---|
| 89 |  S HRN=HRN+1
 | 
|---|
| 90 |  I '$$CHECK(HRN) S HRN="" G Q
 | 
|---|
| 91 |  F  Q:'$D(^AUPNPAT("D",HRN))  S HRN=HRN+1 I '$$CHECK(HRN) S HRN="" G Q
 | 
|---|
| 92 | Q Q HRN
 | 
|---|