Changeset 175 for ccr/trunk/p/GPLACTOR.m


Ignore:
Timestamp:
Oct 3, 2008, 10:57:33 PM (16 years ago)
Author:
Sam Habiel
Message:

Refactored CCRDPT and updated GPLACTOR accordingly

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ccr/trunk/p/GPLACTOR.m

    r141 r175  
    11GPLACTOR  ; CCDCCR/GPL - CCR/CCD PROCESSING FOR ACTORS ; 7/3/08
    2  ;;0.3;CCDCCR;nopatch;noreleasedate
    3  ;Copyright 2008 WorldVistA.  Licensed under the terms of the GNU
    4  ;General Public License See attached copy of the License.
     2 ;;0.4;CCDCCR;nopatch;noreleasedate
     3 ; Copyright 2008 WorldVistA.  Licensed under the terms of the GNU
     4 ; General Public License See attached copy of the License.
     5 ;
     6 ; This program is free software; you can redistribute it and/or modify
     7 ; it under the terms of the GNU General Public License as published by
     8 ; the Free Software Foundation; either version 2 of the License, or
     9 ; (at your option) any later version.
     10 ;
     11 ; This program is distributed in the hope that it will be useful,
     12 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14 ; GNU General Public License for more details.
     15 ;
     16 ; You should have received a copy of the GNU General Public License along
     17 ; with this program; if not, write to the Free Software Foundation, Inc.,
     18 ; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
    519 ;
    6  ;This program is free software; you can redistribute it and/or modify
    7  ;it under the terms of the GNU General Public License as published by
    8  ;the Free Software Foundation; either version 2 of the License, or
    9  ;(at your option) any later version.
     20 ;  PROCESS THE ACTORS SECTION OF THE CCR
    1021 ;
    11  ;This program is distributed in the hope that it will be useful,
    12  ;but WITHOUT ANY WARRANTY; without even the implied warranty of
    13  ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    14  ;GNU General Public License for more details.
     22 ; ===Revision History===
     23 ; 0.1 Initial Writing of Skeleton--GPL
     24 ; 0.2 Patient Data Extraction--SMH
     25 ; 0.3 Information System Info Extraction--SMH
     26 ; 0.4 Patient data rouine refactored; adjustments here--SMH
    1527 ;
    16  ;You should have received a copy of the GNU General Public License along
    17  ;with this program; if not, write to the Free Software Foundation, Inc.,
    18  ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
    19     ;
    20     ;  PROCESS THE ACTORS SECTION OF THE CCR
    21     ;
    22     ; ===Revision History===
    23     ; 0.1 Initial Writing of Skeleton--GPL
    24     ; 0.2 Patient Data Extraction--SMH
    25     ; 0.3 Information System Info Extraction--SMH
    26     ;
    2728EXTRACT(IPXML,ALST,AXML) ; EXTRACT ACTOR FROM ALST INTO PROVIDED XML TEMPLATE
    28   ; IPXML is the Input Actor Template into which we  substitute values
    29   ; This is straight XML. Values to be substituted are in @@VAL@@ format.
    30   ; ALST is the actor list global generated by ACTLST^GPLCCR and has format:
    31   ; ^TMP(7542,1,"ACTORS",0)=Count
    32   ; ^TMP(7542,1,"ACTORS",n)="ActorID^ActorType^ActorIEN"
    33   ; ActorType is an enum containing either "PROVIDER" "PATIENT" "SYSTEM"
    34   ; AXML is the output arrary, to contain XML.
    35   ;
    36            N I,J,AMAP,AOID,ATYP,AIEN
    37            D CP^GPLXPATH(IPXML,AXML) ; MAKE A COPY OF ACTORS XML
    38            D REPLACE^GPLXPATH(AXML,"","//Actors") ; DELETE THE INSIDES
    39            I DEBUG W "PROCESSING ACTORS ",!
    40            F I=1:1:@ALST@(0) D  ; PROCESS ALL ACTORS IN THE LIST
    41            . I @ALST@(I)["@@" Q  ; NOT A VALID ACTOR
    42            . S AOID=$P(@ALST@(I),"^",1) ; ACTOR OBJECT ID
    43            . S ATYP=$P(@ALST@(I),"^",2) ; ACTOR TYPE
    44            . S AIEN=$P(@ALST@(I),"^",3) ; ACTOR RECORD NUMBER
    45            . I ATYP="" Q  ; NOT A VALID ACTOR
    46            . ;
    47            . I DEBUG W AOID_" "_ATYP_" "_AIEN,!
    48            . I ATYP="PATIENT" D  ; PATIENT ACTOR TYPE
    49            . . D QUERY^GPLXPATH(IPXML,"//Actors/ACTOR-PATIENT","ATMP")
    50            . . D PATIENT("ATMP",AIEN,AOID,"ATMP2")
    51            . ;
    52            . I ATYP="SYSTEM" D  ; SYSTEM ACTOR TYPE
    53            . . D QUERY^GPLXPATH(IPXML,"//Actors/ACTOR-SYSTEM","ATMP")
    54            . . D SYSTEM("ATMP",AIEN,AOID,"ATMP2")
    55            . ;
    56            . I ATYP="NOK" D  ; NOK ACTOR TYPE
    57            . . D QUERY^GPLXPATH(IPXML,"//Actors/ACTOR-NOK","ATMP")
    58            . . D NOK("ATMP",AIEN,AOID,"ATMP2")
    59            . ;
    60            . I ATYP="PROVIDER" D  ; PROVIDER ACTOR TYPE
    61            . . D QUERY^GPLXPATH(IPXML,"//Actors/ACTOR-PROVIDER","ATMP")
    62            . . D PROVIDER("ATMP",AIEN,AOID,"ATMP2")
    63            . ;
    64            . I ATYP="ORGANIZATION" D  ; PROVIDER ACTOR TYPE
    65            . . D QUERY^GPLXPATH(IPXML,"//Actors/ACTOR-ORG","ATMP")
    66            . . D ORG("ATMP",AIEN,AOID,"ATMP2")
    67            . ;
    68            . D INSINNER^GPLXPATH(AXML,"ATMP2") ; INSERT INTO ROOT
    69            ;
    70            N ACTTMP
    71            D MISSING^GPLXPATH(AXML,"ACTTMP") ; SEARCH XML FOR MISSING VARS
    72            I ACTTMP(0)>0  D  ; IF THERE ARE MISSING VARS -
    73            . ; STRINGS MARKED AS @@X@@
    74            . W "ACTORS Missing list: ",!
    75            . F I=1:1:ACTTMP(0) W ACTTMP(I),!
    76            Q
    77            ;
     29 ; IPXML is the Input Actor Template into which we  substitute values
     30 ; This is straight XML. Values to be substituted are in @@VAL@@ format.
     31 ; ALST is the actor list global generated by ACTLST^GPLCCR and has format:
     32 ; ^TMP(7542,1,"ACTORS",0)=Count
     33 ; ^TMP(7542,1,"ACTORS",n)="ActorID^ActorType^ActorIEN"
     34 ; ActorType is an enum containing either "PROVIDER" "PATIENT" "SYSTEM"
     35 ; AXML is the output arrary, to contain XML.
     36 ;
     37 N I,J,AMAP,AOID,ATYP,AIEN
     38 D CP^GPLXPATH(IPXML,AXML) ; MAKE A COPY OF ACTORS XML
     39 D REPLACE^GPLXPATH(AXML,"","//Actors") ; DELETE THE INSIDES
     40 I DEBUG W "PROCESSING ACTORS ",!
     41 F I=1:1:@ALST@(0) D  ; PROCESS ALL ACTORS IN THE LIST
     42 . I @ALST@(I)["@@" Q  ; NOT A VALID ACTOR
     43 . S AOID=$P(@ALST@(I),"^",1) ; ACTOR OBJECT ID
     44 . S ATYP=$P(@ALST@(I),"^",2) ; ACTOR TYPE
     45 . S AIEN=$P(@ALST@(I),"^",3) ; ACTOR RECORD NUMBER
     46 . I ATYP="" Q  ; NOT A VALID ACTOR
     47 . ;
     48 . I DEBUG W AOID_" "_ATYP_" "_AIEN,!
     49 . I ATYP="PATIENT" D  ; PATIENT ACTOR TYPE
     50 . . D QUERY^GPLXPATH(IPXML,"//Actors/ACTOR-PATIENT","ATMP")
     51 . . D PATIENT("ATMP",AIEN,AOID,"ATMP2")
     52 . ;
     53 . I ATYP="SYSTEM" D  ; SYSTEM ACTOR TYPE
     54 . . D QUERY^GPLXPATH(IPXML,"//Actors/ACTOR-SYSTEM","ATMP")
     55 . . D SYSTEM("ATMP",AIEN,AOID,"ATMP2")
     56 . ;
     57 . I ATYP="NOK" D  ; NOK ACTOR TYPE
     58 . . D QUERY^GPLXPATH(IPXML,"//Actors/ACTOR-NOK","ATMP")
     59 . . D NOK("ATMP",AIEN,AOID,"ATMP2")
     60 . ;
     61 . I ATYP="PROVIDER" D  ; PROVIDER ACTOR TYPE
     62 . . D QUERY^GPLXPATH(IPXML,"//Actors/ACTOR-PROVIDER","ATMP")
     63 . . D PROVIDER("ATMP",AIEN,AOID,"ATMP2")
     64 . ;
     65 . I ATYP="ORGANIZATION" D  ; PROVIDER ACTOR TYPE
     66 . . D QUERY^GPLXPATH(IPXML,"//Actors/ACTOR-ORG","ATMP")
     67 . . D ORG("ATMP",AIEN,AOID,"ATMP2")
     68 . ;
     69 . D INSINNER^GPLXPATH(AXML,"ATMP2") ; INSERT INTO ROOT
     70 ;
     71 N ACTTMP
     72 D MISSING^GPLXPATH(AXML,"ACTTMP") ; SEARCH XML FOR MISSING VARS
     73 I ACTTMP(0)>0  D  ; IF THERE ARE MISSING VARS -
     74 . ; STRINGS MARKED AS @@X@@
     75 . W "ACTORS Missing list: ",!
     76 . F I=1:1:ACTTMP(0) W ACTTMP(I),!
     77 Q
     78 ;
    7879PATIENT(INXML,AIEN,AOID,OUTXML) ; PROCESS A PATIENT ACTOR
    79      ;
    80      I DEBUG W "PROCESSING ACTOR PATIENT ",AIEN,!
    81      N AMAP,ZX
    82      S AMAP=$NA(^TMP($J,"AMAP"))
    83      K @AMAP
    84      D INIT^CCRDPT(AIEN)
    85      S @AMAP@("ACTOROBJECTID")=AOID ;ACTOR OBJECT ID
    86      S @AMAP@("ACTORGIVENNAME")=$$GIVEN^CCRDPT
    87      S @AMAP@("ACTORMIDDLENAME")=$$MIDDLE^CCRDPT
    88      S @AMAP@("ACTORFAMILYNAME")=$$FAMILY^CCRDPT
    89      S @AMAP@("ACTORDATEOFBIRTH")=$$DOB^CCRDPT
    90      S @AMAP@("ACTORGENDER")=$$GENDER^CCRDPT
    91      S @AMAP@("ACTORSSN")=""
    92      S @AMAP@("ACTORSSNTEXT")=""
    93      S @AMAP@("ACTORSSNSOURCEID")=""
    94      S ZX=$$SSN^CCRDPT
    95      I ZX'="" D  ; IF THERE IS A SSN IN THE RECORD
    96      . S @AMAP@("ACTORSSN")=ZX
    97      . S @AMAP@("ACTORSSNTEXT")="SSN"
    98      . S @AMAP@("ACTORSSNSOURCEID")=AOID
    99      S @AMAP@("ACTORADDRESSTYPE")=$$ADDRTYPE^CCRDPT
    100      S @AMAP@("ACTORADDRESSLINE1")=$$ADDR1^CCRDPT
    101      S @AMAP@("ACTORADDRESSLINE2")=$$ADDR2^CCRDPT
    102      S @AMAP@("ACTORADDRESSCITY")=$$CITY^CCRDPT
    103      S @AMAP@("ACTORADDRESSSTATE")=$$STATE^CCRDPT
    104      S @AMAP@("ACTORADDRESSZIPCODE")=$$ZIP^CCRDPT
    105      S @AMAP@("ACTORRESTEL")=""
    106      S @AMAP@("ACTORRESTELTEXT")=""
    107      S ZX=$$RESTEL^CCRDPT
    108      I ZX'="" D  ; IF THERE IS A RESIDENT PHONE IN THE RECORD
    109      . S @AMAP@("ACTORRESTEL")=ZX
    110      . S @AMAP@("ACTORRESTELTEXT")="Residential Telephone"
    111      S @AMAP@("ACTORWORKTEL")=""
    112      S @AMAP@("ACTORWORKTELTEXT")=""
    113      S ZX=$$WORKTEL^CCRDPT
    114      I ZX'="" D  ; IF THERE IS A RESIDENT PHONE IN THE RECORD
    115      . S @AMAP@("ACTORWORKTEL")=ZX
    116      . S @AMAP@("ACTORWORKTELTEXT")="Work Telephone"
    117      S @AMAP@("ACTORCELLTEL")=""
    118      S @AMAP@("ACTORCELLTELTEXT")=""
    119      S ZX=$$CELLTEL^CCRDPT
    120      I ZX'="" D  ; IF THERE IS A CELL PHONE IN THE RECORD
    121      . S @AMAP@("ACTORCELLTEL")=ZX
    122      . S @AMAP@("ACTORCELLTELTEXT")="Cell Phone"
    123      S @AMAP@("ACTOREMAIL")=$$EMAIL^CCRDPT
    124      S @AMAP@("ACTORADDRESSSOURCEID")=AOID
    125      S @AMAP@("ACTORIEN")=AIEN
    126      S @AMAP@("ACTORSUFFIXNAME")="" ; DOES VISTA STORE THE SUFFIX
    127      S @AMAP@("ACTORSOURCEID")="ACTORSYSTEM_1" ; THE SYSTEM IS THE SOURCE
    128          D DESTROY^CCRDPT
    129      D MAP^GPLXPATH(INXML,AMAP,OUTXML) ; MAP THE VARIABLE
    130      Q
    131      ;
     80 I DEBUG W "PROCESSING ACTOR PATIENT ",AIEN,!
     81 N AMAP,ZX
     82 S AMAP=$NA(^TMP($J,"AMAP"))
     83 K @AMAP
     84 S @AMAP@("ACTOROBJECTID")=AOID ;ACTOR OBJECT ID
     85 S @AMAP@("ACTORGIVENNAME")=$$GIVEN^CCRDPT(AIEN)
     86 S @AMAP@("ACTORMIDDLENAME")=$$MIDDLE^CCRDPT(AIEN)
     87 S @AMAP@("ACTORFAMILYNAME")=$$FAMILY^CCRDPT(AIEN)
     88 S @AMAP@("ACTORDATEOFBIRTH")=$$DOB^CCRDPT(AIEN)
     89 S @AMAP@("ACTORGENDER")=$$GENDER^CCRDPT(AIEN)
     90 S @AMAP@("ACTORSSN")=""
     91 S @AMAP@("ACTORSSNTEXT")=""
     92 S @AMAP@("ACTORSSNSOURCEID")=""
     93 S ZX=$$SSN^CCRDPT(AIEN)
     94 I ZX'="" D  ; IF THERE IS A SSN IN THE RECORD
     95 . S @AMAP@("ACTORSSN")=ZX
     96 . S @AMAP@("ACTORSSNTEXT")="SSN"
     97 . S @AMAP@("ACTORSSNSOURCEID")=AOID
     98 S @AMAP@("ACTORADDRESSTYPE")=$$ADDRTYPE^CCRDPT(AIEN)
     99 S @AMAP@("ACTORADDRESSLINE1")=$$ADDR1^CCRDPT(AIEN)
     100 S @AMAP@("ACTORADDRESSLINE2")=$$ADDR2^CCRDPT(AIEN)
     101 S @AMAP@("ACTORADDRESSCITY")=$$CITY^CCRDPT(AIEN)
     102 S @AMAP@("ACTORADDRESSSTATE")=$$STATE^CCRDPT(AIEN)
     103 S @AMAP@("ACTORADDRESSZIPCODE")=$$ZIP^CCRDPT(AIEN)
     104 S @AMAP@("ACTORRESTEL")=""
     105 S @AMAP@("ACTORRESTELTEXT")=""
     106 S ZX=$$RESTEL^CCRDPT(AIEN)
     107 I ZX'="" D  ; IF THERE IS A RESIDENT PHONE IN THE RECORD
     108 . S @AMAP@("ACTORRESTEL")=ZX
     109 . S @AMAP@("ACTORRESTELTEXT")="Residential Telephone"
     110 S @AMAP@("ACTORWORKTEL")=""
     111 S @AMAP@("ACTORWORKTELTEXT")=""
     112 S ZX=$$WORKTEL^CCRDPT(AIEN)
     113 I ZX'="" D  ; IF THERE IS A RESIDENT PHONE IN THE RECORD
     114 . S @AMAP@("ACTORWORKTEL")=ZX
     115 . S @AMAP@("ACTORWORKTELTEXT")="Work Telephone"
     116 S @AMAP@("ACTORCELLTEL")=""
     117 S @AMAP@("ACTORCELLTELTEXT")=""
     118 S ZX=$$CELLTEL^CCRDPT(AIEN)
     119 I ZX'="" D  ; IF THERE IS A CELL PHONE IN THE RECORD
     120 . S @AMAP@("ACTORCELLTEL")=ZX
     121 . S @AMAP@("ACTORCELLTELTEXT")="Cell Phone"
     122 S @AMAP@("ACTOREMAIL")=$$EMAIL^CCRDPT(AIEN)
     123 S @AMAP@("ACTORADDRESSSOURCEID")=AOID
     124 S @AMAP@("ACTORIEN")=AIEN
     125 S @AMAP@("ACTORSUFFIXNAME")="" ; DOES VISTA STORE THE SUFFIX
     126 S @AMAP@("ACTORSOURCEID")="ACTORSYSTEM_1" ; THE SYSTEM IS THE SOURCE
     127 D MAP^GPLXPATH(INXML,AMAP,OUTXML) ; MAP THE VARIABLE
     128 Q
     129 ;
    132130SYSTEM(INXML,AIEN,AOID,OUTXML) ; PROCESS A SYSTEM ACTOR
    133131     ;
Note: See TracChangeset for help on using the changeset viewer.